mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-04 00:37:04 -08:00
Translated ['.github/pull_request_template.md', 'src/README.md', 'src/pe
This commit is contained in:
@@ -4,16 +4,16 @@
|
||||
|
||||
## Introduction
|
||||
|
||||
Kubernetesでは、デフォルトの動作により、**同じノードに存在するすべてのコンテナ間の接続が確立される**ことが許可されています。これは、名前空間の違いに関係なく適用されます。このような接続は、**Layer 2**(イーサネット)まで拡張されます。したがって、この構成はシステムを脆弱性にさらす可能性があります。具体的には、**悪意のあるコンテナ**が同じノードにある他のコンテナに対して**ARPスプーフィング攻撃**を実行する可能性を開きます。この攻撃中、悪意のあるコンテナは、他のコンテナ向けのネットワークトラフィックを欺いて傍受または変更することができます。
|
||||
Kubernetesでは、デフォルトの動作により、**同じノードに存在するすべてのコンテナ間での接続が許可される**ことが観察されています。これは、名前空間の区別に関係なく適用されます。このような接続は、**Layer 2**(イーサネット)まで拡張されます。したがって、この構成はシステムを脆弱性にさらす可能性があります。具体的には、**悪意のあるコンテナ**が同じノードにある他のコンテナに対して**ARPスプーフィング攻撃**を実行する可能性を開きます。この攻撃中、悪意のあるコンテナは、他のコンテナに向けられたネットワークトラフィックを欺いて傍受または変更することができます。
|
||||
|
||||
ARPスプーフィング攻撃は、**攻撃者が偽のARP**(アドレス解決プロトコル)メッセージをローカルエリアネットワーク上で送信することを含みます。これにより、**攻撃者のMACアドレスがネットワーク上の正当なコンピュータまたはサーバーのIPアドレスにリンクされます**。このような攻撃が成功裏に実行された後、攻撃者はデータを傍受、変更、または停止することさえできます。この攻撃はOSIモデルのLayer 2で実行されるため、Kubernetesにおけるこのレイヤーでのデフォルトの接続性はセキュリティ上の懸念を引き起こします。
|
||||
ARPスプーフィング攻撃は、**攻撃者がローカルエリアネットワーク上で偽のARP**(アドレス解決プロトコル)メッセージを送信することを含みます。これにより、**攻撃者のMACアドレスがネットワーク上の正当なコンピュータまたはサーバーのIPアドレスにリンクされます**。このような攻撃が成功裏に実行された後、攻撃者はデータを傍受、変更、または停止することさえできます。この攻撃はOSIモデルのLayer 2で実行されるため、Kubernetesにおけるこのレイヤーでのデフォルトの接続性はセキュリティ上の懸念を引き起こします。
|
||||
|
||||
シナリオでは、4台のマシンが作成されます:
|
||||
|
||||
- ubuntu-pe: ノードに逃げてメトリクスを確認するための特権マシン(攻撃には必要ありません)
|
||||
- **ubuntu-attack**: **悪意のある**コンテナ(デフォルトの名前空間)
|
||||
- **ubuntu-victim**: **被害者**マシン(kube-system名前空間)
|
||||
- **mysql**: **被害者**マシン(デフォルトの名前空間)
|
||||
- **ubuntu-attack**: **悪意のある**コンテナ、デフォルトの名前空間に存在
|
||||
- **ubuntu-victim**: **被害者**マシン、kube-system名前空間に存在
|
||||
- **mysql**: **被害者**マシン、デフォルトの名前空間に存在
|
||||
```yaml
|
||||
echo 'apiVersion: v1
|
||||
kind: Pod
|
||||
@@ -107,7 +107,7 @@ kubectl exec -it mysql bash -- bash -c "apt update; apt install -y net-tools; ba
|
||||
この事実は、デフォルトでは、**同じノードで実行されているすべてのポッド**が、**同じノード内の他のポッドと通信**できることを意味します(名前空間に関係なく)イーサネットレベル(レイヤー2)で。
|
||||
|
||||
> [!WARNING]
|
||||
> したがって、同じノード内のポッド間でA**RPスプーフィング攻撃を実行することが可能です。**
|
||||
> したがって、**同じノード内のポッド間でARPスプーフィング攻撃を実行することが可能です。**
|
||||
|
||||
### DNS
|
||||
|
||||
@@ -136,27 +136,27 @@ Port: metrics 9153/TCP
|
||||
TargetPort: 9153/TCP
|
||||
Endpoints: 172.17.0.2:9153
|
||||
```
|
||||
前の情報では、興味深いことが見られます。**サービスのIP**は**10.96.0.10**ですが、**サービスを実行しているポッドのIP**は**172.17.0.2**です。
|
||||
前の情報では興味深いことが見られます。**サービスのIP**は**10.96.0.10**ですが、**サービスを実行しているポッドのIP**は**172.17.0.2**です。
|
||||
|
||||
任意のポッド内でDNSアドレスを確認すると、次のようなものが見つかります:
|
||||
任意のポッド内でDNSアドレスを確認すると、次のようなものが見つかります:
|
||||
```
|
||||
cat /etc/resolv.conf
|
||||
nameserver 10.96.0.10
|
||||
```
|
||||
しかし、ポッドはそのアドレスに到達する方法を**知らない**ため、この場合の**ポッド範囲**は172.17.0.10/26です。
|
||||
しかし、ポッドはそのアドレスに到達する方法を**知らない**ため、この場合のポッド範囲は172.17.0.10/26です。
|
||||
|
||||
したがって、ポッドは**アドレス10.96.0.10にDNSリクエストを送信**し、cbr0によって**172.17.0.2に変換**されます。
|
||||
|
||||
> [!WARNING]
|
||||
> これは、ポッドの**DNSリクエスト**が**常に**ブリッジに行き、**サービスIPをエンドポイントIPに変換**することを意味します。たとえDNSサーバーがポッドと同じサブネットワークにあってもです。
|
||||
>
|
||||
> これを知っており、**ARP攻撃が可能であることを知っている**場合、ノード内の**ポッド**は**サブネットワーク内の各ポッド**と**ブリッジ**間の**トラフィックを傍受**し、DNSサーバーからの**DNS応答を変更**することができます(**DNSスプーフィング**)。
|
||||
> これを知っており、**ARP攻撃が可能であることを知っている**場合、ノード内の**ポッド**は**サブネットワーク内の各ポッド**と**ブリッジ**間の**トラフィックを傍受**し、DNSサーバーからの**DNSレスポンスを変更**することができます(**DNSスプーフィング**)。
|
||||
>
|
||||
> さらに、**DNSサーバー**が**攻撃者と同じノードにある**場合、攻撃者はクラスター内の任意のポッドの**すべてのDNSリクエストを傍受**し(DNSサーバーとブリッジの間)、応答を変更することができます。
|
||||
> さらに、**DNSサーバー**が**攻撃者と同じノードにある**場合、攻撃者はクラスター内の任意のポッドの**すべてのDNSリクエストを傍受**し(DNSサーバーとブリッジの間)、レスポンスを変更することができます。
|
||||
|
||||
## 同じノード内のポッドにおけるARPスプーフィング
|
||||
|
||||
私たちの目標は、**ubuntu-victimからmysqlへの通信を少なくとも盗むこと**です。
|
||||
私たちの目標は、**ubuntu-victimからmysqlへの通信を少なくとも盗む**ことです。
|
||||
|
||||
### Scapy
|
||||
```bash
|
||||
@@ -233,7 +233,7 @@ arpspoof -t 172.17.0.9 172.17.0.10
|
||||
```
|
||||
## DNS Spoofing
|
||||
|
||||
既に述べたように、もしあなたが**DNSサーバーポッドと同じノードのポッドを侵害**した場合、**ARPSpoofing**を使って**ブリッジとDNS**ポッドの**MitM**を行い、**すべてのDNSレスポンスを変更**することができます。
|
||||
既に述べたように、もしあなたが**DNSサーバーポッドと同じノードのポッドを侵害**した場合、**MitM**を使用して**ARPSpoofing**で**ブリッジとDNS**ポッドを介して**すべてのDNSレスポンスを変更**することができます。
|
||||
|
||||
あなたには、これをテストするための素晴らしい**ツール**と**チュートリアル**があります [**https://github.com/danielsagi/kube-dnsspoof/**](https://github.com/danielsagi/kube-dnsspoof/)
|
||||
|
||||
@@ -242,7 +242,7 @@ arpspoof -t 172.17.0.9 172.17.0.10
|
||||
cat hosts
|
||||
google.com. 1.1.1.1
|
||||
```
|
||||
攻撃をubuntu-victimマシンに対して実行します:
|
||||
ubuntu-victimマシンに対して攻撃を実行します:
|
||||
```
|
||||
python3 exploit.py --direct 172.17.0.10
|
||||
[*] starting attack on direct mode to pod 172.17.0.10
|
||||
@@ -260,15 +260,15 @@ dig google.com
|
||||
google.com. 1 IN A 1.1.1.1
|
||||
```
|
||||
> [!NOTE]
|
||||
> 自分のDNSスプーフィングスクリプトを作成しようとする場合、**DNS応答を変更するだけでは**、**機能しません**。なぜなら、**応答**には**悪意のある** **ポッド**の**src IP**が含まれ、**受け入れられない**からです。\
|
||||
> 自分のDNSスプーフィングスクリプトを作成しようとする場合、**DNS応答を変更するだけでは**、**機能しません**。なぜなら、**応答**には**悪意のある** **ポッド**のIPアドレスである**src IP**が含まれ、**受け入れられない**からです。\
|
||||
> 被害者がDNSリクエストを送信する**DNS**の**src IP**を持つ**新しいDNSパケット**を生成する必要があります(これは172.16.0.2のようなもので、10.96.0.10ではありません。これはK8s DNSサービスのIPであり、DNSサーバーのIPではありません。詳細はイントロダクションで説明します)。
|
||||
|
||||
## Capturing Traffic
|
||||
## トラフィックのキャプチャ
|
||||
|
||||
ツール[**Mizu**](https://github.com/up9inc/mizu)は、Kubernetes用のシンプルでありながら強力なAPI **トラフィックビューワー**で、マイクロサービス間の**すべてのAPI通信**を**表示**し、デバッグや回帰のトラブルシューティングを支援します。\
|
||||
選択したポッドにエージェントをインストールし、そのトラフィック情報を収集してウェブサーバーに表示します。ただし、これには高いK8s権限が必要です(あまりステルスではありません)。
|
||||
|
||||
## References
|
||||
## 参考文献
|
||||
|
||||
- [https://www.cyberark.com/resources/threat-research-blog/attacking-kubernetes-clusters-through-your-network-plumbing-part-1](https://www.cyberark.com/resources/threat-research-blog/attacking-kubernetes-clusters-through-your-network-plumbing-part-1)
|
||||
- [https://blog.aquasec.com/dns-spoofing-kubernetes-clusters](https://blog.aquasec.com/dns-spoofing-kubernetes-clusters)
|
||||
|
||||
Reference in New Issue
Block a user