Remote Operations BOF
Dieses Repository dient als Ergänzung zu unserem zuvor veröffentlichten SA-Repository. Unsere ursprüngliche Haltung war, dass wir unser Tooling, das andere Systeme modifiziert, nicht veröffentlichen würden, sondern nur Tooling zur Informationssammlung in einer sofort einsatzbereiten Form bereitstellen würden.
Im Laufe der Zeit haben wir gesehen, dass viele andere öffentliche Sicherheitsunternehmen ihr offensiv ausgerichtetes Tooling veröffentlichen, und wir denken jetzt, dass es angemessen ist, einen Teil unseres offensiven Toolings zu veröffentlichen.
Nichts in diesem Repository ist besonders ausgefallen, es handelt sich um grundlegende Microsoft-Windows-Operationen in BOF-Form. Diese Primitiven können für eine Vielzahl von Operationen verwendet werden.
Injection BOF
Wir haben uns entschieden, die Injection-BOFs aufzunehmen, die wir beim Testen der EDR-Erkennung verwenden. Diese BOFs werden so bereitgestellt, wie sie sind, und werden nicht unterstützt (alles unter src/Injection und Injection/*).
Du kannst sie gerne verwenden, aber Issues, die sich auf diese beziehen, werden ohne Prüfung geschlossen.
Verfügbare Remote-Operations-Befehle
| Command | Usage | Notes |
|---|
| adcs_request | adcs_request [CA] [OPT:TEMPLATE] [OPT:SUBJECT] [OPT:ALTNAME] [OPT:INSTALL] [OPT:MACHINE] [OPT:ADD_APP_POLICY] [OPT:DNS] | Ein Registrierungszertifikat anfordern |
| adcs_request_on_behalf | adcs_request_on_behalf [TEMPLATE] [REQUESTER] [ENROLLMENT_AGENT.pfx] [Download_Name] | Ein Registrierungszertifikat im Namen eines anderen Benutzers anfordern |
| adduser | adduser [USERNAME] [PASSWORD] [SERVER] | Den angegebenen Benutzer zu einem Computer hinzufügen |
| addusertogroup | addusertogroup [USERNAME] [GROUPNAME] [SERVER] [DOMAIN] | Den angegebenen Benutzer zu einer Gruppe hinzufügen |
| ask_mfa | ask_mfa [NUMBER] | Zeigt einen gefälschten Microsoft-Authenticator-Genehmigungsdialog mit der angegebenen Nummer an. |
| chromeKey | chromeKey | Den bereitgestellten base64-codierten Chrome-Schlüssel entschlüsseln |
| disableuser | disableuser [USERNAME] [DOMAIN] | Das angegebene Benutzerkonto deaktivieren |
| enableuser | enableuser [USERNAME] [DOMAIN] | Das angegebene Benutzerkonto aktivieren und entsperren |
| get_azure_token | get_azure_token [CLIENT ID] [SCOPE] [BROWSER] [OPT:HINT] [OPT:BROWSER PATH] | Versucht, mit gespeicherten Anmeldungen einen OAuth-Codeflow-Grant gegenüber Azure abzuschließen |
| get_priv | get_priv [Privledge Name] | Aktiviert die angegebene Token-Berechtigung, eher für Nicht-Cobalt-Strike-Benutzer |
| ghost_task | ghost_task [HOSTNAME/LOCALHOST] [OPERATION] [TASKANME] [PROGRAM] [ARGUMENT] [USERNAME] [SCHEDULETYPE] [TIME/SECOND] [DAY] | Eine Ghost-Task hinzufügen/löschen. |
| global_unprotect | global_unprotect | Sucht und entschlüsselt GlobalProtect-Konfigurationsdateien, konvertiert von: GlobalUnProtect |
| lastpass | lastpass [NUMBER OF PIDs] [PID],[PID],[PID],[PID] ... | Durchsucht den Arbeitsspeicher von Chrome und Brave nach LastPass-Passwörtern und -Daten |
| make_token_cert | make_token_cert [.PFX LOCAL PATH] [OPT:PFX PASSWORD] | Imitiert einen Benutzer mithilfe des Alternativnamens einer .pfx-Datei |
| office_tokens | office_tokens [PID] | Office-JWT-Tokens aus einem beliebigen Office-Prozess sammeln |
Mitwirken
Dieses Repository ist für Windows-Primitive mit einer einzelnen Aufgabe gedacht. Das heißt, selbst wenn es mehrere Aufrufe erfordert, ist das Erstellen einer geplanten Aufgabe angemessen.
Ein Befehl, der versuchen würde, ein Implantat vorab zu generieren und mithilfe der BOFs in diesem Repository automatisierte Bewegungen durchzuführen, wäre großartig. Er ist jedoch nicht für eine direkte Einreichung in dieses Repository geeignet.
Code-Erwartungen
- Dein Code sollte ohne Fehler kompilieren, wenn du das Standard-Makefile verwendest
- Alle neuen BOF-Definitionen zum Auflösen von Funktionen werden in src/common/bofdefs.h abgelegt
- Der Code wird mit dem standardmäßigen Makefile zusammen kompilieren (einzige Datei entry.c)
- Der Code wird ebenfalls mit der vorhandenen Toolchain kompatibel sein (mingw)
- Der Code wird in C geschrieben. Dies dient der Standardisierung und meinem persönlichen Vertrauen bei der Validierung des Codes.
Was dich als Mitwirkenden erwartet
Nachdem ein Pull-Request eingegangen ist, wird er einer eingehenden Code-Überprüfung und Tests unterzogen.
Nach Abschluss der Tests werden wir je nach den Ergebnissen null oder mehr Runden von Änderungsanforderungen durchführen, bis es keine Probleme im Code mehr gibt. Zu diesem Zeitpunkt wird er in das Repository aufgenommen und dein GitHub-Benutzername wird zu unserer Anerkennungsliste hinzugefügt. Wenn du nicht hinzugefügt werden möchtest oder ein anderer Name verwendet werden soll, sag mir einfach Bescheid.
Möchtest du mehr erfahren?
Wenn du diese Beacon-Object-Dateien hilfreich findest und eigene BOFs im ähnlichen Stil schreiben möchtest, laden wir dich ein, dir unseren Kurs Beacon Object File (BOF) Development anzusehen.
Der Kurs gibt einen kurzen Überblick über die Geschichte von Beacon-Object-Dateien und taucht dann in eine Vielzahl von Herausforderungsproblemen ein, die dir beibringen sollen, wie du verschiedene Windows-Technologien bei der Entwicklung eigener Beacon-Object-Dateien nutzen kannst.