✍️ Статья Анонимные сканирования с Nmap, sqlmap и WPScan через Tor

The 146X Project Dublikat Web Studio Avram Lincoln AL Service Navigator Knyaz

BlackPope

Команда форума
Модератор DeepWeb ✔️
PR-Group DeepWeb 🔷
Регистрация
27.04.2020
Сообщения
230
Вопрос анонимного использования инструментов для тестирования на проникновение очень широк. И даже если вам кажется, что вы всё правильно настроили, для вас может оказаться неприятным сюрпризом, что некоторые программы игнорируют общесистемный настройки прокси. К таким программа относятся Nmap, Masscan, IVRE и другие, которые не используют системные функции для подключений, а задействуют свои собственные низкоуровневые методики.

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

Установка и запуск Tor в Kali Linux и BlackArch

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

В 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 90
40

Запустите и добавьте в автозапуск службу 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 (http://proxychains.sf.net)

Starting Nmap 7.25BETA2 ( https://nmap.org ) 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 этот баг уже исправили, то предлагаю установить ProxyChains-NG (только для пользователей Kali Linux и производных Debian, в BlackArch / Arch Linux уже всё впорядке – по умолчанию ставиться ProxyChains-NG):

sudo apt-get remove proxychains
git clone https://github.com/rofl0r/proxychains-ng.git
cd proxychains-ng/
./configure --prefix=/usr --sysconfdir=/etc
make
sudo make install
sudo make install-config


Сканирование Nmap через Tor

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).

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

Именно для этого мы и устанавливали ProxyChains-NG. Перед каждой командой 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 ( https://nmap.org ) 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 https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 13.41 seconds


m7fT6qpJ6gk.jpg

Как видно, выводиться много информации, которую генерирует 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 ( https://nmap.org ) 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 https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 14.35 seconds


Как мы можем убедиться, мы получаем обычный вывод Nmap:

oz2ak4FGR0I.jpg

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

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

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

sudo tcpdump -w scan-without-tor.cap

Во втором окне запустите сканирование (можете выбрать свою цель):

nmap -sT -PN -sV --open -n -p 80 185.26.122.50

Когда сканирование закончиться, остановите tcpdump в первом окне.

9Eh3JW3C3n4.jpg

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

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)


uT1O6bAof00.jpg

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.

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


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

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

proxy_dns

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

#proxy_dns

Сканирование sqlmap через Tor

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

sqlmap -u ЦЕЛЬ --proxy socks5://127.0.0.1:9050

Например:

sqlmap -u "https://mi-al.ru/index.php?page=ready&directory=gp&id=3312.htm" --proxy socks5://127.0.0.1:9050

Как можно убедиться, заглянув в логи веб-сервера, сканирование осуществляется с адреса 91.219.236.218, хотя мой реальный адрес другой (узнать свой IP вы можете здесь https://suip.biz/ru/?act=myip).

Сканирование 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, поскольку использование Tor’а вызывает значительные задержки.

Пример:

sudo wpscan -u kali.tools -e p,vt,u --proxy socks5://127.0.0.1:9050

Снова заглянем в логи веб-сервера:

VMJHancbhcs.jpg

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

Заключение

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

proxychains4 sqlmap -u ЦЕЛЬ
proxychains4 wpscan -u ЦЕЛЬ -e p,vt,u


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

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

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

📌 Золотая реклама

AnonPaste

Верх