В этой статье я не буду затрагивать загрузку и установку whonix gateway, а также рекомендации к гостевой системе и факторы, обеспечивающие анонимность и конфиденциальность. Все это очень подробно описано в документации на сайте whonix.org.

Допустим, вы ознакомились с документацией, и у нас есть импортированный в virtualBox Whonix-gateway, создадим новую машину для установки на нее Kali Linux:

 

Создаем новую Виртуальную Машину

  1. Name: Вводим имя машины  (например: Kali-master). Type: Linux. Version: Debian (64 bit)
  2. Выделяем размер памяти (4096) MB
  3. Create a virtual hard drive now
  4. VDI
  5. Dynamically allocated
  6. 20-25 Гб должно хватить

 

Изменяем настройки Виртуальной Машины

  1. Выбираем нашу машину  (Kali-whonix) -> Settings -> System -> Motherboard -> Hardware Clock in UTC
  2. System -> Motherboard -> Pointing Device -> PS/2 Mouse (необходимо для отключения usb-контроллера)
  3. System -> Processor -> Enable PAE/NX если доступно
  4. Network -> Adapter 1 -> attached to Internal Network (Важно!!!)
  5. Network -> Adapter 1 -> Name (Internal Network) (Важно!!!): Whonix
  6. USB -> Отключить “Enable USB controller”

 

Запускаем машину и устанавливаем Kali Linux

  1. Выбираем в качестве установочного диска образ с Kali
  2. В меню загрузки выбираем Istall mode
  3. Language: English
  4. Country: United States
  5. Keymap to use: American English
  6. Whonix-Gateway у нас пока выключен, поэтому выбираем Do not configure the network at this time
  7. Hostname: host
  8. Задаем пароль root
  9. Timezone: Eastern (потом установим в UTC)
  10. Partition disk — разбиваем диск по умолчанию
  11. Use network mirror — No
  12. Устанавливаем grub и перезапускаем машину

 

Усиливаем безопасность

Ставим время в UTC

root@host:~# ln -fs /usr/share/zoneinfo/Etc/UTC /etc/localtime
root@host:~# echo UTC0 > /etc/localtime

Отключаем Tcp timestamps

root@host:~# echo “net.ipv4.tcp_timestamps = 0” > /etc/sysctl.d/tcp_timestamps.conf

Настраиваем сеть
Удаляем network-manager

root@host:~# apt-get remove network-manager
root@host:~# vim /etc/network/interfaces

и добавляем строки:

указываем dns:

root@host:~# echo nameserver 10.152.152.10 > /etc/resolv.conf

Исправляем sources.list

root@host:~# vim /etc/apt/sources.list

добавляем: (можно свериться с docs.kali.org)

Включаем Whonix — Gateway и обновляем систему

root@host:~# apt-get update && apt-get dist-upgrade
root@host:~# reboot

Tor-browser

Устанавливаем Tor — browser с сайта torproject.org

Чтобы Tor запускался от пользователя root находим секцию в файле start-tor-browser и закомментируем ее:

root@host:~/Desktop# vim ./tor-browser_en-US/Browser/start-tor-browser

меняем владельца:

root@host:~/Desktop# chown -R root:root ./tor-browser_en-US/

Сейчас у нас tor-browser выходит через прозрачный прокси на whonix-gateway — следовательно у нас сценарий Tor over Tor, что не есть хорошо. Чтобы этого избежать установим rinetd, который у нас будет перенаправлять порты, к которым обращается tor с локальной машины на whonix — gateway.

root@host:~# apt-get install rinetd
root@host:~# vim /etc/rinetd.conf

и добавляем туда следующие строки ( взяты из whonix-workstation):

Также добавляем переменные окружения:

root@host:~# vim ~/.profile

добавляем:

И запускаем tor браузер. Теперь ip адрес выходной ноды можно найти в списке тор-цепочек на whonix-gateway, запустив arm — мы избежали tor over tor.

Изоляция потоков (Stream Isolation)

Как и в whonix будем использовать uwt — враппер, написанный на bash, который запускает torsocks с указанием ip адреса и порта.

устанавливаем torsocks:

root@host:~# apt-get install torsocks

Берем uwt тут:

https://github.com/Whonix/uwt/blob/master/usr/bin/uwt

и копируем в /usr/bin/ не забывая разрешить исполнение и запускаем:

root@host:~# uwt
Usage: uwt [-h] [-v] -i ip -p port <command> [<options>...]
Example: uwt -i 127.0.0.1 -p 9050 wget https://check.torproject.org
sudo uwt -i 10.152.152.10 -p 9104 /usr/bin/apt-get --yes dist-upgrade

Открываем torrc  в Whonix — gateway и видим, что некоторые порты зарезервированы за приложениями. Но также есть и свободные порты — эти порты бывают четырех типов:

user@host:~$ less /usr/share/tor/tor-service-defaults-torrc

  1. Without IsolateDestAddr and without IsolateDestPort: SocksPort 10.152.152.10:9153 to 9159
    root@host:~# uwt -i 10.152.152.10 -p 9154 curl -s http://yandex.ru/internet https://yandex.ru/internet https://www.dnsleaktest.com | grep "strong>IP\|Hello"
    <strong>IP-адрес</strong>: 162.244.25.249
    <strong>IP-адрес</strong>: 162.244.25.249
    <p class="hello">Hello 162.244.25.249</p>
  2. With IsolateDestAddr, but without IsolateDestPort: SocksPort 10.152.152.10:9160 to 9169
    root@host:~# uwt -i 10.152.152.10 -p 9161 curl -s http://yandex.ru/internet https://yandex.ru/internet https://www.dnsleaktest.com | grep "strong>IP\|Hello"
    <strong>IP-адрес</strong>: 95.128.43.164
    <strong>IP-адрес</strong>: 95.128.43.164
    <p class="hello">Hello 209.159.138.19</p>
  3. Without IsolateDestAddr, but with IsolateDestPort: SocksPort: 10.152.152.10:9170 to 9179
    root@host:~# uwt -i 10.152.152.10 -p 9171 curl -s http://yandex.ru/internet https://yandex.ru/internet https://www.dnsleaktest.com | grep "strong>IP\|Hello"
    <strong>IP-адрес</strong>: 37.187.129.166
    <strong>IP-адрес</strong>: 209.159.138.19
    <p class="hello">Hello 209.159.138.19</p>
  4. With IsolateDestAddr and with IsolateDestPort: SocksPort: 10.152.152.10:9180 to 9189
    root@host:~# uwt -i 10.152.152.10 -p 9181 curl -s http://yandex.ru/internet https://yandex.ru/internet https://www.dnsleaktest.com | grep "strong>IP\|Hello"
    <strong>IP-адрес</strong>: 37.187.129.166
    <strong>IP-адрес</strong>: 89.31.57.5
    <p class="hello">Hello 109.163.234.7</p>

Опция IsolateDestAddr будет строить отдельную тор-цепочку для каждого различного хоста в запросе, а IsolateDestPort для различных портов, например если мы обращаемся по http и https, как видно выше.

Стоит помнить, что этими опциями не нужно злоупотреблять, во избежании увеличении нагрузки на сеть тор. Поэтому в большинстве случаев достаточно диапазона 9153 — 9159

Чтобы уменьшить длину команды, вводимой в терминале, можно воспользоваться alias

root@host:~# alias apt-get='uwt -i 10.152.152.10 -p 9104 apt-get'

Отключаем Transparent proxy

Для усиления безопасности можно отказаться от transparent proxy на whonix — gateway для этого открываем /etc/whonix_firewall.d/30_default

находим:

и меняем на:

На этом построение анонимной системы для пентеста можно считать завершенным. Виртуальная машина Kali — master готова, нужно лишь периодически обновлять ее.

Для выполнения задач создаем копию или клон этой kali-master машины средствами virtualbox и работаем непосредственно внутри этой машины.