уторак, 23 априла, 2024
Интернет, мреже и комуникације

Митемпрокси

Аутор: Немања Недељковић

Када је потребно да анализирате неку апликацију, пронађете неки буг. Извршите сигурносну евалуацију или проверите да ли вам „цуре” приватне информације и слично. Неопходно је да знате који саобраћај та апликација одашиље. Ако је у питању HTTPS садржај, најбоље решење које вам представљамо за тај проблем је Митемпрокси (енг. mitmproxy).

Можете га користити да прегледате захтеве и одговоре, као и да врло брзо скриптујете слање свих тих истих захтева и да реплицирате комуникацију те апликације.

Шта је Митемпрокси?

in-45-04
Митемпроxи (енг. Mitmproxy) је скраћеница од “man in the middle proxy” и писан је у Пајтону. Ова алатка вам омогућава праћење и модификовање HTTP и HTTPS саобраћаја. Морамо нагласити да у току писања овог текста ова алатка нема подршку за Вебсокетс (енг. websockets).

Кориснички интерфејс

Митемпрокси је апликација која се покреће из командне линије и има конзолни кориснички интерфејс. Поседује интерфејс који је изузетно једноставан за коришћење. У сваком тренутку вам је доступна помоћ, притиском тастера „?”.

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

Преусмеравање саобраћаја

Да бисте видели саобраћај, неопходно је да га преусмерите у Митемпрокси.

То можете урадити на један од три начина.

ХТТП/ХТТПС прокси

Најједноставнији начин да преусмерите саобраћај у Митемпрокси је да користите HTTP/HTTPS прокси. Овај начин је подразумевани.

Сокс прокси

Ако преусмеравате саобраћај из апликације која подржава само сокс прокси (енг. socks proxy), само додајте –socks аргумент при покретању Митемпрокси апликације.

Транспарентни прокси

Уколико желите да преусмерите сав саобраћај са неког уређаја, подесите рачунар на којем је покренут Митемпрокси као мрежни пролаз и покрените Митемпрокси са -T аргументом.

Такође, неопходно је да преусмерите портове 80 и 443 на одговарајући порт на којем слуша Митемпрокси и да укључите 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

Притом, битно је да [interfejs] замените са именом интерфејса, нпр. eth0.

ХТТПС

Пре него што ово радите, потребно је да знате шта је SSL, CA и како функционише валидација сертификата.

Ток изгледа овако:

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

Да би апликација прихватила генерисан сертификат, неопходно је инсталирати CA којим Митемпрокси потписује генерисане сертификате.

То ћете урадити тако што ћете у вашем претраживачу чији је саобраћај преусмерен кроз Митемпрокси отићи на http://Mitemproksi.it/. Тамо ћете пронаћи инструкције за платформу коју користите на клијенту.

Mогућности

  • Антикеширање (обавија 304 одговоре)
  • Филтрирање захтева
  • Можете да напишете скрипту у Пајтону која модификује захтев или/и одговор
  • Можете да експортујете захтев у неколико различитих језика као што су Беш (енг. Bash) (у облику Це-у-ер-ел (енг. cURL) команде)
  • Можете да сачувате сав саобраћај
  • Можете да примените репликацију одређеног садржаја употребом регуларних израза (енг. regular expressions) над свим саобраћајем
  • И још много тога