Refresh Sentinel dashboard and sensor coverage
This commit is contained in:
@@ -69,6 +69,15 @@ def event_metadata(payload):
|
||||
}
|
||||
|
||||
|
||||
def payload_value(payload, *names, default=None):
|
||||
if not isinstance(payload, dict):
|
||||
return default
|
||||
for name in names:
|
||||
if name in payload:
|
||||
return payload[name]
|
||||
return default
|
||||
|
||||
|
||||
@app.get("/")
|
||||
def overview():
|
||||
with db_connection() as connection, connection.cursor() as cursor:
|
||||
@@ -387,13 +396,55 @@ def device(machine_name):
|
||||
key=lambda entry: (entry["latest"], entry["count"]),
|
||||
reverse=True,
|
||||
)[:25]
|
||||
ransomware_raw = payload.get("RansomwareBeta") or payload.get("ransomwareBeta") or {}
|
||||
sensor_labels = {
|
||||
"security-process-4688": "Prozessstarts (Security 4688)",
|
||||
"powershell-script-block-4104": "PowerShell-Skriptblöcke (4104)",
|
||||
"sysmon-process-1": "Sysmon-Prozesse (1)",
|
||||
"security-file-audit-4663": "Datei-Auditing (4663)",
|
||||
}
|
||||
ransomware_sensors = [
|
||||
{
|
||||
"label": sensor_labels.get(payload_value(sensor, "Name", "name"), payload_value(sensor, "Name", "name", default="Unbekannter Sensor")),
|
||||
"enabled": payload_value(sensor, "Enabled", "enabled", default=False),
|
||||
"available": payload_value(sensor, "Available", "available", default=False),
|
||||
"state": payload_value(sensor, "State", "state", default="unknown"),
|
||||
"event_count": payload_value(sensor, "EventCount", "eventCount", default=0),
|
||||
}
|
||||
for sensor in payload_value(ransomware_raw, "Sensors", "sensors", default=[])
|
||||
]
|
||||
ransomware_beta = {
|
||||
"enabled": payload_value(ransomware_raw, "Enabled", "enabled", default=False),
|
||||
"state": payload_value(ransomware_raw, "State", "state", default="disabled"),
|
||||
"reason": payload_value(ransomware_raw, "Reason", "reason", default="Keine Ransomware-Beta-Daten verfuegbar."),
|
||||
"signals": [
|
||||
{
|
||||
"timestamp": payload_value(signal, "Timestamp", "timestamp", default="-"),
|
||||
"category": payload_value(signal, "Category", "category", default="Signal"),
|
||||
"process": payload_value(signal, "Process", "process", default="-"),
|
||||
"source": payload_value(signal, "Source", "source", default="-"),
|
||||
"confidence": payload_value(signal, "Confidence", "confidence", default="low"),
|
||||
}
|
||||
for signal in payload_value(ransomware_raw, "Signals", "signals", default=[])
|
||||
],
|
||||
"smbSessions": [
|
||||
{
|
||||
"clientComputerName": payload_value(session, "ClientComputerName", "clientComputerName", default="-"),
|
||||
"clientUserName": payload_value(session, "ClientUserName", "clientUserName", default="-"),
|
||||
"openFileCount": payload_value(session, "OpenFileCount", "openFileCount", default=0),
|
||||
"sessionId": payload_value(session, "SessionId", "sessionId", default="-"),
|
||||
}
|
||||
for session in payload_value(ransomware_raw, "SmbSessions", "smbSessions", default=[])
|
||||
],
|
||||
}
|
||||
return render_template(
|
||||
"device.html",
|
||||
report=report,
|
||||
event=event_metadata(payload),
|
||||
payload=payload,
|
||||
security_events=security_events,
|
||||
ransomware_beta=payload.get("RansomwareBeta") or payload.get("ransomwareBeta") or {},
|
||||
ransomware_beta=ransomware_beta,
|
||||
ransomware_sensors=ransomware_sensors,
|
||||
payload_pretty=json.dumps(payload, indent=2, ensure_ascii=False),
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user