Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
OST-C2-Spec — 오픈 소스 C&C 사양 | Kitploit
도구/GitHubGitHub/rasta-mouse/ost-c2-spec
ExploitationLateral MovementPost-ExploitationCommand and ControlRed Teaming
GitHubrasta-mouse/ost-c2-spec

OST-C2-Spec

오픈 소스 C&C 사양

저장소 보기
28318171년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

초안: 토론 요청

개요

이 문서는 OST C&C 사양 버전 1의 개요를 제공합니다. 메시지와 메시지 내 필드에 대한 상세한 설명을 제공하기 위한 것입니다.

소개

이 사양의 동기는 작업 지시, 구조화된 출력, 피어 투 피어 라우팅을 포함한 C&C 메시징 프로토콜을 제공하는 것이며, 이를 그대로 구현하거나 프로젝트 개발자에게 영감을 주는 용도로 사용할 수 있습니다. 이 문서는 C&C가 무엇인지 설명하기 위한 문서가 아닙니다. 독자가 C&C가 무엇이고 어떻게 사용되는지 이해하고 있다고 가정합니다.

키워드 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", "OPTIONAL"은 [RFC2119]에 설명된 대로 해석되어야 합니다.

환경 가정

이 사양은 다음을 가정합니다.

  • 메시지는 암호화되지 않은 네트워크를 통해 전송됩니다.
  • 임플란트 페이로드에는 통신 대상 팀 서버가 사용하는 공개 RSA 키가 포함되어 있습니다.

용어집

이 문서 전체에서 사용되는 용어 목록은 다음과 같습니다.

  • 임플란트 메타데이터: 임플란트가 팀 서버에 자신에 대해 보고하는 정보.

  • 작업 요청: 임플란트가 수행하도록 주어진 작업.

  • 작업 응답: 주어진 작업의 상태 및 출력(있는 경우).

  • 세션 키: 임플란트가 메시지를 암호화하는 데 사용하는 고유 암호화 키.

작업 메시지

작업 헤더

각 작업 요청 및 응답 메시지는 다음 16바이트 헤더를 반드시(MUST) 포함해야 합니다.```text | Byte | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | -------------------------------------------------------------| | 0 | Type | Code | Flags | Label | | -------------------------------------------------------------| | 1 | Identifier | Length | | -------------------------------------------------------------|

- **Type**: 1바이트 정수.  이 작업의 '유형'입니다.  [[작업 유형 및 코드](https://github.com/rasta-mouse/ost-c2-spec?tab=readme-ov-file#task-types-and-codes)] 참조.
- **Code**: 1바이트 정수.  주어진 Type에 대한 '하위 코드'입니다.  [[작업 유형 및 코드](https://github.com/rasta-mouse/ost-c2-spec?tab=readme-ov-file#task-types-and-codes)] 참조.
- **Flags**: 2바이트 정수.  메시지의 상태를 설명하는 비트 단위 플래그 집합입니다.  [[작업 플래그](https://github.com/rasta-mouse/ost-c2-spec?tab=readme-ov-file#task-flags)] 참조.
- **Label**: 4바이트 정수.  동일한 작업과 관련된 여러 메시지를 연결하는 고유 레이블입니다.
- **Identifier**: 4바이트 정수.  단편화된 메시지를 올바른 순서로 구성하는 데 사용되는 순차 식별자입니다.
- **Length**: 4바이트 정수.  작업 데이터의 총 길이입니다.

## 작업 유형 및 코드```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                 |
|---------------------------------------------|

작업 플래그

일부 플래그는 상호 배타적이므로 함께 설정해서는 안 됩니다(MUST NOT). 플래그가 설정되지 않은 경우 작업이 성공적으로 완료된 것으로 간주해야 하며(SHOULD), 관련 출력(있는 경우)은 조각화되지 않습니다.```text

ValueDescription
0No flags
1Task Error
2Task Running (as job)
4Message is fragmented, more to follow
8Message is fragmented, no more to follow
## 태스크 데이터

태스크 데이터는 헤더에 추가되며, 특정 태스크 유형과 코드에 따라 바이너리 구조로 구성됩니다. 각 태스크 요청 및 응답 메시지 유형은 [[메시지 정의](https://github.com/rasta-mouse/ost-c2-spec?tab=readme-ov-file#message-definitions)]에 정의되어 있습니다.

태스크 요청 또는 응답에 데이터가 필요하지 않은 경우, 데이터를 포함할 의무는 없습니다.

## 암호화된 태스크 메시지

전송 전에 태스크 헤더와 태스크 데이터가 결합된 후, 임플란트의 세션 키로 AES 암호화됩니다.```text
| Byte | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| ------------------------------------ |
|  0   |            Iv                 |
|  8   |                               |
| ------------------------------------ |
|  16  |          Checksum             |
|  24  |                               |
|  32  |                               |
|  40  |                               |
| ------------------------------------ |
|  48  |           Data                |
|  ..  |                               |
| ------------------------------------ |
  • Iv: 16바이트 초기화 벡터.
  • Checksum: 32바이트 HMAC256 체크섬.
  • Data: 암호화된 데이터.

메시지 교환

임플란트 등록

임플란트는 작업 데이터를 수신하거나 전송하기 전에 팀 서버에 자신을 등록해야 한다(MUST).

IMPLANT-METADATA 생성

임플란트는 [IMPLANT-METADATA] 메시지를 생성하고, 팀 서버의 공개 RSA 키로 암호화한 후 팀 서버로 전송한다.

IMPLANT-METADATA 수신

팀 서버는 개인 RSA 키를 사용하여 임플란트의 [IMPLANT-METADATA]를 복호화하고, 이를 새 세션/콜백으로 등록해야 한다(MUST).

임플란트 체크인

도구 다운로드