Einleitung
In diesem Dokument werden die grundlegenden Suchanfragen auf orbitaler Ebene für die Bedrohungsanalyse beschrieben.
Voraussetzungen
Anforderungen
Cisco empfiehlt, dass Sie über Kenntnisse im Hinblick auf das Verständnis von Bedrohungen und Malware sowie grundlegende Kenntnisse von SQL-Tabellen (Structured Query Language) verfügen.
Verwendete Komponenten
Die Informationen in diesem Dokument basierend auf folgenden Software- und Hardware-Versionen:
- Secure Endpoint Connector Version 7.1.5 oder höher für Windows
- Secure Endpoint Connector Version 1.16 oder höher für Mac
- Secure Endpoint Connector Version 1.17 oder höher für Linux
- Secure Endpoint-Benutzer muss die Rolle des Administrators zugewiesen werden, um Orbital bereitzustellen.
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle kennen.
Hintergrundinformationen
Die benutzerdefinierten Abfragen müssen Ihnen dabei helfen, schnell die Leistungsfähigkeit von Orbital und Soquery für die Jagd nach Bedrohungen zu erlernen.
Orbital verwendet zusätzlich zu Orbital-spezifischen Tabellen osquerys-Lagertabellen. Die von Orbital zurückgegebenen Ergebnisse können an andere Anwendungen gesendet werden, z. B. Secure Endpoint, Secure Malware Analytics und SecureX Threat Response, und können in Remote Data Stores (RDS) wie Amazon S3, Microsoft Azure und Splunk gespeichert werden.
Verwenden Sie die Seite Orbital Investigate (Orbitale Untersuchung), um Live-Abfragen von Endpunkten zu erstellen und auszuführen, um weitere Informationen von diesen zu sammeln. Orbital verwendet osquery, mit dem Sie Ihre Geräte wie eine Datenbank mit grundlegenden SQL-Befehlen abfragen können.
Hier ein einfaches Beispiel: SELECT column1, column2 FROM table1, table2 WHERE column2='value'.
In diesem Beispiel sind column1 und column2 die Feldnamen der Tabelle, aus der Sie Daten auswählen möchten. Verwenden Sie folgende Syntax, um alle in der Tabelle verfügbaren Felder auszuwählen: WÄHLEN SIE * AUS Tabelle 1.
Zugriff
Open Orbital direkt an diesen Standorten:
Nordamerika - https://orbital.amp.cisco.com
Europa - https://orbital.eu.amp.cisco.com
Asien-Pazifik-Raum - https://orbital.apjc.amp.cisco.com
ODER
Wählen Sie in der Konsole für sichere Endgeräte das betroffene Hostsystem aus, und klicken Sie auf Investigate in Orbital (In Orbit untersuchen).

Es gibt Optionen für die Verwendung des orbital-Katalogs (Klicken Sie auf Durchsuchen) oder die Eingabe der benutzerdefinierten Abfragen unter Custom SQL, wie erwähnt:

Benutzerdefinierte Abfragen
Anmerkung: Das Hostsystem befindet sich im Labornetzwerk und versucht, das System/Netzwerk nicht zu beschädigen.
1. Startelemente
Startelemente können von Angreifern ausgenutzt werden, um die Persistenz auf einem kompromittierten System aufrechtzuerhalten. Das bedeutet, dass die bösartige Software weiterhin ausgeführt wird oder bei jedem Systemneustart automatisch neu gestartet wird. Im nächsten Beispiel wird Qakbot.exe auf dem Hostsystem ausgeführt.
SELECT name, path, args, source, type, status, username
FROM startup_items;

2. Sha256 Hashes von laufenden Prozessen
SHA256-Hashes sind nicht automatisch mit Prozessen in ihrem natürlichen Zustand verknüpft. Sicherheitssoftware und Systemüberwachungstools können jedoch den SHA256-Hash eines laufenden Prozesses der ausführbaren Datei berechnen, um deren Integrität und Authentizität zu überprüfen.
SELECT
p.pid, p.name, p.path, p.cmdline, p.state, h.sha256
FROM processes p
INNER JOIN hash h
ON p.path=h.path;


Wenn der zugehörige Hash einer Datei schädlich ist, können Sie sich mit dieser Abfrage identifizieren.
3. Prozess mit Netzwerkverbindungen
Prozesse mit Netzwerkverbindungen sind Programme oder Systemdienste, die die Netzwerkschnittstelle aktiv nutzen, um mit anderen Geräten in einem Netzwerk oder über das Internet zu kommunizieren.
SELECT
DISTINCT pos.pid, p.name, p.cmdline, pos.local_address, pos.local_port, pos.remote_address, pos.remote_port
FROM processes p
JOIN process_open_sockets pos USING (pid)
WHERE
pos.remote_address NOT IN ("", "0.0.0.0", "127.0.0.1", "::", "::1", “0");

4. Privilegierter Prozess mit Nicht-Localhost-Netzwerkverbindung
Ausführung von Programmen oder Diensten mit erhöhten Berechtigungen (wie denen eines Administrator- oder Systemkontos), die über das Netzwerk mit einem externen Gerät oder Dienst kommunizieren, d. h. mit jeder anderen IP-Adresse als 127.0.0.1 (localhost) oder ::1 (IPv6 localhost).
SELECT DISTINCT p.name, p.cmdline, pos.pid, pos.local_address, pos.local_port, pos.remote_address, pos.remote_port
FROM processes p JOIN process_open_sockets pos USING (pid)
WHERE pos.remote_address NOT IN ("", "0.0.0.0", "127.0.0.1", "::", "::1")

Sobald Sie die Liste Packet Identifier (PID) haben, können Sie sie in den benutzerdefinierten Abfragen entsprechend hinzufügen.
SELECT DISTINCT p.name, p.cmdline, pos.pid, pos.local_address, pos.local_port, pos.remote_address, pos.remote_port
FROM processes p JOIN process_open_sockets pos USING (pid)
WHERE pos.remote_address NOT IN ("", "0.0.0.0", "127.0.0.1", "::", "::1") and p.uid=1436
5. Sichern/Wiederherstellen der Registrierungsüberwachung
Nachverfolgung von Ereignissen, bei denen Änderungen an der Windows-Registrierung vorgenommen werden, durch Sicherungs- oder Wiederherstellungsvorgänge. Die Windows-Registrierung ist eine hierarchische Datenbank, die Konfigurationseinstellungen und -optionen unter Microsoft Windows-Betriebssystemen speichert.
SELECT key AS reg_key, path, name, data, DATETIME(mtime, "unixepoch") as last_modified
FROM registry
WHERE key LIKE "HKEY_LOCAL_MACHINE\system\currentcontrolset\control\backuprestore\filesnottosnapshot";
SELECT data, path FROM registry
WHERE key LIKE 'HKEY_USERS\%\Control Panel\Accessibility\StickyKeys’;

SELECT username, data, split(path, '\', 1) AS sid
FROM
(SELECT data, path FROM registry
WHERE key LIKE 'HKEY_USERS\%\Control Panel\Accessibility\StickyKeys’)
JOIN users ON users.uuid = sid;

6. Dateisuche
Ermöglicht es Benutzern, Dateien und Ordner auf ihrem Computer anhand verschiedener Kriterien wie Dateiname, Inhalt, Eigenschaften oder Metadaten zu suchen.
SELECT
f.directory, f.filename, f.uid, f.gid,
f.mode, f.device, f.size,
f.atime,
f.mtime,
f.ctime,
f.btime,
f.hard_links, f.symlink, f.file_id, h.sha256
FROM file f
LEFT JOIN hash h on f.path=h.path
WHERE
f.path LIKE (SELECT v from __vars WHERE n="file_path") AND
f.path NOT LIKE (SELECT v from __vars WHERE n=“not_file_path");
Navigieren Sie zu PARAMETERS > File Path, und klicken Sie auf %.dll, %.exe oder %.png.

7. PowerShell-Verlaufsüberwachung
Praktische Vorgehensweise zum Nachverfolgen der Befehle, die in PowerShell-Sitzungen ausgeführt wurden. Die Überwachung des PowerShell-Verlaufs kann aus Sicherheits- und Compliance-Gründen besonders wichtig sein.
SELECT time, datetime, script_block_id, script_block_count, script_text, script_name, script_path
FROM orbital_powershell_events
ORDER BY datetime DESC
LIMIT 500;

8. Abfrage vorab abrufen
Leistungsmerkmal, das das Laden von Anwendungen beschleunigt. Beim Prefetching wird analysiert, wie Software auf einem System geladen und ausgeführt wird, und die entsprechenden Informationen werden dann in bestimmten Dateien gespeichert.
select datetime(last_run_time, "unixepoch", "UTC") as last_access_time,*
from prefetch
ORDER BY last_access_time DESC;
Prefetch ist ein Mechanismus, mit dem SQL Server viele E/A-Anfragen parallel für einen Nested Loop-Join auslösen kann.
9. Address Resolution Protocol (ARP) Cache Inspection
Untersuchen des Inhalts des ARP-Cache auf einem Computer oder Netzwerkgerät. Der ARP-Cache ist eine Tabelle, in der Zuordnungen zwischen IP-Adressen und den entsprechenden MAC-Adressen gespeichert werden.
SELECT address, mac, count(*) as count
FROM arp_cache GROUP BY mac,address;

Im nächsten Beispiel werden die verdächtige MAC-Adresse und deren Anzahl aus dem ARP-Cache ermittelt.
SELECT address, mac, count(*) as count
FROM arp_cache GROUP BY mac,address
HAVING COUNT(mac) >= (SELECT count FROM arp_cache WHERE count>=1)
AND mac LIKE (SELECT mac FROM arp_cache WHERE mac=“52:54:00:12:35:02");
