
Open Source C&C-Spezifikation
Entwurf: Anfrage zur Diskussion
Dieses Dokument bietet eine Übersicht über Version 1 der OST C&C Specification. Es soll eine detaillierte Beschreibung der Nachrichten und der in diesen Nachrichten enthaltenen Felder liefern.
Die Motivation hinter dieser Spezifikation besteht darin, ein C&C-Nachrichtenprotokoll (einschließlich Tasking, strukturierter Ausgabe und Peer-to-Peer-Routing) bereitzustellen, das wörtlich implementiert werden kann oder Projektentwicklern einfach als Inspiration dient. Dieses Dokument soll nicht beschreiben, was C&C ist. Es wird vorausgesetzt, dass der Leser versteht, was es ist und wofür es verwendet wird.
Die Schlüsselwörter „MUST“, „MUST NOT“, „REQUIRED“, „SHALL“, „SHALL NOT“, „SHOULD“, „SHOULD NOT“, „RECOMMENDED“, „MAY“ und „OPTIONAL“ sind so zu interpretieren, wie in [RFC2119] beschrieben.
Diese Spezifikation geht von den folgenden Annahmen aus:
Im Folgenden finden Sie eine Liste der in diesem Dokument verwendeten Begriffe.
Implant Metadata: Informationen, die ein Implant über sich selbst an einen Teamserver meldet.
Task Request: Ein Task, der einem Implant zur Ausführung übergeben wird.
Task Response: Der Status und die Ausgabe (falls vorhanden) eines bestimmten Tasks.
Session Key: Ein eindeutiger Verschlüsselungsschlüssel, den ein Implant verwendet, um seine Nachrichten zu verschlüsseln.
Jede Task-Request- und Task-Response-Nachricht MUSS den folgenden 16-Byte-Header haben.```text | Byte | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | -------------------------------------------------------------| | 0 | Type | Code | Flags | Label | | -------------------------------------------------------------| | 1 | Identifier | Length | | -------------------------------------------------------------|
- **Type**: 1-Byte-Integer. Der 'Typ' der Aufgabe. Siehe [[Aufgabentypen und Codes](https://github.com/rasta-mouse/ost-c2-spec?tab=readme-ov-file#task-types-and-codes)].
- **Code**: 1-Byte-Integer. Ein 'Subcode' für den angegebenen Typ. Siehe [[Aufgabentypen und Codes](https://github.com/rasta-mouse/ost-c2-spec?tab=readme-ov-file#task-types-and-codes)].
- **Flags**: 2-Byte-Integer. Eine Menge von Bitflags, die den Zustand der Nachricht beschreiben. Siehe [[Task-Flags](https://github.com/rasta-mouse/ost-c2-spec?tab=readme-ov-file#task-flags)].
- **Label**: 4-Byte-Integer. Ein eindeutiges Label, um mehrere Nachrichten zu korrelieren, die zur selben Aufgabe gehören.
- **Identifier**: 4-Byte-Integer. Ein sequenzieller Identifikator, der verwendet wird, um fragmentierte Nachrichten in der richtigen Reihenfolge zusammenzusetzen.
- **Length**: 4-Byte-Integer. Die Gesamtlänge der Aufgabendaten.
## Aufgabentypen und Codes```text
|------------------|--------------------------|
| Type | Code |
|------------------|--------------------------|
| 0 - NOP | 0 |
|------------------|--------------------------|
| 1 - Exit | 0 |
|------------------|--------------------------|
| 2 - Set | 0 - Sleep/Jitter |
| | 1 - SpawnTo |
| | 2 - BlockDLLs |
| | 3 - PPID |
|------------------|--------------------------|
| 3 - File | 0 - Copy |
| | 1 - Move |
| | 2 - Delete |
| | 3 - Upload |
| | 4 - Download |
|------------------|--------------------------|
| 4 - Directory | 0 - Print |
| | 1 - Change |
| | 2 - Create |
| | 3 - Copy |
| | 4 - Move |
| | 5 - List |
| | 6 - Delete |
|------------------|--------------------------|
| 5 - WhoAmI | 0 |
|------------------|--------------------------|
| 6 - Process | 0 - List |
| | 1 - Kill |
| | 2 - Inject Spawn |
| | 3 - Inject Explicit |
|------------------|--------------------------|
| 7 - Registry | 0 - Query |
| | 1 - Add |
| | 2 - Delete |
|------------------|--------------------------|
| 8 - RPortFwd | 0 - Start |
| | 1 - Data |
|------------------|--------------------------|
| 9 - Environment | 0 - Get |
| | 1 - Set |
|------------------|--------------------------|
| 10 - SOCKS | 0 - Connect |
| | 1 - Data |
| | 2 - Close |
|------------------|--------------------------|
| 11 - Tokens | 0 - List |
| | 1 - Make |
| | 2 - Steal |
| | 3 - Use |
| | 4 - Revert |
| | 5 - Delete |
| | 6 - Purge |
|------------------|--------------------------|
| 12 - Run | 0 |
|------------------|--------------------------|
| 13 - ItemStore | 0 - List |
| | 1 - Add |
| | 2 - Delete |
| | 3 - Purge |
|------------------|--------------------------|
| 14 - LocalExec | 0 - .NET |
| | 1 - BOF |
| | 2 - Managed PowerShell |
| | 3 - Unmanaged PowerShell |
|------------------|--------------------------|
| 15 - PrintScreen | 0 |
|------------------|--------------------------|
| 16 - RemoteExec | 0 - WinRM |
| | 1 - WMI |
| | 2 - PsExec |
| | 3 - SSH |
|------------------|--------------------------|
| 17 - Link | 1 - Link SMB |
| | 2 - Link TCP |
|------------------|--------------------------|
| 18 - Unlink | 0 |
|------------------|--------------------------|
| 19 - P2P | 0 - Acknowledge |
| | 1 - PassThru |
|------------------|--------------------------|
| 20 - Jobs | 0 - List |
| | 1 - Kill |
|---------------------------------------------|