Threat Hunting
Что такое threat hunting: определение, основные принципы, примеры и практические советы. Изучайте фундаментальной защите информации с подробными объяснениями для начинающих специалистов.
Threat Hunting
Что такое Threat Hunting?
Threat Hunting — это проактивный процесс поиска скрытых угроз в инфраструктуре организации, который основан на гипотезах о возможных атаках и использует различные техники анализа данных.
Ключевые принципы
- Проактивность — поиск угроз до их обнаружения системами
- Гипотезно-ориентированный подход — основан на гипотезах о возможных атаках
- Анализ данных — глубокий анализ больших объемов данных
- Непрерывность — постоянный процесс поиска
Методологии Threat Hunting
MITRE ATT&CK Framework
Тактики, техники и процедуры атак
Основные тактики:
- Initial Access — первоначальный доступ
- Execution — выполнение
- Persistence — постоянство
- Privilege Escalation — повышение привилегий
- Defense Evasion — уклонение от защиты
- Credential Access — доступ к учетным данным
- Discovery — разведка
- Lateral Movement — боковое перемещение
- Collection — сбор данных
- Command and Control — управление и контроль
- Exfiltration — утечка данных
- Impact — воздействие
Пример техники:
T1055 - Process Injection
Описание: Внедрение кода в процесс
Индикаторы:
- Создание процессов с подозрительными параметрами
- Изменения в памяти процессов
- Необычные сетевые соединения
Diamond Model
Модель анализа киберугроз
Компоненты модели:
- Adversary — противник
- Capability — возможности
- Infrastructure — инфраструктура
- Victim — жертва
Связи:
- Adversary → Capability — противник использует возможности
- Capability → Infrastructure — возможности используют инфраструктуру
- Infrastructure → Victim — инфраструктура атакует жертву
- Victim → Adversary — жертва предоставляет данные противнику
Cyber Kill Chain
Цепочка кибератаки
Этапы атаки:
- Reconnaissance — разведка
- Weaponization — создание оружия
- Delivery — доставка
- Exploitation — эксплуатация
- Installation — установка
- Command and Control — управление
- Actions on Objectives — достижение целей
Индикаторы компрометации (IOC)
Типы IOC
Различные типы индикаторов компрометации
IP-адреса и домены:
# Подозрительные IP-адреса
suspicious_ips:
- "192.168.1.100"
- "10.0.0.50"
- "172.16.0.25"
# Подозрительные домены
suspicious_domains:
- "malware.example.com"
- "phishing-site.org"
- "command-control.net"
Хеши файлов:
# MD5 хеши вредоносных файлов
malware_hashes:
md5:
- "d41d8cd98f00b204e9800998ecf8427e"
- "5d41402abc4b2a76b9719d911017c592"
sha1:
- "da39a3ee5e6b4b0d3255bfef95601890afd80709"
sha256:
- "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
Сетевые индикаторы:
# Подозрительные порты
suspicious_ports:
- 4444 # Metasploit
- 6666 # Backdoor
- 31337 # Elite port
# Подозрительные протоколы
suspicious_protocols:
- "ICMP" # Tunneling
- "DNS" # Data exfiltration
Анализ IOC
Методы анализа индикаторов компрометации
Сбор данных:
// Сбор IOC из различных источников
async function collectIocs() {
const iocs = {
ips: [],
domains: [],
hashes: [],
urls: [],
};
// Сбор из файрвола
const firewallLogs = await collectFirewallLogs();
iocs.ips.push(...extractIps(firewallLogs));
// Сбор из DNS логов
const dnsLogs = await collectDnsLogs();
iocs.domains.push(...extractDomains(dnsLogs));
// Сбор из антивируса
const avLogs = await collectAvLogs();
iocs.hashes.push(...extractHashes(avLogs));
return iocs;
}
Корреляция IOC:
// Корреляция IOC с событиями
function correlateIocsWithEvents(iocs, events) {
const matches = [];
for (const event of events) {
for (const [iocType, iocList] of Object.entries(iocs)) {
if (iocType === "ips" && iocList.includes(event.srcIp)) {
matches.push({
event: event,
iocType: iocType,
iocValue: event.srcIp,
});
} else if (iocType === "domains" && iocList.includes(event.domain)) {
matches.push({
event: event,
iocType: iocType,
iocValue: event.domain,
});
}
}
}
return matches;
}
Инструменты Threat Hunting
SIEM платформы
Использование SIEM для поиска угроз
Splunk SPL:
# Поиск подозрительной активности
index=security sourcetype=auth
| where action="failed" AND user!="
| stats count by user, src_ip
| where count > 10
| sort -count
# Анализ сетевого трафика
index=network sourcetype=firewall
| where action="allow" AND dest_port=22
| stats count by src_ip, dest_ip
| where count > 100
| sort -count
Elastic SIEM:
{
"query": {
"bool": {
"must": [
{ "term": { "event.category": "authentication" } },
{ "term": { "event.outcome": "failure" } }
],
"filter": {
"range": {
"@timestamp": {
"gte": "now-1h"
}
}
}
}
},
"aggs": {
"failed_logins": {
"terms": {
"field": "user.name",
"size": 10
}
}
}
}
Специализированные инструменты
Инструменты для анализа данных
YARA
Правила для обнаружения вредоносного ПО
rule SuspiciousProcess {
meta:
description = "Detects suspicious process creation"
author = "Threat Hunter"
date = "2024-01-15"
strings:
$cmd1 = "powershell.exe -enc" ascii
$cmd2 = "cmd.exe /c" ascii
$cmd3 = "rundll32.exe" ascii
condition:
2 of ($cmd*)
}
Sigma
Правила для SIEM систем
title: Suspicious PowerShell Execution
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects suspicious PowerShell execution patterns
author: Threat Hunter
date: 2024/01/15
modified: 2024/01/15
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\powershell.exe'
CommandLine|contains: "-enc"
condition: selection
falsepositives:
- Legitimate PowerShell scripts using encoded commands
level: medium
Аналитические инструменты
Инструменты для анализа данных
Jupyter Notebooks
Интерактивный анализ данных
// Анализ данных с помощью JavaScript
const fs = require("fs");
const csv = require("csv-parser");
// Загрузка данных
async function loadSecurityEvents() {
return new Promise((resolve, reject) => {
const results = [];
fs.createReadStream("security_events.csv")
.pipe(csv())
.on("data", (data) => results.push(data))
.on("end", () => resolve(results))
.on("error", reject);
});
}
// Анализ подозрительной активности
async function analyzeSuspiciousActivity() {
const df = await loadSecurityEvents();
const suspiciousActivity = df.filter(
(row) => row.event_type === "failed_login" && parseInt(row.count) > 10
);
// Группировка по пользователям
const userStats = {};
suspiciousActivity.forEach((row) => {
if (!userStats[row.user]) {
userStats[row.user] = 0;
}
userStats[row.user] += parseInt(row.count);
});
// Вывод результатов
console.log("Failed Login Attempts by User:");
Object.entries(userStats)
.sort(([, a], [, b]) => b - a)
.forEach(([user, count]) => {
console.log(`${user}: ${count} attempts`);
});
return suspiciousActivity;
}
R для анализа данных
Статистический анализ
# Загрузка данных
library(dplyr)
library(ggplot2)
security_data <- read.csv('security_events.csv')
# Анализ аномалий
anomalies <- security_data %>%
filter(event_type == 'network_connection') %>%
group_by(src_ip) %>%
summarise(
connection_count = n(),
unique_dest_ports = n_distinct(dest_port),
avg_bytes = mean(bytes)
) %>%
filter(connection_count > 1000 | unique_dest_ports > 50)
# Визуализация
ggplot(anomalies, aes(x = connection_count, y = unique_dest_ports)) +
geom_point() +
labs(title = 'Network Anomalies', x = 'Connection Count', y = 'Unique Ports')
Процесс Threat Hunting
Планирование
Планирование охоты на угрозы
Этапы планирования:
- Определение целей — что искать
- Выбор гипотез — на основе каких предположений
- Подготовка данных — какие данные нужны
- Выбор инструментов — какие инструменты использовать
Пример планирования:
hunt_plan:
objective: "Detect lateral movement in the network"
hypothesis: "Attackers use RDP for lateral movement"
data_sources:
- "Windows Event Logs"
- "Network Traffic"
- "Authentication Logs"
tools:
- "Splunk"
- "Wireshark"
- "Custom Scripts"
timeframe: "30 days"
Выполнение
Выполнение охоты на угрозы
Методы поиска:
- Signature-based — поиск по сигнатурам
- Anomaly-based — поиск аномалий
- Behavioral — поведенческий анализ
- Statistical — статистический анализ
Пример выполнения:
// Поиск подозрительной активности RDP
async function huntRdpLateralMovement() {
// 1. Поиск множественных RDP подключений
const rdpConnections = await searchEvents({
query: "event_type=rdp_connection",
timeframe: "30d",
});
// 2. Анализ паттернов подключений
const connectionPatterns = analyzeConnectionPatterns(rdpConnections);
// 3. Поиск аномалий
const anomalies = findAnomalies(connectionPatterns);
// 4. Расследование аномалий
for (const anomaly of anomalies) {
await investigateAnomaly(anomaly);
}
return anomalies;
}
Анализ результатов
Анализ результатов охоты
Методы анализа:
- Correlation Analysis — корреляционный анализ
- Timeline Analysis — анализ временной линии
- Network Analysis — сетевой анализ
- File Analysis — анализ файлов
Пример анализа:
// Анализ результатов охоты
function analyzeHuntResults(results) {
const uniqueIps = new Set(results.map((r) => r.srcIp));
const analysis = {
totalEvents: results.length,
uniqueIps: uniqueIps.size,
timeRange: {
start: Math.min(...results.map((r) => new Date(r.timestamp).getTime())),
end: Math.max(...results.map((r) => new Date(r.timestamp).getTime())),
},
suspiciousPatterns: [],
};
// Поиск подозрительных паттернов
for (const result of results) {
if (isSuspicious(result)) {
analysis.suspiciousPatterns.push(result);
}
}
return analysis;
}
Лучшие практики
Рекомендации
- Начните с гипотез — основывайтесь на конкретных предположениях
- Используйте данные — анализируйте реальные данные
- Документируйте — ведите записи о процессе
- Сотрудничайте — работайте в команде
- Учитесь — постоянно развивайте навыки
Чего избегать
- Слепого поиска — не ищите без конкретной цели
- Игнорирования контекста — учитывайте бизнес-контекст
- Отсутствия документации — документируйте все находки
- Игнорирования ложных срабатываний — проверяйте результаты
Метрики и KPI
Операционные метрики
- Hunt Frequency — частота проведения охоты
- Time per Hunt — время на одну охоту
- Data Sources Used — количество используемых источников
- Tools Utilized — количество используемых инструментов
Качественные метрики
- Threats Detected — количество обнаруженных угроз
- False Positive Rate — уровень ложных срабатываний
- Hunt Success Rate — процент успешных охот
- Coverage — покрытие инфраструктуры
Бизнес-метрики
- Risk Reduction — снижение рисков
- Cost Savings — экономия затрат
- Compliance — соответствие требованиям
- Business Impact — воздействие на бизнес
Заключение
Threat Hunting — это критически важный процесс для обеспечения безопасности организации. Успешная охота на угрозы требует:
- Структурированного подхода — четкой методологии
- Правильных инструментов — подходящих инструментов анализа
- Квалифицированной команды — обученных специалистов
- Непрерывного совершенствования — постоянного развития процессов
Помните: Threat Hunting — это не разовое мероприятие, а постоянный процесс поиска и анализа угроз. Успех зависит от правильного понимания методологий, качественного использования инструментов и постоянного развития навыков.