# 🏦 SecureBank Demo - MiTM Napadalna Aplikacija Preprosta Go spletna aplikacija za demonstracijo razlike med HTTP in HTTPS pri prenosu občutljivih podatkov (MiTM napadi). ## 🎯 Namen aplikacije Ta aplikacija je namenjena **izobraževalnim** namenom za prikaz: - Kako so podatki vidni v HTTP prometu - Kako HTTPS ščiti podatke pred prisluškovalci - Praktična uporaba Wireshark-a za analizo mrežnega prometa ## 🚀 Hitri zagon ### 1. Zaženite Go aplikacijo ```bash go run main.go -port 8081 ``` ### 2. Testiraj HTTP (nezaščiten) Odprite brskalnik: `http://localhost:8081` ### 3. Zagon s Caddy za HTTPS ```bash # Namestite Caddy (če še ni nameščen) # Na Ubuntu/Debian: sudo apt install caddy # Na macOS: brew install caddy # Zaženite Caddy z našo konfiguracijo caddy run --config Caddyfile # Aplikacija bo dostopna na: # HTTP: http://localhost:8080 (preko Caddy proxy) # HTTPS: https://localhost:8443 (z avtomatskimi SSL certifikati) ``` ## 🔍 MiTM Demo navodila ### Korak 1: HTTP analiza 1. **Zaženite Wireshark** ```bash sudo wireshark ``` 2. **Nastavite filtre:** - Vmesnik: `Loopback: lo` - Filter: `http and tcp.port == 8080` 3. **Testirajte prenose:** - Prijavite se z: `admin` / `admin123` - Opazujte pakete v Wireshark-u 4. **Poiščite POST request:** - Desni klik na paket → Follow → HTTP Stream - Videli boste geslo v običajnem besedilu! ### Korak 2: HTTPS primerjava 1. **Nastavite Wireshark filter:** ``` tcp.port == 8443 ``` 2. **Dostopajte do HTTPS verzije:** ``` https://localhost:8443 ``` 3. **Primerjajte pakete:** - Videli boste samo TLS handshake - Aplikacijski podatki so šifrirani - Gesla niso več vidna! ## 👤 Demo uporabniki | Uporabniško ime | Geslo | Opis | |-----------------|----------|------| | `admin` | `admin123` | Administrator | | `janez` | `geslo123` | Običajen uporabnik | ## 📂 Struktura projekta ``` server/ ├── main.go # Glavna Go aplikacija ├── Caddyfile # Caddy konfiguracija ├── templates/ # HTML predloge │ ├── home.html │ ├── login.html │ ├── register.html │ └── dashboard.html └── static/ └── style.css # CSS styling ``` ## 🛠️ Comandni argumenti ```bash go run main.go -port 8081 # Nastavi drug port ``` ## ⚠️ Varnostna opozorila **Ta aplikacija je namenoma NEZAŠČITENA in vsebuje varnostne luknje:** - ❌ Gesla se shranjujejo v običajnem besedilu - ❌ Ni session managementa - ❌ Ni CSRF zaščite - ❌ Ni proper input validacije - ❌ Ni rate limiting-a **NE UPORABLJAJTE V PRODUKCIJI!** To je samo demonstracijska aplikacija. ## 🎓 Za prezetnje ### Ključne točke za predstavo: 1. **HTTP telovi** - pokažite kako so gesla vidna 2. **TLS Encryption** - razložite razliko v Wireshark-u 3. **Headers analiza** - pokažite HTTP vs HTTPS headers 4. **Certificate validation** - pokažite browser warnings za self-signed certs ### Dodatni filtri za Wireshark: ``` # Samo POST requesti http.request.method == POST # Form data urlencoded-form # TLS paketi tls ``` ## 🔧 Troubleshooting **Problem:** Caddy se ne zažene **Rešitev:** Preverite če port 8080/8443 ni že zaseden: ```bash lsof -i :8080 lsof -i :8443 ``` **Problem:** Browser SSL warning **Rešitev:** To je normalno za self-signed certifikate. Kliknite "Advanced" → "Proceed to localhost" **Problem:** Wireshark ne vidi paketov **Rešitev:** Poskusite filter `tcp.port == 8081` (direct Go app port) ## 📚 Dodatni viri - [Caddy dokumentacija](https://caddyserver.com/docs/) - [Wireshark User Guide](https://www.wireshark.org/docs/wsug_html_chunked/) - [OWASP TLS Guidelines](https://owasp.org/www-project-cheat-sheets/cheatsheets/Transport_Layer_Protection_Cheat_Sheet.html)