Как мы знаем, посредством интернет-протокола компьютерные сети объединены в глобальную сеть Интернет, где каждый узел имеет уникальный сетевой адрес. В четвертой версии протокола (IPv4) используются четырёхбайтные адреса. Например, IP-адресом портала mail.ru является числовая последовательность 217.69.139.200. Однако, людям для идентификации сетевых ресурсов удобнее работать с текстовыми записями - URLами. Система доменных имен (DNS) связывает цифровые IP-адреса узлов с их доменными именами. Подробнее о доменных именах и про URL читаем урок: URL.
Для администрирования сетевых соединений в Windows и других ОС используется специальный файл hosts. Файл hosts предназначен для содержания базы приоритетных доменных имен и трансляции их в сетевые адреса хостов. Во всемирной паутине (www) хостом является веб-сервер сайта, отправляющий клиенту контент запрашиваемых страниц. Клиент, это - браузер установленный на компьютере пользователя.
Получив от пользователя запрос содержащий доменное имя ресурса, браузер сначала сопоставляет его с записями в файле hosts. Если доменное имя в файле не найдено, просматривается DNS-кэш браузера. DNS-кэш формируется из адресов посещаемых пользователем ресурсов. Использование такого накопителя ускоряет соединение с известными браузеру страницами.
Не найдя доменного имени в указанных директориях браузер перенаправляет запрос DNS-серверу. Приложение DNS-сервера преобразует доменное имя в соответствующий IP-адрес по которому и производится соединение. Так выполняется прямой запрос с трансляцией имени хоста в его IP-адрес.
Очевидно, что редактируя файл hosts можно управлять сетевыми соединениями.
По умолчанию файл hosts содержит только комментарии поясняющие правила внесения в него записей. На скриншоте показан фрагмент файла в Windows 7:
Этот файл находится в системном разделе диска - С:\Windows\System32\drivers\etc\hosts. Открыв его стандартным приложением "Блокнот" можно прописывать нужные нам редиректы - перенаправления доменных имен.
Блокирование доступа к определенным ресурсам понадобится, например, при родительском контроле. Открыв журнал или историю просмотров в браузере можно выявить нежелательные для посещения несовершеннолетними доменные имена узлов.
Стандартное доменное имя localhost зарезервировано для частных адресов и определяет локальный компьютер пользователя с IP-адресом 127.0.0.1. Если сопоставить этому адресу доменное имя, запрос будет перенаправлен на локальный компьютер пользователя и соединения с целевым ресурсом не получится.
Запустим "Блокнот" с правами администратора:
и откроем в нем файл hosts, выбрав в папке "etc" все типы файлов:
Теперь, дополним содержимое файла такими, например, записями:
Сохраняем файл с изменениями и закрываем его. Так можно перекрыть доступ к некоторым ресурсам.
Также можно сделать перенаправления сетевых соединений на заданные IP-адреса:
С такими редиректами в файле hosts пользователь вместо желанного сайта знакомств попадает на популярную ярмарку вакансий, например. Понятно, что для переадресации запросов нужно знать IP-адреса целевых хостов.
Посмотрим как можно определить сетевой адрес узла по его доменному имени.
Транслируем доменное имя в IP-адрес средствами операционной системы. С правами администратора вызываем командную строку. Для этого в строке поиска окна "Пуск" набираем cmd и из контекстного меню запускаем от админа:
Вписываем команду ping avito.ru, нажимаем клавишу "Enter" и получаем IP-адрес ресурса:
Существует множество сервисов для сопоставления доменных имен с IP-адресами. Один из популярных: https://goo.gl/PjfAhI.
Записи с подменой IP-адресов в файле hosts для блокирования доступа к ресурсам или перенаправления на поддельные и посторонние сайты могут производиться и вредоносными программами запущенными на локальном компьютере.
Когда браузер не открывает доступные ранее страницы или перебрасывает на несоответствующие доменным именам сайты стоит проверить файл hosts и удалить в нем посторонние записи. Однако, вирусописатели для маскировки инфицированного файла hosts применяют некоторые дополнительные уловки.
Попробуем самостоятельно модифицировать истинный файл hosts и заменить его фальшивым подобно известным сценариям.
От имени администратора откроем новый файл приложением "Блокнот" и скопируем в него содержимое файла hosts. Сохраним этот файл в папке С:\Windows\System32\drivres\etc с именем hosts и расширением *txt:
Теперь откроем истинный файл hosts и пропишем в нем редиректы как на приведенных выше примерах. Сохраним изменения и закроем. Затем выделим файл, пройдем в его свойства и назначим атрибут "Скрытый":
Истинный файл hosts станем невидимым в папке "etc" и будет выполнять прописанные в нем сетевые соединения. А пользователь, открыв в папке копию оригинального файла увидит в нем только комментарии обозначенные значком #.
Обнаружить подмену несложно. Достаточно в параметрах папок отключить опцию скрытия расширений для файлов:
чтобы выявить текстовый hosts. Истинный файл hosts, как известно, не имеет расширения.
Копию hosts в конечную папку etc можно сохранить и без расширения, заменив в имени файла вторую букву на русскую "о". Для выявления подмены в этом случае, в интерфейсе настроек папок, который открывается через "Пуск"-"Панель управления"-"Параметры папок" нужно включить функцию отображения скрытых файлов и папок:
и в результате в папке отобразятся оба файла:
Удаляем фальшивый и в истинном файле убираем ненужные записи.
Также, измененная посторонней программой копия файла hosts может находится и не в папке "etc". При этом в реестре прописывается директория обращения к ней.
Сочетанием клавиши "Windows" с буквой "R" откроем окно "Выполнить":
и командой "regedit" пройдем в реестр. В реестре проследуем по ключу: HKEY_LOCAL_MACHINE - SYSTEM - CurrentControlSet - services - Tcpip. В этой ветке, в разделе "Parameters" увидим путь к папке с файлом hosts:
В таком случае, изменяем значение параметра "DataBasePath" - прописываем правильный путь к оригинальному файлу:
Перезагружаем компьютер для сохранения правки в реестре и удаляем модифицированный дубликат. Теперь, браузер будет обращаться к истинному файлу hosts в папке С:\Windows\System32\drivers\etc.
Таким образом, мы ознакомились с трюками которые применяются для фальсификации сопоставлений доменных имен использующих подмену файла hosts.
Для ускорения подключений к избранным ресурсам и блокировки доступа к нежелательным грамотно редактируем файл hosts - управляем сетевыми соединениями.