У ненадійному світі Інтернету конфіденційність в мережі є головною проблемою в ці дні, коли користувачі постійно залежать від Інтернету. Інтернет настільки уразливий для атак на безпеку, що легко відслідковувати свою ідентичність, включаючи фізичне місце розташування та інші онлайн-дії користувача, як-от сайти, які ви відвідуєте, онлайн-паролі тощо. Інтернет-провайдери, державні корпорації та хакери можуть легко відстежувати вашу активність у мережі та отримувати доступ до вашої іншої особистої інформації без вашого відома. Питання анонімного використання інструментів для тестування на проникнення дуже широке. І навіть якщо вам здається, що ви все правильно налаштували, може виявитися неприємним сюрпризом, що деякі програми ігнорують загальносистемні налаштування проксі.
До таких програм належать Nmap, Masscan, IVRE та інші, які не використовують системні функції для підключень, а залучають свої власні низькорівневі методики. Насправді, для експертів мистецтво сканування портів не вимагає багато зусиль. Вони знають дюжини різних прийомів сканування портів і вибирають для конкретного завдання відповідний (або комбінацію з кількох). Недосвідчені користувачі намагаються вирішити всі завдання за допомогою сканування, що використовується за умовчанням SYN. Так як Nmap є безкоштовним, то єдиним бар’єром на шляху до оволодіння технікою сканування портів є знання. В цій невеликій статті показані практичні рішення щодо сканування через Tor у програмах Nmap, sqlmap і WPScan. Ці питання виникали та вирішувались при налаштуванні suIP.biz, оскільки програми досить часто використовуються. Думаю, багато кого зацікавить, як сканувати і при цьому не видавати свій IP.
Оскільки для анонімності ми використовуватимемо 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 9040
Запустіть та додайте в автозапуск службу Tor:
sudo systemctl start tor
sudo systemctl enable tor
ProxyChains має баг, якщо ви використовуєте ProxyChains з nmap і спробуєте в якості мети задати ім’я хоста (а не IP адресу), то в результаті отримаєте повідомлення про помилку looks like an IPv6 target specification — ви повинні використовувати -6 option.
Оскільки proxychains не оновлювався з 2006 року, а в ProxyChains-NG цей баг вже виправили, то пропоную встановити ProxyChains-NG (тільки для користувачів Kali Linux та похідних Debian, у BlackArch/Arch Linux вже все впорядку – за замовчуванням ставиться ProxyChains-NG :
Nmap – це одна з програм, з якою потрібно бути обережним, якщо ви хочете зберегти свою анонімність. Якщо ми хочемо сканувати з Nmap через проксі, нам обов’язково знадобиться опція -sT. Давайте подивимося в довідці про цю опцію і заразом дізнаємося про два типи сканування Nmap:
Це тип TCP сканування, що використовується за умовчанням, коли недоступне SYN сканування. Це відбувається у випадку, коли користувач не має привілеїв для використання сирих пакетів. Замість використання сирих пакетів, як це відбувається при більшості інших типів сканування, Nmap “просить” операційну систему встановити з’єднання з цільовою машиною по вказаному порту шляхом системного виклику connect. Це такий самий високорівневий системний виклик, який використовується браузерами, P2P клієнтами та іншими програмами для встановлення з’єднання. Цей виклик є частиною програмованого інтерфейсу, відомий як Berkeley Sockets API. Замість того, щоб зчитувати відповіді у формі сирих пакетів, Nmap використовує цей API для отримання інформації про статус кожної спроби з’єднання. При доступності SYN сканування воно, безумовно, буде кращим вибором. Nmap має менше можливостей контролювання високорівневого виклику connect в порівнянні з сирими пакетами, що робить його менш ефективним. Системний виклик завершує з’єднання по відкритих портах, замість того щоб використовувати напіввідкриті з’єднання, як у випадку з скануванням SYN.
Таким чином на отримання тієї ж інформації потрібно більше часу і пакетів, та до того ж цільові машини швидше за все запишуть це з’єднання в свої логи. Те саме зробить і порядна IDS, хоча більшість машин не мають такої системи захисту. Багато служб на вашій Unix системі будуть додавати запис у системний лог (syslog), а також повідомлення про помилку, коли Nmap буде встановлювати та закривати з’єднання без надсилання даних. Деякі служби навіть аварійно завершують свою роботу коли це відбувається, хоча це не є звичайною ситуацією. Адміністратор, який побачить у логах групу записів про спробу встановлення з’єднання від однієї системи, повинен знати, що його машина зазнала такого типу сканування. Отже, тепер ми запускаємо nmap із опцією -sT, але без sudo, тобто. програмі більше не потрібні права суперкористувача.
Ще корисними стануть опції:
При використанні будь-яких проксі завжди відбувається уповільнення швидкості, збільшення часу відповіді, тому сканування через проксі проходитиме помітно повільніше. Тому рекомендую задати порти, що цікавлять опцією -p або ж скористатися опцією
Остання опція -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 МЕТА
Як видно, виводиться багато інформації, що генерує ProxyChains-NG. Для придушення виведення цієї інформації можна використовувати таку конструкцію:
proxychains4 nmap -sT -PN -sV –open -n МЕТА 2>/dev/null
Приклад:
Як ми можемо переконатися, ми отримуємо нормальний висновок Nmap:
Тепер переходимо до найголовнішого – тестуємо, що справді використовується Tor. На мій погляд, найкращою перевіркою було б налаштування пасивного моніторингу на машині, яка використовується як ціль. Але зараз на це немає часу – до цього питання ми обов’язково повернемося згодом. А поки що перевіримо, що відсутні пакети, що відправляються безпосередньо до цільової машини.
Відкрийте два консольні вікна, у першому введіть:
sudo tcpdump -w scan-without-tor.cap
У другому вікні запустіть сканування (можете вибрати свою мету):
nmap -sT -PN -sV –open -n -p 80 185.26.122.50
Коли сканування закінчиться, зупиніть tcpdump у першому вікні.
Тепер знову, запустіть у першому вікні:
sudo tcpdump -w scan-with-tor.cap
А в другому:
proxychains4 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 адреса не розкривається:
Якщо ви спробували використовувати 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. То у вас на вибір дві опції:
Для цього відкрийте файл /etc/proxychains.conf.
Знайдіть там рядок
proxy_dns
І закоментуйте її, щоб вийшло:
#proxy_dns
Тут все набагато простіше. Нам потрібно додати вашу команду сканування –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, хоча моя реальна адреса інша.
Тут знову все досить просто, додайте до вашої команди –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
Знову заглянемо в логи веб-сервера і переконаємося, що сканування здійснюється з адреси 176.126.252.11, хоча моя реальна адреса інша.
Отже, можна зробити висновки, що програма ProxyChains-NG є універсальною і разом із нею можна використовувати різні програми. Наприклад, замість запропонованого варіанта з опціями –proxy можна було запускати так:
proxychains4 sqlmap -u МЕТА
proxychains4 wpscan -u МЕТА -e p,vt,u
ProxyChains-NG особливо зручний у використанні з програмами, які не мають опцій/функціоналу для підтримки проксі. Потрібно обов’язково тестувати, чи справді ви приховуєте свій IP. Оскільки, як показано на прикладі Nmap, навіть із релевантними опціями програми щось може піти негаразд. Якщо говорити не лише про анонімність при скануванні, а й анонімність взагалі, то це складна тема, оскільки є безліч способів «проколотися».