Завантаження lookup файлів в NGSIEM¶
Вибір cloud регіону
Не забудьте вказати правильний cloud регіону при підключенні до API: us-1, us-2, eu-1, us-gov-1. За замовчуванням використовується us-1.
Репозиторії NGSIEM¶
CrowdStrike Falcon NGSIEM підтримує різні репозиторії залежно від типу даних та підписки:
| Назва в UI | Опис | Необхідна підписка | Значення параметру |
|---|---|---|---|
| All | Всі дані подій від CrowdStrike та третіх сторін | N/A | search-all або all |
| Falcon | Дані endpoint подій та sensor events | Falcon Insight XDR | investigate_view або falcon |
| Third Party | Дані зібрані з третіх джерел | Falcon LogScale | third-party |
| IT Automation | Дані зібрані Falcon for IT модулем | Falcon for IT | falcon_for_it_view |
| Forensics | Triage дані від Falcon Forensics | Falcon Forensics | forensics_view або forensics |
| Parser Repository | Сховище парсерів | Falcon Next-Gen SIEM | 3pi_parsers |
Рекомендація для кастомних lookup файлів
Для завантаження власних lookup файлів рекомендується використовувати репозиторії all (за замовчуванням) або third-party.
Завантаження lookup файлу¶
from falconpy import NGSIEM
falcon = NGSIEM(
client_id="YOUR_CLIENT_ID",
client_secret="YOUR_CLIENT_SECRET"
)
# Завантажити lookup файл до репозиторію
response = falcon.upload_file(
lookup_file="threat_intel.csv",
repository="all"
)
if response['status_code'] == 200:
print("✓ Lookup файл завантажено успішно")
else:
print(f"✗ Помилка: {response['body']}")
Отримання lookup файлу¶
# Завантажити lookup файл з репозиторію
response = falcon.get_file(
repository="all",
filename="threat_intel.csv"
)
if response['status_code'] == 200:
# Зберегти файл локально
with open('downloaded_lookup.csv', 'wb') as f:
f.write(response['body'])
print("✓ Lookup файл завантажено")
Формат lookup файлів¶
Lookup файли зазвичай є CSV файлами з заголовками.
Приклад: threat_intel.csv¶
indicator,type,severity,description
evil.com,domain,high,C2 server
192.0.2.1,ipv4,critical,Known malicious IP
badfile.exe,filename,medium,Suspicious executable
Приклад: asset_inventory.csv¶
hostname,ip_address,owner,criticality
web-prod-01,10.0.1.10,IT Team,high
db-server-01,10.0.2.20,Database Team,critical
workstation-05,10.0.3.50,Sales,low
Створення та завантаження lookup файлу¶
import csv
from falconpy import NGSIEM
falcon = NGSIEM(
client_id="YOUR_CLIENT_ID",
client_secret="YOUR_CLIENT_SECRET"
)
# Створити lookup файл з даними
lookup_data = [
{'ip': '192.168.1.1', 'category': 'internal', 'department': 'IT'},
{'ip': '192.168.1.2', 'category': 'internal', 'department': 'HR'},
{'ip': '10.0.0.1', 'category': 'dmz', 'department': 'Web'},
]
# Записати в CSV
filename = 'ip_classification.csv'
with open(filename, 'w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=['ip', 'category', 'department'])
writer.writeheader()
writer.writerows(lookup_data)
# Завантажити до NGSIEM
response = falcon.upload_file(
lookup_file=filename,
repository="all" # або "third-party"
)
if response['status_code'] == 200:
print(f"✓ Lookup файл {filename} завантажено до репозиторію")
Обробка помилок¶
from falconpy import NGSIEM
falcon = NGSIEM(
client_id="YOUR_CLIENT_ID",
client_secret="YOUR_CLIENT_SECRET"
)
try:
response = falcon.upload_file(
lookup_file='lookup.csv',
repository="all"
)
if response['status_code'] != 200:
print(f"✗ Помилка завантаження: {response['body']}")
if 'errors' in response['body']:
for error in response['body']['errors']:
print(f" - {error.get('message', 'Unknown error')}")
else:
print("✓ Lookup файл завантажено успішно")
except FileNotFoundError:
print("✗ Файл не знайдено")
except Exception as e:
print(f"✗ Непередбачена помилка: {str(e)}")
Документація¶
Повна документація NGSIEM: https://www.falconpy.io/Service-Collections/NGSIEM.html