utorak, 23 aprila, 2024
Internet, mreže i komunikacije

Mitemproksi

Autor: Nemanja Nedeljković

Kada je potrebno da analizirate neku aplikaciju, pronađete neki bug. Izvršite sigurnosnu evaluaciju ili proverite da li vam „cure” privatne informacije i slično. Neophodno je da znate koji saobraćaj ta aplikacija odašilje. Ako je u pitanju HTTPS sadržaj, najbolje rešenje koje vam predstavljamo za taj problem je Mitemproksi (eng. mitmproxy).

Možete ga koristiti da pregledate zahteve i odgovore, kao i da vrlo brzo skriptujete slanje svih tih istih zahteva i da replicirate komunikaciju te aplikacije.

Šta je Mitemproksi?

in-45-04
Mitemproxi (eng. Mitmproxy) je skraćenica od “man in the middle proxy” i pisan je u Pajtonu. Ova alatka vam omogućava praćenje i modifikovanje HTTP i HTTPS saobraćaja. Moramo naglasiti da u toku pisanja ovog teksta ova alatka nema podršku za Vebsokets (eng. websockets).

Korisnički interfejs

Mitemproksi je aplikacija koja se pokreće iz komandne linije i ima konzolni korisnički interfejs. Poseduje interfejs koji je izuzetno jednostavan za korišćenje. U svakom trenutku vam je dostupna pomoć, pritiskom tastera „?”.

https://mitmproxy.org/images/mitmproxy.pngin-45-05

Preusmeravanje saobraćaja

Da biste videli saobraćaj, neophodno je da ga preusmerite u Mitemproksi.

To možete uraditi na jedan od tri načina.

HTTP/HTTPS proksi

Najjednostavniji način da preusmerite saobraćaj u Mitemproksi je da koristite HTTP/HTTPS proksi. Ovaj način je podrazumevani.

Soks proksi

Ako preusmeravate saobraćaj iz aplikacije koja podržava samo soks proksi (eng. socks proxy), samo dodajte –socks argument pri pokretanju Mitemproksi aplikacije.

Transparentni proksi

Ukoliko želite da preusmerite sav saobraćaj sa nekog uređaja, podesite računar na kojem je pokrenut Mitemproksi kao mrežni prolaz i pokrenite Mitemproksi sa -T argumentom.

Takođe, neophodno je da preusmerite portove 80 i 443 na odgovarajući port na kojem sluša Mitemproksi i da uključite net.ipv4.ip_forward.

sudo sysctl -w net.ipv4.ip_forward=1 sudo iptables -t nat -A PREROUTING -i [interfejs] -p tcp --dport 443 -j REDIRECT --to-port 8080 sudo iptables -t nat -A PREROUTING -i [interfejs] -p tcp --dport 80 -j REDIRECT --to-port 8080

Pritom, bitno je da [interfejs] zamenite sa imenom interfejsa, npr. eth0.

HTTPS

Pre nego što ovo radite, potrebno je da znate šta je SSL, CA i kako funkcioniše validacija sertifikata.

Tok izgleda ovako:

Client -> (generisan serfitikat) Mitemproksi -> (validan sertifikat) Server

Da bi aplikacija prihvatila generisan sertifikat, neophodno je instalirati CA kojim Mitemproksi potpisuje generisane sertifikate.

To ćete uraditi tako što ćete u vašem pretraživaču čiji je saobraćaj preusmeren kroz Mitemproksi otići na http://Mitemproksi.it/. Tamo ćete pronaći instrukcije za platformu koju koristite na klijentu.

Mogućnosti

  • Antikeširanje (obavija 304 odgovore)
  • Filtriranje zahteva
  • Možete da napišete skriptu u Pajtonu koja modifikuje zahtev ili/i odgovor
  • Možete da eksportujete zahtev u nekoliko različitih jezika kao što su Beš (eng. Bash) (u obliku Ce-u-er-el (eng. cURL) komande)
  • Možete da sačuvate sav saobraćaj
  • Možete da primenite replikaciju određenog sadržaja upotrebom regularnih izraza (eng. regular expressions) nad svim saobraćajem
  • I još mnogo toga