Анонимные сканирования с nmap, sqlmap и wpscan через tor

Tartuga

Бывалый
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
PREMIUM USER

Tartuga

Бывалый
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
PREMIUM USER
Регистрация
7 Фев 2020
Сообщения
525
Реакции
98
Репутация
147
Вопрос анонимного использования инструментов для тестирования на проникновение очень широк. И даже если вам кажется, что вы всё правильно настроили, для вас может оказаться неприятным сюрпризом, что некоторые программы игнорируют общесистемный настройки прокси. К таким программа относятся Nmap, Masscan, IVRE и другие, которые не используют системные функции для подключений, а задействуют свои собственные низкоуровневые методики.

Поскольку тема достаточно широкая и сложная, мы к ней обязательно вернёмся с подробным анализом и тестами сделанных настроек, а в этой небольшой заметке хочу только показать практические решения по сканированию через Tor в программах Nmap, sqlmap и WPScan. Эти вопросы мне пришлось решать при настройке suIP.biz, поскольку программы достаточно часто используются, думаю, многих заинтересует как сканировать, при этом не выдавая свой IP.

Установка и запуск Tor в Kali Linux и BlackArch
Поскольку для анонимности мы будем использовать

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

, то установим необходимые пакеты, которые нам понадобяться:

В Kali Linux

sudo apt-get install torsocks tor
В самый конец файла /etc/tor/torrc добавьте строки:

AutomapHostsOnResolve 1
DNSPort 53530
TransPort 9040
Запустите и добавьте в автозапуск службу Tor:

sudo systemctl start tor
sudo systemctl enable tor

В BlackArch / Arch Linux:

sudo pacman -S torsocks tor proxychains-ng --needed
В самый конец файла /etc/tor/torrc добавьте строки:

AutomapHostsOnResolve 1
DNSPort 53530
TransPort 9040
Запустите и добавьте в автозапуск службу Tor:

sudo systemctl start tor
sudo systemctl enable tor

ProxyChains VS ProxyChains-NG (looks like an IPv6 target specification -- you have to use the -6 option)
У ProxyChains есть баг, если вы используете ProxyChains с nmap и попытаетесь в качестве цели задать имя хоста (а не IP адрес), то в результате получите сообщение об ошибке looks like an IPv6 target specification -- you have to use the -6 option.

proxychains nmap -sT -PN -sV -n --open -p 80 mi-al.ru
ProxyChains-3.1 (

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

)

Starting Nmap 7.25BETA2 (

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

) at 2016-09-26 15:41 MSK
|DNS-request| mi-al.ru
|S-chain|-<>-127.0.0.1:9050-<><>-4.2.2.2:53-<><>-OK
|DNS-response| mi-al.ru is 185.26.122.50
185.26.122.50/0 looks like an IPv6 target specification -- you have to use the -6 option.
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 3.17 seconds
Поскольку proxychains не обновлялся с 2006 года, а в

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

этот баг уже исправили, то предлагаю установить ProxyChains-NG (только для пользователей Kali Linux и производных Debian, в

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

/ Arch Linux уже всё впорядке – по умолчанию ставиться ProxyChains-NG):

sudo apt-get remove proxychains
git clone

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.


cd proxychains-ng/
./configure --prefix=/usr --sysconfdir=/etc
make
sudo make install
sudo make install-config
Сканирование Nmap через

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.


Nmap – это одна из тех программ, с которой нужно быть осторожным, если вы хотите сохранить свою анонимность.

Если мы хотим сканировать с Nmap через прокси, то нам обязательно понадобиться опция -sT. Давайте посмотрим в справке об этой опции и заодно узнаем о двух типов сканирования Nmap:

  • -sT (TCP сканирование с использованием системного вызова connect)
Это используемый по умолчанию тип TCP сканирования, когда недоступно SYN сканирование. Это происходит в случае, когда у пользователя нет привилегий для использования сырых пакетов. Вместо того, чтобы использовать сырые пакеты, как это происходит при большинстве других типов сканирования, Nmap "просит" операционную систему установить соединение с целевой машиной по указанному порту путем системного вызова connect. Это такой же высокоуровневый системный вызов, используемый браузерами, P2P клиентами и другими приложениями для установки соединения. Этот вызов является частью программируемого интерфейса, известного как Berkeley Sockets API. Вместо того, чтобы считывать ответы в форме сырых пакетов, Nmap использует этот API для получения информации о статусе каждой попытки соединения.

При доступности SYN сканирования, оно, безусловно, будет являться лучшим выбором. У Nmap имеется меньше возможностей контролирования высокоуровнего вызова connect по сравнению с сырыми пакетами, что делает его менее эффективным. Системный вызов завершает соединения по открытым портам, вместо того, чтобы использовать полуоткрытые соединения, как в случае с SYN сканированием. Таким образом на получение той же самой информации потребуется больше времени и пакетов, да к тому же целевые машины скорее всего запишут это соединение в свои логи. То же самое сделает и порядочная IDS, хотя большинство машин не имеют такой системы защиты. Многие службы на вашей Unix системе будут добавлять запись в системный лог (syslog), а также сообщение об ошибке, когда Nmap будет устанавливать и закрывать соединение без отправления данных. Некоторые службы даже аварийно завершают свою работу, когда это происходит, хотя это не является обычной ситуацией. Администратор, который увидит в логах группу записей о попытке установки соединения от одной и той же системы, должен знать, что его машина подверглась такому типу сканирования.

Итак, теперь мы запускаем nmap с опцией -sT, но без sudo, т.е. программе больше не нужны права суперпользователя.

Ещё полезными станут опции:

  • -Pn (Не использовать пинг сканирование)
  • -sV (Определение версии)
  • --open (Показывать только открытые (или возможно открытые) порты)
При использовании любых прокси всегда происходит замедление скорости, увеличение времени ответа, поэтому сканирование через прокси будет проходить заметно медленнее. Поэтому рекомендую задать интересующие порты опцией -p или же воспользоваться опцией

  • -F (Быстрое (ограниченные порты) сканирование).
  • -n (Без преобразования DNS)
Последняя опция -n указывает Nmap никогда не производить обратное разрешение DNS имен каждого обнаруженного активного IP адереса. Преобразование DNS может быть медленным даже со встроенным в Nmap параллельным преобразователем IP адресов, поэтому данная опция может сократить время сканирования.

Наконец, мы подошли к опции --proxies. Интуиция подсказывает использовать её примерно так: --proxies socks4://127.0.0.1:9050. Но на самом деле, эту опции вообще НЕ НАДО использовать. Чтобы понять масштабы её ущербности, давайте обратимся к официальной справке:

Предупреждение: эта функция всё ещё в разработке и имеет ограничения. Она реализована внутри библиотеки nsock и, следовательно, не оказывает эффект на пинг, сканирование портов и фаз сканирования при определении ОС. Только NSE и сканирование версии могут извлечь выгоду из этой опции - поэтому другие функции могут раскрыть ваш истинный адрес. SSL ещё не поддерживаются, а также преобразование DNS на стороне прокси (имена хостов всегда преобразуются в Nmap).

Т.е. кроме как ввести нас в заблуждение, что мы находимся за прокси, эта опция ничего делать не умеет.

Именно для этого мы и устанавливали

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

. Перед каждой командой Nmap нам нужно добавлять proxychains4, тогда сканирование будет производиться через Tor:

proxychains4 nmap -sT -PN -sV --open -n ЦЕЛЬ
Пример:

proxychains4 nmap -sT -PN -sV --open -n -p 80 mi-al.ru
[proxychains] config file found: /etc/proxychains.conf
[proxychains] preloading /usr/lib/libproxychains4.so
[proxychains] DLL init: proxychains-ng 4.11-git-5-ge527b9e

Starting Nmap 7.25BETA2 (

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

) at 2016-09-26 16:27 MSK
[proxychains] Strict chain ... 127.0.0.1:9050 ... mi-al.ru:80 ... OK
[proxychains] Strict chain ... 127.0.0.1:9050 ... mi-al.ru:80 ... OK
[proxychains] Strict chain ... 127.0.0.1:9050 ... mi-al.ru:80 ... OK
[proxychains] Strict chain ... 127.0.0.1:9050 ... mi-al.ru:80 ... OK
Nmap scan report for mi-al.ru (224.0.0.1)
Host is up (1.5s latency).
PORT STATE SERVICE VERSION
80/tcp open http nginx 1.6.3
Service detection performed. Please report any incorrect results at

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

.
Nmap done: 1 IP address (1 host up) scanned in 13.41 seconds


Как видно, выводиться много информации, которую генерирует ProxyChains-NG. Для подавления вывода этой информации можно использовать следующую конструкцию:

proxychains4 nmap -sT -PN -sV --open -n ЦЕЛЬ 2>/dev/null
Пример:

proxychains4 nmap -sT -PN -sV --open -n -p 80 mi-al.ru 2>/dev/null

Starting Nmap 7.25BETA2 (

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

) at 2016-09-26 16:28 MSK
Nmap scan report for mi-al.ru (224.0.0.1)
Host is up (1.7s latency).
PORT STATE SERVICE VERSION
80/tcp open http nginx 1.6.3

Service detection performed. Please report any incorrect results at

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

.
Nmap done: 1 IP address (1 host up) scanned in 14.35 seconds
Как мы можем убедиться, мы получаем обычный вывод Nmap:


Теперь переходим к самому главному – тестируем, что действительно используется Tor. На мой взгляд, самой лучшей проверкой была бы настройка пассивного мониторинга на машине, используемой в качестве цели. Но сейчас на это нет времени – к этому вопросу мы обязательно вернёмся позже.

А пока давайте проверим, что отсутствуют пакеты, отправляемые напрямую к целевой машине.

Откройте два консольных окна, в первом введите:

sudo tcpdump -w scan-without-tor.cap
Во втором окне запустите сканирование (можете выбрать свою цель):

nmap -sT -PN -sV --open -n -p 80 185.26.122.50
Когда сканирование закончиться, остановите tcpdump в первом окне.


Теперь ищем в двух сохранённых файлах:

sudo tcpdump -nS -c 10 -r scan-without-tor.cap "host 185.26.122.50"
sudo tcpdump -nS -c 10 -r scan-with-tor.cap "host 185.26.122.50"
Как можно убедиться, во втором случае наш IP адрес не раскрывается:

sudo tcpdump -nS -c 10 -r scan-without-tor.cap "host 185.26.122.50"
reading from file scan-without-tor.cap, link-type EN10MB (Ethernet)
16:37:43.778879 IP 192.168.1.49.41770 > 185.26.122.50.80: Flags , seq 4089865578, win 29200, options [mss 1460,sackOK,TS val 2169689 ecr 0,nop,wscale 7], length 0
16:37:43.820027 IP 185.26.122.50.80 > 192.168.1.49.41770: Flags [S.], seq 1212857828, ack 4089865579, win 4380, options [mss 1460,nop,nop,TS val 1723278492 ecr 2169689,sackOK,eol], length 0
16:37:43.820061 IP 192.168.1.49.41770 > 185.26.122.50.80: Flags [.], ack 1212857829, win 29200, options [nop,nop,TS val 2169699 ecr 1723278492], length 0
16:37:43.820104 IP 192.168.1.49.41770 > 185.26.122.50.80: Flags [R.], seq 4089865579, ack 1212857829, win 29200, options [nop,nop,TS val 2169699 ecr 1723278492], length 0
16:37:43.902298 IP 192.168.1.49.41772 > 185.26.122.50.80: Flags , seq 849910226, win 29200, options [mss 1460,sackOK,TS val 2169720 ecr 0,nop,wscale 7], length 0
16:37:43.934850 IP 185.26.122.50.80 > 192.168.1.49.41772: Flags [S.], seq 768072989, ack 849910227, win 4380, options [mss 1460,nop,nop,TS val 1723278615 ecr 2169720,sackOK,eol], length 0
16:37:43.934880 IP 192.168.1.49.41772 > 185.26.122.50.80: Flags [.], ack 768072990, win 29200, options [nop,nop,TS val 2169728 ecr 1723278615], length 0
16:37:49.937544 IP 192.168.1.49.41772 > 185.26.122.50.80: Flags [P.], seq 849910227:849910245, ack 768072990, win 29200, options [nop,nop,TS val 2171229 ecr 1723278615], length 18: HTTP: GET / HTTP/1.0
16:37:49.955484 IP 185.26.122.50.80 > 192.168.1.49.41772: Flags [.], ack 849910245, win 4398, options [nop,nop,TS val 1723284651 ecr 2171229], length 0
16:37:50.593882 IP 185.26.122.50.80 > 192.168.1.49.41772: Flags [P.], seq 768072990:768074438, ack 849910245, win 4398, options [nop,nop,TS val 1723285286 ecr 2171229], length 1448: HTTP: HTTP/1.1 200 OK


sudo tcpdump -nS -c 10 -r scan-with-tor.cap "host 185.26.122.50"
reading from file scan-with-tor.cap, link-type EN10MB (Ethernet)



nmap: netutil.cc:1348: int collect_dnet_interfaces(const intf_entry*, void*): Assertion `rc == 0' failed.
Если вы попытались использовать proxychains с nmap, например, для определения версии ОС:

proxychains4 nmap -sT -PN -sV -v -A -T4 suip.biz 2>/dev/null
И у вас возникает ошибка nmap: netutil.cc:1348: int collect_dnet_interfaces(const intf_entry*, void*): Assertion `rc == 0' failed.

То у вас на выбор две опции:

  1. не использовать dns имя, а использовать сырой ipv4 адрес
  2. или отключить proxy_dns в файле конфигурации
Для этого откройте файл /etc/proxychains.conf.

Найдите там строку

И закомментируйте её, чтобы получилось:

Сканирование sqlmap через Tor
Здесь всё намного проще. Нам нужно добавить к вашей команде сканирования --proxy socks5://127.0.0.1:9050. Т.е. команда приобретает вид (можно также использовать все опции, какие вы обычно используете):

sqlmap -u ЦЕЛЬ --proxy socks5://127.0.0.1:9050
Например:

sqlmap -u "

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

" --proxy socks5://127.0.0.1:9050
Как можно убедиться, заглянув в логи веб-сервера, сканирование осуществляется с адреса 91.219.236.218, хотя мой реальный адрес другой (узнать свой IP вы можете здесь

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

).

Сканирование WPScan через Tor
Здесь опять всё достаточно просто, прибавьте к вашей команде --proxy socks5://127.0.0.1:9050:

wpscan -u ЦЕЛЬ -e p,vt,u --proxy socks5://127.0.0.1:9050
Также можно воспользоваться опциями --request-timeout 500 --connect-timeout 120, поскольку использование

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

’а вызывает значительные задержки.

Пример:

sudo wpscan -u kali.tools -e p,vt,u --proxy socks5://127.0.0.1:9050
Снова заглянем в логи веб-сервера:


Опять чужой IP 176.126.252.11.

Заключение
Программа ProxyChains-NG является универсальной и вместе с ней можно использовать различные программы. Например, вместо предложенного варианта с опциями --proxy, можно было запускать так:

proxychains4 sqlmap -u ЦЕЛЬ
proxychains4 wpscan -u ЦЕЛЬ -e p,vt,u
ProxyChains-NG особенно удобен в использовании с программами, которые не имеют опций/функционала для поддержки прокси.

Нужно обязательно тестировать, действительно ли вы скрываете свой IP. Поскольку, как показано на примере Nmap, даже с релевантными опциями программы что-то может пойти не так.

Если говорить не только об анонимности при сканировании, но и анонимности вообще, то это сложная тема, поскольку есть множество способов «проколоться».
 
Сверху