Dieses Repo soll zwei Zwecken dienen. Erstens bietet es einen schönen Satz grundlegender Situationserkennungsbefehle, die in einer Beacon Object File (BOF) implementiert sind. Auf diese Weise können Sie einige Überprüfungen auf einem Host durchführen, bevor Sie mit der Ausführung von Befehlen beginnen, die möglicherweise invasiver sind.
Sein größeres Ziel besteht darin, ein Codebeispiel und einen Arbeitsablauf bereitzustellen, damit andere mit der Erstellung weiterer BOFs beginnen können. Es handelt sich um ein Begleitdokument des hier verfassten Blogbeitrags: https://www.trustedsec.com/blog/a-developers-introduction-to-beacon-object-files/
Wenn Sie denselben Workflow wie dieses Repository verwenden möchten, sind Ihre grundlegenden Schritte wie folgt:
Realistisch gesehen könnte dies in ein Hilfsskript komprimiert werden, aber diese Schritte wurden für diesen Aufwand nicht unternommen.
Befehle | Verwendung | Notizen |
---|---|---|
adcs_enum | adcs_enum | Zählen Sie CAs und Vorlagen im AD mithilfe von Win32-Funktionen auf |
adcs_enum_com | adcs_enum_com | Zählen Sie Zertifizierungsstellen und Vorlagen im AD mithilfe des ICertConfig-COM-Objekts auf |
adcs_enum_com2 | adcs_enum_com2 | Zählen Sie Zertifizierungsstellen und Vorlagen im AD mithilfe des COM-Objekts IX509PolicyServerListManager auf |
adv_audit_policies | adv_audit_policies | Rufen Sie erweiterte Sicherheitsüberwachungsrichtlinien ab |
arp | arp | ARP-Tabelle auflisten |
cacls | cacls [Dateipfad] | Benutzerberechtigungen für die angegebene Datei auflisten, Platzhalter werden unterstützt |
dir | dir [Verzeichnis] [/s] | Dateien in einem Verzeichnis auflisten. Unterstützt im Gegensatz zum CobaltStrike ls -Befehl Platzhalter (z. B. „C:WindowsS*“) |
Treiber | Treiber | Zählen Sie die Imagepaths der installierten Dienste auf, um das Signaturzertifikat mit bekannten AV/EDR-Anbietern zu vergleichen |
enum_filter_driver | enum_filter_driver [opt:computer] | Filtertreiber aufzählen |
enumLocalSessions | enumLocalSessions | Zählen Sie aktuell verbundene Benutzersitzungen sowohl lokal als auch über RDP auf |
env | env | Prozessumgebungsvariablen auflisten |
findLoadedModule | findLoadedModule [modulepart] [opt:procnamepart] | Finden Sie heraus, in welche Prozesse *modulepart* geladen wird, indem Sie optional nur nach *procnamepart* suchen |
get_password_policy | get_password_policy [Hostname] | Rufen Sie die konfigurierte Passwortrichtlinie und Sperrungen des Zielservers oder der Zieldomäne ab |
ipconfig | ipconfig | Listen Sie IPv4-Adresse, Hostnamen und DNS-Server auf |
ldapsearch | ldapsearch [Abfrage] [opt: Attribut] [opt: results_limit] [opt: DC-Hostname oder IP] [opt: Distingished Name] | Führen Sie LDAP-Suchen aus (HINWEIS: Geben Sie *,ntsecuritydescriptor als Attributparameter an, wenn Sie alle Attribute + Base64-codierte ACL der Objekte wünschen. Dies kann dann mit BOFHound gelöst werden. Könnte möglicherweise die Paginierung unterbrechen, obwohl beim Testen alles in Ordnung schien.) |
listdns | listdns | DNS-Cache-Einträge auflisten. Versuchen Sie, jedes Problem abzufragen und zu lösen |
list_firewall_rules | list_firewall_rules | Listen Sie die Windows-Firewallregeln auf |
Listenmods | listmods [opt: pid] | Prozessmodule (DLL) auflisten. Aktueller Zielprozess, wenn PID leer ist. Ergänzung zu driversigs, um festzustellen, ob unser Prozess durch AV/EDR injiziert wurde |
Listenpipes | Listenpipes | Benannte Pipes auflisten |
Gebietsschema | Gebietsschema | Listen Sie die Sprache des Systemgebietsschemas, die Gebietsschema-ID, das Datum, die Uhrzeit und das Land auf |
netGroupList | netGroupList [opt: domain] | Listen Sie Gruppen aus der Standarddomäne oder der angegebenen Domäne auf |
netGroupListMembers | netGroupListMembers [Gruppenname] [opt: Domäne] | Gruppenmitglieder aus der Standarddomäne oder der angegebenen Domäne auflisten |
netLocalGroupList | netLocalGroupList [opt: server] | Lokale Gruppen vom lokalen oder angegebenen Computer auflisten |
netLocalGroupListMembers | netLocalGroupListMembers [Gruppenname] [opt: Server] | Lokale Gruppen vom lokalen oder angegebenen Computer auflisten |
netLocalGroupListMembers2 | netLocalGroupListMembers2 [opt: Gruppenname] [opt: Server] | Modifizierte Version von netLocalGroupListMembers , die BOFHound unterstützt |
netloggedon | netloggedon [Hostname] | Zurückkehrende Benutzer, die am lokalen oder Remotecomputer angemeldet sind |
netloggedon2 | netloggedon2 [opt: Hostname] | Modifizierte Version von netloggedon , die BOFHound unterstützt |
Netzsitzung | netsession [opt:computer] | Zählen Sie Sitzungen auf dem lokalen oder angegebenen Computer auf |
netsession2 | netsession2 [opt:computer] [opt:auflösungsmethode] [opt:dns-server] | Modifizierte Version von netsession , die BOFHound unterstützt |
Netshares | Netshares [Hostname] | Listen Sie Freigaben auf dem lokalen oder Remotecomputer auf |
netstat | netstat | TCP- und UDP-IPv4-Ports mit Auflistung |
Nettozeit | nettime [Hostname] | Zeit auf Remote-Computer anzeigen |
Netzwerkzeit | netuptime [Hostname] | Gibt Informationen zur Startzeit auf dem lokalen oder Remotecomputer zurück |
Netzbenutzer | netuser [Benutzername] [opt: Domäne] | Erhalten Sie Informationen zu einem bestimmten Benutzer. Von der Domäne abrufen, wenn ein Domänenname angegeben ist |
netuse_add | netuse_add [Freigabename] [opt:Benutzername] [opt:Passwort] [opt:/DEVICE:Gerätename] [opt:/PERSIST] [opt:/REQUIREPRIVACY] | Binden Sie eine neue Verbindung zu einem Remotecomputer |
netuse_delete | netuse_delete [Gerät||Freigabename] [opt:/PERSIST] [opt:/FORCE] | Löschen Sie das gebundene Gerät/den Freigabenamen.] |
netuse_list | netuse_list [opt:target] | Listen Sie alle gebundenen Freigaberessourcen oder Informationen zur lokalen Zielressource auf |
netview | netview | Erreichbare Computer in der aktuellen Domäne auflisten |
nslookup | nslookup [Hostname] [opt:DNS-Server] [opt:Eintragstyp] | Machen Sie eine DNS-Abfrage. Der DNS-Server ist der Server, den Sie abfragen möchten (nicht angeben oder 0 als Standardeinstellung). Der Datensatztyp ist etwa A, AAAA oder ANY. Einige Situationen sind aufgrund beobachteter Abstürze eingeschränkt |
Sonde | Sonde [Host] [Port] | Überprüfen Sie, ob ein bestimmter Port geöffnet ist |
regsession | regsession [opt: Hostname] | Geben Sie angemeldete Benutzer-SIDs zurück, indem Sie HKEY_USERS aufzählen. BOFHound-kompatibel |
reg_query | [opt:hostname] [hive] [pfad] [opt: abzufragender Wert] | Fragen Sie einen Registrierungswert ab oder zählen Sie einen einzelnen Schlüssel auf |
reg_query_recursive | [opt:hostname] [Hive] [Pfad] | Listen Sie einen Schlüssel rekursiv auf, beginnend beim Pfad |
Ressourcen | Ressourcen | Listen Sie die Speichernutzung und den verfügbaren Speicherplatz auf der primären Festplatte auf |
Routendruck | Routendruck | Listen Sie IPv4-Routen auf |
sc_enum | sc_enum [opt:server] | Zählen Sie Dienste für QC-, Abfrage-, Qfailure- und Qtrigger-Informationen auf |
sc_qc | sc_qc [Dienstname] [opt:server] | sc qc Implementierung in BOF |
sc_qdescription | sc_qdescription [Dienstname] [opt: Server] | sc qdescription-Implementierung in BOF |
sc_qfailure | sc_qfailure [Dienstname] [opt:server] | Fragen Sie einen Dienst nach Fehlerbedingungen ab |
sc_qtriggerinfo | sc_qtriggerinfo [Dienstname] [opt:server] | Fragen Sie einen Dienst nach Auslösebedingungen ab |
sc_query | sc_query [opt: Dienstname] [opt: Server] | sc-Abfrageimplementierung in BOF |
schtasksenum | schtasksenum [opt: server] | Zählen Sie geplante Aufgaben auf dem lokalen oder Remotecomputer auf |
schtasksquery | schtasksquery [opt: server] [taskpath] | Fragen Sie die angegebene Aufgabe auf dem lokalen oder Remotecomputer ab |
Aufgabenliste | Aufgabenliste [opt: Server] | Listen Sie laufende Prozesse auf, einschließlich PID, PPID und ComandLine (verwendet WMI). |
Betriebszeit | Betriebszeit | Listen Sie die Systemstartzeit und die Laufzeit auf |
vssenum | vssenum [Hostname] [opt:sharename] | Auflisten von Schattenkopien auf einigen Servern mit Server 2012+ |
Whoami | Whoami | Listen Sie whoami /all auf |
Fensterliste | Fensterliste [opt:all] | Sichtbare Fenster in der aktuellen Benutzersitzung auflisten |
wmi_query | wmi_query query [opt: server] [opt: namespace] | Führen Sie eine WMI-Abfrage aus und zeigen Sie die Ergebnisse im CSV-Format an |
Beachten Sie, dass der Grund für die Einbeziehung von reg_query, wenn CS über einen integrierten reg query(v)-Befehl verfügt, darin besteht, dass dieser auf Remotecomputer abzielen kann und die Möglichkeit hat, einen ganzen Schlüssel rekursiv aufzulisten.
Der Funktionscode für die meisten dieser Befehle wurde dem Reactos-Projekt oder Codebeispielen entnommen, die auf MSDN gehostet werden. Die Treibercodebasis stammt von https://gist.github.com/jthuraisamy/4c4c751df09f83d3620013f5d370d3b9
Vielen Dank an alle unter Mitwirkenden aufgeführten Mitwirkenden. Jeder von Ihnen hat etwas Sinnvolles zu diesem Repository beigetragen und sich mit mir und meinen Überprüfungsprozessen auseinandergesetzt. Ich schätze jeden Einzelnen von Ihnen dafür, dass Sie mir etwas beigebracht und dabei geholfen haben, dieses BOF-Repository so gut wie möglich zu machen!
In diesem Projekt werden vorkompilierte BOFs bereitgestellt, die mit einer aktuellen Version von Mingw-w64 kompiliert werden, die normalerweise von Brew installiert wird.
Diese BOFs wurden im Hinblick auf die Unterstützung von Windows Vista+ geschrieben. Ein neuer Zweig namens winxp_2003 wurde erstellt, wenn Sie den Hauptsatz von BOFs auf diesen älteren Systemen verwenden müssen. Dieser Zweig bleibt in einem weniger unterstützten Zustand. Es wird funktionsfähig sein, aber nicht mit jedem neuen Push/Feature, das wir hinzufügen, aktualisiert.