-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathrun_demo.sh
More file actions
executable file
·126 lines (107 loc) · 4.39 KB
/
Copy pathrun_demo.sh
File metadata and controls
executable file
·126 lines (107 loc) · 4.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/bin/bash
# ICMP Tunneling Lab - Demo interactiva
# Autor: 3dik (@3diklab)
# Colores
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
DIM='\033[2m'
NC='\033[0m'
clear
echo ""
echo -e "${CYAN}╔════════════════════════════════════════════════════╗${NC}"
echo -e "${CYAN}║${NC} ICMP TUNNELING - Demo Interactiva ${CYAN}║${NC}"
echo -e "${CYAN}║${NC} @3diklab ${CYAN}║${NC}"
echo -e "${CYAN}╚════════════════════════════════════════════════════╝${NC}"
echo ""
# Verificar que el lab está corriendo
if ! docker ps | grep -q servidor; then
echo -e "${RED}[!] El lab no está corriendo${NC}"
echo " Ejecuta primero: ./setup_lab.sh"
exit 1
fi
echo -e "${YELLOW}━━━ PASO 1: Verificar bloqueo ━━━${NC}"
echo ""
echo -e "${DIM}El cliente tiene TCP/UDP bloqueado. Solo pasa ICMP.${NC}"
echo ""
echo -e "${CYAN}[CLIENTE]${NC} Intentando curl google.com..."
timeout 5 docker exec cliente curl -s --connect-timeout 3 google.com 2>&1 || true
echo ""
echo -e "${RED}[✗] Bloqueado${NC} - TCP no pasa"
echo ""
echo -e "${CYAN}[CLIENTE]${NC} Intentando ping al servidor..."
docker exec cliente ping -c 2 172.20.0.10
echo ""
echo -e "${GREEN}[✓] Funciona${NC} - ICMP pasa"
echo ""
read -p "Presiona ENTER para continuar..."
echo ""
echo -e "${YELLOW}━━━ PASO 2: Levantar túnel ICMP ━━━${NC}"
echo ""
echo -e "${DIM}Vamos a crear un túnel: todo el tráfico viajará dentro de pings.${NC}"
echo ""
# Iniciar servidor hans en background
echo -e "${CYAN}[SERVIDOR]${NC} Iniciando hans en modo servidor..."
docker exec -d servidor hans -s 10.0.0.1 -p secreto
sleep 2
echo -e "${GREEN}[✓]${NC} Servidor hans escuchando"
echo ""
# Iniciar cliente hans
echo -e "${CYAN}[CLIENTE]${NC} Conectando al túnel..."
docker exec -d cliente hans -c 172.20.0.10 -p secreto
sleep 3
echo -e "${GREEN}[✓]${NC} Cliente conectado"
echo ""
# Verificar interfaz tun0
echo -e "${CYAN}[CLIENTE]${NC} Verificando interfaz túnel..."
docker exec cliente ip addr show tun0 2>/dev/null | grep inet || echo " Esperando interfaz..."
sleep 1
echo ""
# Configurar ruta por el túnel (borrar default vieja primero)
echo -e "${CYAN}[CLIENTE]${NC} Configurando ruta por el túnel..."
docker exec cliente ip route del default 2>/dev/null || true
docker exec cliente ip route add default via 10.0.0.1
echo -e "${GREEN}[✓]${NC} Ruta configurada"
echo ""
read -p "Presiona ENTER para la prueba final..."
echo ""
echo -e "${YELLOW}━━━ PASO 3: Prueba - Navegar por ICMP ━━━${NC}"
echo ""
echo -e "${CYAN}[CLIENTE]${NC} Intentando curl example.com (a través del túnel)..."
echo ""
RESULT=$(docker exec cliente curl -s --connect-timeout 15 example.com)
echo "$RESULT" | head -5
echo ""
if [ -n "$RESULT" ]; then
echo -e "${GREEN}[✓] FUNCIONA${NC} - Navegando por internet usando solo pings"
else
echo -e "${RED}[✗] ERROR${NC} - No se pudo conectar"
fi
echo ""
echo -e "${YELLOW}━━━ PASO 4: ¿Qué ve el firewall? ━━━${NC}"
echo ""
echo -e "${DIM}Capturando tráfico mientras navegamos...${NC}"
echo ""
# Capturar pings MIENTRAS hacemos curl (en paralelo)
echo -e "${CYAN}[FIREWALL]${NC} tcpdump icmp (capturando 10 paquetes)..."
docker exec servidor timeout 5 tcpdump -i eth0 -c 10 icmp 2>/dev/null &
TCPDUMP_PID=$!
sleep 0.5
docker exec cliente curl -s --connect-timeout 10 example.com > /dev/null
wait $TCPDUMP_PID 2>/dev/null
echo ""
echo -e "${DIM}Los paquetes >64 bytes contienen tu tráfico HTTP encapsulado${NC}"
echo ""
echo -e "${CYAN}════════════════════════════════════════════════════${NC}"
echo -e "${GREEN}[✓] DEMO COMPLETADA${NC}"
echo ""
echo -e " ${YELLOW}Resumen:${NC}"
echo -e " - TCP/UDP bloqueados en el cliente"
echo -e " - Creamos túnel ICMP con hans"
echo -e " - Todo el tráfico viaja dentro de pings"
echo -e " - El firewall solo ve pings normales"
echo ""
echo -e " ${YELLOW}Limpieza:${NC} ./cleanup.sh"
echo ""
echo -e "${CYAN}════════════════════════════════════════════════════${NC}"