
- •Благодарности
- •Список использованных сокращений
- •От издательства
- •Введение
- •Глава 1. Начало
- •Как провести аудит законно?
- •Методология взлома
- •Резюме
- •Глава 2. Получение информации из открытых источников
- •Введение
- •Что искать?
- •Использование Google для сбора информации
- •Ограничение поиска одним сайтом
- •Поиск файлов определенного типа
- •Поиск определенных частей сайта
- •Google Hacking
- •Поиск информации о людях
- •Архивные данные
- •Netcraft
- •Получение информации о домене
- •Автоматизация процесса
- •FOCA
- •Сбор базы данных адресов e-mail
- •recon-ng
- •Упорядочить информацию
- •Резюме
- •Глава 3. Получение информации от сетевых сервисов
- •Введение
- •Сканирование портов
- •Определение активных хостов
- •UDP-сканирование
- •NMAP
- •Получение информации от DNS-сервера
- •Типы записей
- •Взаимодействие с DNS-сервером
- •MX-записи
- •NS-запросы
- •Перебор имен
- •Перебор обратных записей
- •Передача зоны DNS
- •Получение информации с использованием SNMP
- •Получение информации с использованием NetBIOS
- •Null session
- •Работа с электронной почтой
- •Анализ баннеров
- •Получение информации от NTP-сервера
- •Поиск уязвимостей
- •Резюме
- •Глава 4. Атаки на веб-приложения
- •Знакомство с сookie
- •Межсайтовый скриптинг (XSS)
- •Включение локальных или удаленных файлов
- •SQL-инъекции
- •Резюме
- •Глава 5. Социальная инженерия
- •На кого обратить внимание?
- •Фазы атаки
- •Манипулирование людьми
- •Типы атак
- •Social-Engineer Toolkit
- •Резюме
- •Глава 6. Получаем пароли
- •Основные методы
- •Работа со списками паролей
- •Онлайн-атаки
- •Радужные таблицы
- •Резюме
- •Глава 7. Беспроводные сети
- •Краткий обзор Wi-Fi
- •Bluetooth
- •Резюме
- •Глава 8. Перехват информации
- •Пассивный перехват трафика
- •Активный перехват
- •Резюме
- •Глава 9. Обход систем безопасности
- •Системы обнаружения атак
- •Брандмауэры
- •Приманки
- •Резюме
- •Глава 10. Вредоносные программы
- •Вирусы
- •Черви
- •Шпионы
- •Рекламное ПО
- •Троянские кони
- •Практическая часть
- •Резюме
- •Глава 11. Metasploit Framework
- •Интерфейс
- •Вспомогательные модули
- •Полезная нагрузка
- •Практические навыки
- •Резюме
- •Глава 12. Передача файлов
- •TFTP
- •Загрузка файлов с использованием скриптов
- •Резюме
- •Глава 13. Превышение привилегий
- •Локальное повышение прав в Linux
- •Локальное повышение прав в Windows
- •Повышение привилегий в случае некорректной конфигурации прав доступа
- •Резюме
- •Глава 14. Перенаправление портов и туннелирование
- •Перенаправление портов
- •SSH-туннелирование
- •proxychains
- •Резюме
- •Глава 15. Переполнение буфера
- •Атаки, направленные на переполнение буфера
- •Введение
- •Что такое переполнение буфера?
- •Программы, библиотеки и бинарные файлы
- •Угрозы
- •Основы компьютерной архитектуры
- •Организация памяти
- •Разбиение стека (Smashing the stack)
- •Перезапись указателя фрейма
- •Атака возврата в библиотеку
- •Переполнение динамической области памяти
- •Пример нахождения уязвимости переполнения буфера
- •Резюме
- •Глава 16. Собирая все воедино
- •Стандарт выполнения тестов на проникновение
- •Подготовительная фаза
- •Договор о проведении работ
- •Получение разрешения
- •Сбор данных
- •Анализ уязвимостей
- •Моделирование
- •Эксплуатация уязвимостей
- •Постэксплуатационный этап
- •Отчет
- •Зачистка
- •Введение
- •Глава 17. Личный пример
- •Глава 18. Бумажная работа
- •Политика безопасности
- •Стандарты
- •Процедуры
- •Инструкции
- •Техническая документация
- •Глава 19. Обучение и тренировки
- •Тренировки
- •Глава 20. Защита от утечки информации
- •Глава 21. Брандмауэры
- •Глава 22. Системы обнаружения вторжения (IDS)
- •Глава 23. Виртуальные защищенные сети (VPN)
- •Компоненты виртуальной частной сети
- •Безопасность VPN
- •Создание VPN из компонентов с открытым исходным кодом
- •Заключение
14 Перенаправление портов и туннелирование
Туннелирование — это процесс, в ходе которого создается логическое соединение между конечными точками сети. Его суть заключается в том, что происходит инкапсуляция пакетов одного типа трафика в пакеты другого типа. При этом инкапсулируемые данные должны находиться на том же или более низком уровне модели OSI.
Перенаправление портов — это метод перенаправления данных с определенного порта локального компьютера на удаленный и наоборот. Используется в защищенных брандмауэром сетях.
В этой главе мы рассмотрим некоторые варианты перенаправления и туннелирования и приведем практические примеры их использования. Начнем с самого простого — перенаправления портов.
Перенаправление портов
Перенаправление портов — самый простой способ управления трафиком. Его суть заключается в том, что мы принимаем сетевые данные на машине с одним IPадресом и портом, а затем перенаправляем на другой IP-адрес и порт. В Linux есть замечательная утилита, которая поможет сделать это просто и быстро.
Установим rinetd и добавим в ее конфигурационный файл IP-адрес и порт подключения, а также IP-адрес и порт перенаправления трафика.
root@kali:~# apt-get install rinetd Reading package lists... Done Building dependency tree
Reading state information... Done
The following NEW packages will be installed: rinetd
...
root@kali:~# echo "129.186.225.128 21 91.189.94.40 443" >> /etc/rinetd.conf root@kali:~# systemctl start rinetd
В нашем случае клиентский компьютер может соединяться за пределами периметра только с сервисами, работающими на порте 21, как показано на рис. 14.1. Однако

180 Глава 14 • Перенаправление портов и туннелирование
после наших действий, обратившись к компьютеру Б, он будет перенаправлен на сервер В к сервису, работающему на порте 443.
А |
:21 |
45.56.78.1:21 |
|
|
|||
:21 |
:21 |
|
В |
10.0.5.20 |
|
91.189.94.40.443 |
|
А а а |
|
||
|
|
|
|
:443 |
Б а а а а |
|
|
|
а 21 |
|
|
|
а |
|
|
|
129.186.225.128:21 |
Б |
|
|
а а |
|
Рис. 14.1. Поток данных без перенаправления
А |
45.56.78.1:21 |
|
|
|
|
|
В |
10.0.5.20 |
|
|
|
|
91.189.94.40.443 |
||
А а а |
|
||
Б а а а а |
|
||
https://129.168.225.128:21 |
|
||
|
а 21 |
|
|
:443 |
а |
Б |
|
|
129.186.225.128:21 |
а а
Рис. 14.2. Поток данных после перенаправления
SSH-туннелирование
У SSH есть множество достоинств и преимуществ, но в этом разделе мы рассмотрим только возможность создания на его основе защищенных туннелей. Схема сети в данном примере будет точно такой же, как и в предыдущем случае. Только теперь для выполнения той же задачи мы будем использовать SSH.
root@office:~# ssh 129.186.225.128 –p 21 -L 8080:91.198.94.40:443
В нашем примере мы сначала указали локальный адрес и порт, а затем адрес и порт удаленного сервиса.

SSH-туннелирование 181
|
45.56.78.1:21 |
|
|
10.0.5.20 |
|
|
|
91.189.94.40.443 |
|||
А а а |
Б а … а€† а‡ ˆа |
||
|
|||
|
‰ …ƒ ƒ Š а 21 |
||
|
ƒ ‹Š ƒ € ‰ ‰ аŠ |
129.186.225.128:21 ssh 129.186.225.128 -p 21 -L 8080:91.189.40:443 а а € ‚ƒ
https://localhost:8080
Рис. 14.3. Локальное перенаправление портов с использованием SSH
После создания SSH-туннеля мы можем соединяться с удаленным сервером, несмотря на запрет брандмауэра атакованной организации. А учитывая то, что туннель построен с использованием SSH, администратор не сможет просмотреть содержимое пакетов, поскольку все данные будут зашифрованы.
Как мы уже упоминали выше, SSH обладает достаточно большими возможностями и, помимо локального, поддерживает также удаленное перенаправление портов.
Представьте, что вам удалось получить доступ к удаленному компьютеру, получить хеши паролей, а по ним узнать и сами пароли. Также на данном компьютере запущен VNC-сервис, использующий стандартный порт 5500. Вы сделали обратный туннель от взломанного компьютера к своему и перенаправили через него порт на свой компьютер, пусть это будет порт 55555. Теперь вы можете соединиться со своим локальным интерфейсом через порт 55555 и попасть на удаленный компьютер через SSH-туннель.
root@office:~# ssh 129.186.225.128 -R 55555:192.168.225.128:5500
10.0.5.20 |
|
А а а |
|
Б а а а |
а |
а 21 |
|
а |
|
ssh 129.186.225.128 -p 21 -R 55555:127.0.0.1:5500 |
129.186.225.128:21 |
а а |
https://localhost:8080 |
vncviewer localhost::55555 |
|
Рис. 14.4. Удаленное перенаправление портов с использованием SSH

182 Глава 14 • Перенаправление портов и туннелирование
А теперь нам предстоит самая интересная часть — динамическое перенаправление портов, позволяющее создать на локальном компьютере своего рода прокси-сервер, через который может осуществляться туннелирование трафика.
Вводные данные немного изменятся — представьте, что вам удалось взломать сервер, находящийся в DMZ-сети и имеющий доступ в публичную сеть через порт 80. Теперь создадим на своем компьютере SOCKS 4 прокси, работающий с использованием порта 8080 и перенаправляющий трафик через SSH-туннель к любому из серверов в DMZ-сети.
10.0.10.3 |
|
|
|
10.0.10.2 |
|
|
А а а |
Б а а а а |
|
|
|
|
а 80 |
|
|
|
|
|
|
а |
10.0.10.4 |
DMZ |
129.186.225.128:21 |
|
а а
ssh =D 8080 =p 5500 10.0.10.2
Рис. 14.5. Динамическое перенаправление портов с использованием SSH
proxychains
Это бесплатная утилита, позволяющая любой программе, работа которой основана на TCP, пересылать свои данные через цепочку прокси-серверов, таких как TOR, SOCKS 4, SOCKS 5 или HTTPS.
Она может пригодиться для тех случаев, когда вы захотите перенаправить свой трафик через несколько промежуточных узлов — например, так, как показано на рис. 14.6.
В |
SOCKS4 |
TOR |
а а |
|
|
||
|
|
|
Рис. 14.6. Пример цепочки прокси-серверов