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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
OneDrive-UDC2 — Cobalt Strike를 위한 은밀한 C2 전송 수단으로서의 OneDrive | Kitploit
도구/GitHubGitHub/nmht3t/onedrive-udc2
Defensive ToolsPenetration Testing FrameworksPost-ExploitationCloud SecurityCommand and ControlRed TeamingPayload Development
GitHubnmht3t/onedrive-udc2

OneDrive-UDC2

Cobalt Strike를 위한 은밀한 C2 전송 수단으로서의 OneDrive

저장소 보기
348435일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

OneDrive UDC2

OneDrive를 전송 계층으로 사용하는 Cobalt Strike 사용자 정의 C2 채널입니다.

Architecture

필요한 것

  • OneDrive for Business를 사용하는 사용자가 있는 Microsoft Entra ID 테넌트.
  • Files.ReadWrite.All 애플리케이션 권한이 있는 앱 등록.

설정

1. 애플리케이션 등록

Azure Portal에서 App registrations로 이동하여 새 앱을 만듭니다:

  • Account type: Single tenant.
  • Redirect URI: 비워 둡니다.

개요 페이지에서 tenant ID와 client ID를 기록해 둡니다.

2. Graph 권한 추가

API permissions에서:

  1. Microsoft Graph, Application permissions, Files.ReadWrite.All 순서로 추가합니다.
  2. Grant admin consent를 클릭합니다.

3. 클라이언트 암호 만들기

Certificates & secrets에서 새 암호를 만들고 값을 복사합니다.

4. OneDrive 폴더 만들기

사용자의 OneDrive에 받은 편지함용과 보낼 편지함용 폴더 두 개를 만듭니다 (예: c2inbox와 c2outbox).

5. 드라이브 및 폴더 ID 가져오기

Graph Explorer를 열고 해당 사용자로 로그인한 후 다음을 실행합니다:

root@kitploit:~
GET https://graph.microsoft.com/v1.0/me/drive/root/children

각 폴더의 id와 JSON 응답의 임의 항목에서 driveId를 가져옵니다.

빌드

root@kitploit:~
cp server/config.json.example server/config.json

server/config.json을 채웁니다:

그런 다음 클라이언트를 빌드합니다:

root@kitploit:~
make

실행

릴레이를 시작합니다 (터미널 연결이 끊겨도 유지되도록 screen이나 tmux를 사용하세요):

root@kitploit:~
python3 server/relay.py --config server/config.json --ts-addr <teamserver-ip> --ts-port <udc2-port>

Cobalt Strike에서 같은 포트에 UDC2 리스너를 만들고 client/bof.o를 로드합니다.

릴레이 옵션

상태, 스풀 및 잠금 파일

릴레이는 재시작 사이에 상태를 추적하기 위해 설정 옆에 몇 개의 파일을 만듭니다:

  • 상태 파일 (config.json.state.json) - 처리된 받은 편지함 파일, 대기 중인 업로드, 비콘 세션 정보를 추적합니다. --state로 사용자 지정 경로를 설정할 수 있습니다.
  • 스풀 디렉터리 (config.json.state.json.spool/) - 아직 OneDrive에 업로드되지 않은 응답 데이터를 보관합니다. 업로드 도중 릴레이가 충돌하면 스풀이 데이터를 보존하여 다음 시작 시 재시도할 수 있습니다.
  • 잠금 파일 (config.json.state.json.lock) - 두 릴레이 인스턴스가 같은 상태에 대해 실행되는 것을 방지합니다. Another relay holds the lock이 표시되고 다른 릴레이가 실행 중이 아니라면, 잠금은 충돌로 인한 오래된 것입니다.

릴레이 상태 초기화

릴레이의 로컬 상태가 손상되었거나 오래된 잠금이 시작을 막고 있다면, --clean을 사용하여 상태 파일과 스풀 디렉터리를 지우고 릴레이가 새로 시작하도록 합니다:

root@kitploit:~
python3 server/relay.py --config server/config.json --clean

잠금 파일은 유지됩니다. 다른 인스턴스가 실행 중일 때는 릴레이가 정리하지 않습니다. 다음 정상 시작 시 다시 초기화하고 30분보다 오래된 받은 편지함 파일은 건너뜁니다.

상태 파일과 스풀 디렉터리를 직접 삭제하여 수동으로 초기화할 수도 있습니다. 잠금 파일이 오래된 경우(실행 중인 릴레이 없음) 그것도 삭제하세요.

데모

POC

참고 자료

  • Cobalt Strike UDC2 docs
  • Cobalt Strike ICMP UDC2
  • WKL Slack UDC2
도구 다운로드
FieldValue
tenant_idMicrosoft Entra ID 테넌트 ID
client_id애플리케이션 클라이언트 ID
client_secret클라이언트 암호 값
drive_idOneDrive 드라이브 ID
inbox_folder_id받은 편지함 폴더 ID
outbox_folder_id보낼 편지함 폴더 ID
FlagDescription
--configconfig.json 경로 (필수)
--ts-addrTeamserver IP
--ts-portUDC2 리스너 포트
--poll폴링 간격(초) (기본값 2.0)
--state상태 파일 경로 (기본값: <config>.state.json)
--debug디버그 로깅 활성화
--clean상태 파일과 스풀 디렉터리를 삭제한 후 종료