Перейти до змісту

Робота з детекціями

Вибір cloud регіону

Не забудьте вказати правильний cloud регіон при підключенні до API: us-1, us-2, eu-1, us-gov-1. За замовчуванням використовується us-1.

falcon = Alerts(base_url="https://api.eu-1.crowdstrike.com")

Пошук нових детекцій

from falconpy import Alerts

falcon = Alerts(
    client_id="YOUR_CLIENT_ID",
    client_secret="YOUR_CLIENT_SECRET"
)

# Знайти нові детекції
response = falcon.query_alerts_v2(
    filter="status:'new'",
    limit=50,
    sort="created_timestamp.desc"
)

alert_ids = response['body']['resources']
print(f"Знайдено {len(alert_ids)} нових детекцій")

Отримання деталей детекцій

# Отримати детальну інформацію
details = falcon.get_alerts_v2(composite_ids=alert_ids)

for alert in details['body']['resources']:
    print(f"""
    ID: {alert['composite_id']}
    Hostname: {alert['device']['hostname']}
    Severity: {alert['severity_name']}
    Статус: {alert['status']}
    Тактика: {alert.get('tactic', 'N/A')}
    Техніка: {alert.get('technique', 'N/A')}
    Опис: {alert.get('description', 'N/A')}
    """)

Оновлення статусу детекцій

# Змінити статус на "in_progress"
response = falcon.update_alerts_v3(
    composite_ids=alert_ids,
    update_status="in_progress",
    assign_to_user_id="analyst_uuid",
    add_comment="Розслідування розпочато"
)

if response['status_code'] == 200:
    print("✓ Детекції оновлено")

Доступні статуси:

  • new - нова детекція
  • in_progress - в процесі обробки
  • reopened - відкрито повторно
  • closed - закрито

Пошук критичних детекцій

# Знайти критичні детекції
response = falcon.query_alerts_v2(
    filter="status:'new'+severity:>=70",
    limit=100,
    sort="created_timestamp.desc"
)

alert_ids = response['body']['resources']

if alert_ids:
    details = falcon.get_alerts_v2(composite_ids=alert_ids)

    for alert in details['body']['resources']:
        print(f"""
        [CRITICAL] {alert['device']['hostname']}
        Тактика: {alert.get('tactic', 'N/A')}
        Техніка: {alert.get('technique', 'N/A')}
        """)

Масове оновлення статусу

# Знайти всі непризначені детекції
unassigned = falcon.query_alerts_v2(
    filter="status:'new'+assigned_to_name:null",
    limit=50
)

alert_ids = unassigned['body']['resources']

if alert_ids:
    # Призначити аналітику
    falcon.update_alerts_v3(
        composite_ids=alert_ids,
        update_status="in_progress",
        assign_to_user_id="ANALYST_UUID",
        add_comment="Автоматично призначено для розслідування"
    )
    print(f"✓ Призначено {len(alert_ids)} детекцій")

Приклади FQL фільтрів

# Нові детекції високої важливості
filter="status:'new'+severity:>=70"

# Детекції за конкретною тактикою
filter="tactic:'Credential Access'"

# Детекції на Windows хостах
filter="device.platform_name:'Windows'"

# Комбінований фільтр
filter="status:'new'+severity:>=70+created_timestamp:>'2024-01-01T00:00:00Z'"

Обробка помилок

response = falcon.query_alerts_v2(filter="status:'new'")

if response['status_code'] != 200:
    print(f"✗ Помилка: {response['status_code']}")
    if 'errors' in response['body']:
        for error in response['body']['errors']:
            print(f"  - {error['message']}")
else:
    alert_ids = response['body']['resources']
    print(f"✓ Знайдено {len(alert_ids)} детекцій")

Документація

Повна документація Alerts API: https://www.falconpy.io/Service-Collections/Alerts.html