Робота з детекціями¶
Вибір cloud регіону
Не забудьте вказати правильний cloud регіон при підключенні до API: us-1, us-2, eu-1, us-gov-1. За замовчуванням використовується us-1.
Пошук нових детекцій¶
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