Загрузка...

Точка доступа WiFi с автоматической анонимизацией трафика через Tor

Тема в разделе Wi-Fi создана пользователем Darkhaese208060 11 авг 2018. 536 просмотров

Загрузка...
  1. Darkhaese208060
    Darkhaese208060 Автор темы 11 авг 2018 19 12 ноя 2017
    Зачем нужна точка доступа с Tor?
    В последнее время на фоне массовых блокировок IP-адресов все меньше людей продолжает сомневаться, нужны ли механизмы проксирования и анонимизации в их повседневной жизни. Бесплатных ***-клиентов появляется все больше, но, как показывает практика, далеко не всем из них безопасно полностью доверять: то качество реализации хромает, то разработчики не слишком добросовестны.



    Как известно, Tor «из коробки» предоставляет как механизм проксирования (обхода блокировок), так и продвинутый механизм анонимности. Вся связь между узлами в сети Tor шифруется, а соединение с целевым узлом устанавливается посредством как минимум трех случайно выбранных узлов. Взяв за основу Tor и автоматизировав все процессы, происходящие при подключении к точке доступа (AP — Access Point), в результате мы получим весьма интересный инструмент, польза от которого отнюдь не исчерпывается обходом блокировок.


    Настройка точки доступа

    Для создания точки нам понадобится какое-нибудь устройство, на котором можно запустить операционую систему (виртуальная машина тоже вполне сгодится). В качестве операционной системы, управляющей точкой, подойдет любой Linux-дистрибутив. Конкретно я буду использовать Debian-based. Для превращения всего этого в точку доступа понадобится WiFi-адаптер.

    Если все это выполнено, можно приступать к первичной настройке. Итак, в первую очередь подключаем WiFi-адаптер. Вывод ip addr show wlan0 (wlan0 — имя интерфейса адаптера, может быть другим) должен быть такой, как на скрине.

    [IMG]
    Детали сетевого интерфейса адаптера
    На данный момент сетевой интерфейс не сконфигурирован. Первым делом активируем WiFi, освободив его от влияния вездесущего Network Manager’а:

    Код
    $ sudo nmcli radio wifi off
    $ sudo rfkill unblock wlan





    Теперь выберем и назначим интерфейсу адаптера IP-адрес, все адреса из маски которого будут назначаться в дальнейшем клиентским устройствам:

    Код
    # ip addr add 10.0.0.1/24 dev wlan0





    Третьим пунктом мы переведем адаптер в режим точки доступа: делать это мы будем одним из наиболее распространенных способов — с помощью утилиты hostapd, позволяющей сконфигурировать программную точку доступа. Hostapd присутствует в большинстве штатных репозиториев.

    Код
    $ sudo apt-get install hostapd





    Далее нужно создать конфиг для hostapd (./hostapd.conf):

    Код
    ## Имя интерфейса адаптера
    interface=wlan0
    ## SSID AP
    ssid=TorNet
    ## Автоматический выбор канала
    channel=1
    ## Разрешить подключение со всех MAC-адресов, которые не запрещены
    macaddr_acl=0
    ## Файл с запрещенными для подключения MAC-адресами
    deny_mac_file=./denied_macs
    ## Логировать все модули (IEEE, WPA, IAPP и так далее)
    logger_syslog=-1
    ## Логировать с модулей только informational messages
    logger_syslog_level=2
    ## Режим: IEEE 802.11g
    hw_mode=g
    ## Включить аутентификацию WPA/2
    wpa=2
    ## Пароль WPA для доступа к точке}
    wpa_passphrase=xxxxxxxx
    ## Принимаемые алгоритмы управления ключами
    wpa_key_mgmt=WPA-PSK WPA-EAP WPA-PSK-SHA256 WPA-EAP-SHA256





    После этого уже можно будет запустить hostapd для перевода WiFi-адаптера в режим AP с описанной конфигурацией:

    Код
    # hostapd ./hostapd.conf





    Hostapd и Network ManagerВ некоторых версиях hostapd присутствует баг, связанный с блокировкой интерфейса Network Manager’ом и не позволяющий запускать беспроводную точку доступа. В результате запуска hostapd возникает следующая ошибка:

    Код
    Interface wlan0 wasn't started





    Подробно баг и возможный воркэраунд описан здесь.

    Однако по понятным причинам подключиться к точке привычным образом пока будет невозможно.

    [IMG]
    Попытка подключения к AP без DHCP
    Для устранения этих причин нам понадобится другая утилита — dnsmasq, которая позволит развернуть службы DHCP и DNS. DHCP сейчас представляет больший интерес. Ставим dnsmasq из стандартного репозитория:

    Код
    $ sudo apt-get install dnsmasq





    Dnsmasq также нуждается в предварительной настройке (./dnsmasq.conf):

    Код
    ## Интерфейс для прослушки DHCP-запросов

    interface=wlan0

    ## Диапазон выдаваемых клиентам адресов и срок действия

    ## (должны подходить под маску сетевого шлюза адаптера!)

    dhcp-range=10.0.0.10,10.0.0.250,8h

    ## Шлюз по умолчанию

    dhcp-option=3,10.0.0.1

    ## DNS-шлюз

    dhcp-option=6,10.0.0.1

    ## Логировать DNS-запросы

    log-queries

    ## Логировать DHCP-запросы

    log-dhcp





    Запускаем DHCP-сервер в составе dnsmasq:

    Код
    # dnsmasq -C ./dnsmasq.conf





    Теперь подключение к WiFi точке доступа становится возможным с любых устройств. Чтобы наша точка наконец заработала в обычном режиме, осталось ответить на главный вопрос: откуда точка будет брать доступ в интернет. Для получения ответа предлагаю взглянуть на скрин ниже. Большинство наших посетителей, так или иначе соприкасавшихся с настройкой сетей, заметят на нем достаточно привычную схему связывания сетей. Именно этот способ мы и будем использовать.

    [IMG]
    Схема доступа в интернет с AP
    Как видно из рисунка, для доступа в интернет понадобится еще один сетевой интерфейс. Это может быть как Ethernet-подключение (eth0), так и второй Wi-Fi-модуль (wlan1). Например, при создании точки доступа из виртуальной машины такой интерфейс создается автоматически (eth0).

    Сейчас у нас готово все, за исключением связи между интерфейсами (обозначенной красной линией). Эта связь представляет собой пересылку пакетов с одного интерфейса на другой. Для тестирования работоспособности нашей AP (точки доступа) пока сгодится и обычный механизм NAT:

    Код
    $ sudo sysctl -w net.ipv4.ip_forward=1

    $ sudo iptables -P FORWARD ACCEPT

    $ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE





    На данном этапе AP заработала в обычном режиме: принимает клиентов и предоставляет им доступ в интернет с IP-адреса, выданного нам нашим провайдером. Это, конечно же, замечательно, но для наших целей недостаточно. Поэтому теперь настало время перенаправления всего клиентского трафика в Tor.

    Перенаправление трафика точки доступа в Tor
    Перед перенаправлением всего трафика AP в Tor необходимо установить сам Tor:

    Код
    $ sudo apt-get install tor





    И настроить его как Transparent Proxy с помощью конфигурационного файла (расположенного здесь: /etc/tor/torrc):

    ## Включаем доступ к onion-ресурсам

    Код
    VirtualAddrNetwork 192.168.100.0/10

    AutomapHostsOnResolve 1

    ## Порт для прозрачного проксирования в рамках нашей сети

    TransPort 10.0.0.1:9040

    ## Порт для анонимного резолвинга имен хостов

    DNSPort 10.0.0.1:53}





    Этих настроек для наших нужд вполне достаточно, поэтому можем запускать Tor как сервис:

    Код
    $ sudo service tor start





    На текущий момент вывод netstat -tunapl должен быть примерно таким, как на скрине ниже. Мы видим все запущенные нами сервисы на текущий момент.



    [IMG]
    Открытые порты на AP
    Если сейчас подключиться к точке доступа, то мы по-прежнему будем выходить в интернет с домашнего IP, поэтому осталось всего-навсего включить проксирование через Tor с помощью iptables:

    Код
    # Перенаправление всего TCP-трафика

    $ sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp -j DNAT --to-destination 10.0.0.1:9040

    # ...и DNS-трафика в отдельности

    $ sudo iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j DNAT --to-destination 10.0.0.1:53





    Также нужно удалить предыдущее правило, включающее маскарад между сетевыми интерфейсами (NAT):

    Код
    $ sudo iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE





    Двумя новыми правилами мы добились следующего: подмены пункта назначения всего TCP-трафика в момент появления пакетов на сетевом интерфейсе Wi-Fi-адаптера и редиректа DNS-запросов (протокол UDP). Подмененный пункт назначения — запущенный сервис Tor с Transparent Proxy. Стоит обратить внимание, что на этих двух правилах настройка iptables завершается.

    Теперь можно убедиться в работоспособности настроенной Tor на точке доступа, посетив с любого подключенного к ней устройства какой-нибудь сервис проверки IP. В моем случае 2ip.ru.

    [IMG]
    PoC

    Raspberry Pi как точка доступа с Tor

    Raspberry Pi отлично подходит в качестве управляющего устройства точки доступа: всего несколько дополнительных действий с автоматической разверткой конфигурации при старте системы (systemd, initV), и останется всего лишь воткнуть USB-кабель в «розетку» для включения точки в любой нужный момент.


    Практическое применение точки доступа с Tor

    Имея собственную AP, с которой соединяются клиентские устройства, мы по умолчанию получаем возможность наблюдения за всем трафиком своей сети, как пассивного, так и активного. Перенаправление в Tor — это лишь один из вариантов применения AP в прикладных задачах.


    Анализ трафика клиентских устройств

    Пожалуй, самый очевидный вариант, который сразу же приходит в голову. Никто не запрещает запустить на AP Wireshark или tcpdump и захватывать трафик конкретного клиента либо всех клиентских устройств сразу до момента перенаправления трафика в Tor. Возможности для захвата здесь ограничены лишь уровнем защищенности конечного устройства, пользователя и приложения. Тема достаточно известная, поэтому подробно на ней останавливаться не будем.

    [IMG]
    Захват трафика по MAC-адресу на AP

    Анализ сетевой активности приложений

    В информационной безопасности часто возникает задача проанализировать сетевую активность определенного приложения. Например, у нас имеется мобильное приложение, которое при работе использует несколько известных нам хостов. Мы хотим методом черного ящика проверить, не ведет ли приложение какие-либо скрытые передачи на дополнительные удаленные хосты. Причем на самом устройстве мы это сделать не можем — нет соответствующих прав на уровне ОС. Зато у нас есть точка доступа, находящаяся полностью под контролем и с максимальными правами! Ее использование будет практически аналогично анализу трафика на целевом устройстве. Для этой цели сгодится и tcpdump установленный на Android.

    Попробуем исследовать работоспособность приложения без скрытого доступа к каким-либо дополнительным ресурсам. Заранее мы отключили все остальные источники побочного трафика, генерируемого из других приложений.

    Скрытые передачи в данном случае не обязательно должны быть вредоносными — это могут быть механизмы антиспама (контроль того, что API приложения действительно используется с мобильного устройства), рекламы и так далее. Мы можем пропускать трафик методом белого ящика — запрещено все, что не разрешено:

    Код
    $ sudo iptables -t nat -F

    $ sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp -d <APP_HOST1> -m mac --mac-source <DEVICE_MAC> --dport 443 -j DNAT --to-destination 10.0.0.1:9040

    $ sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp -d <APP_HOST2> -m mac --mac-source <DEVICE_MAC> --dport 443 -j DNAT --to-destination 10.0.0.1:9040

    $ sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp -d <APP_HOST3> -m mac --mac-source <DEVICE_MAC> --dport 443 -j DNAT --to-destination 10.0.0.1:9040





    Таким образом мы разрешили попадание в Tor только трафика с трех хостов определенного устройства, весь остальной трафик не покинет интерфейса wlan0, а следовательно, ничего скрытого передано не будет. Останется лишь убедиться, что в работе приложения не появилось дефектов.


    Блокировка определенных хостов

    В данном случае неплохим решением было бы выдавать сообщение о том, что хост заблокирован в нашей сети. Для этого можно поднять веб-сервер и переадресовывать клиентов с заблокированного ресурса на страницу с сообщением. Для блокировки ресурсов по HTTPS понадобится как минимум сгенерировать самоподписанный сертификат и настроить веб-сервер на работу по протоколу HTTPS.

    Блокировку можно произвести прямо в таблице NAT:

    Код
    $ sudo iptables -t nat -I PREROUTING 1 -i wlan0 -p tcp -d m.vk.com --dport 80 -j DNAT --to-destination 192.168.1.82:80

    $ sudo iptables -t nat -I PREROUTING 1 -i wlan0 -p tcp -d m.vk.com --dport 443 -j DNAT --to-destination 192.168.1.82:443







    [IMG]
    Заблокированный в рамках сети AP хост

    Блокировка рекламных сетей с целью повышения анонимности

    Уже давно известно, что скрипты рекламных сетей стараются скрытно собрать максимум возможной информации о посетителях сайтов, представляя таким образом дополнительную угрозу анонимности. К счастью, на собственной Access Point мы можем по умолчанию заблокировать для клиентов связь рекламных скриптов с рекламными сетями.

    Для этого предлагаю вернуться к утилите dnsmasq: в качестве одной из опций своего конфига утилита предлагает дополнительный источник DNS-информации (наравне с /etc/hosts). Изменим файл с конфигом Dnsmasq (./dnsmasq.conf):

    ## Дополнительный источник DNS-информации, содержащий рекламные сети

    Код
    addn-hosts=/full/path/to/my_dns_hosts.txt}





    Содержимое файла имеет точно такой же формат, как и /etc/hosts, поэтому с его наполнением проблем быть не должно. Источник блокируемых ресурсов можно выбрать самостоятельно из репозитория на GitHub — там можно найти hosts-файлы под блокировки различных масштабов (в самой большой сборке было около 71 тысячи различных хостов).


    Заключение

    Вот таким незамысловатым способом мы создали точку доступа WiFi с автоматической анонимизацией трафика через Tor, а в качестве приятного бонуса мы получили возможность управлять всем проходящим через нее трафиком в собственных целях.

    P.S: Тему передал друг, не орите в комментах
     
    11 авг 2018 Изменено
Top