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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
adaptix-serverless-c2 — AdaptixC2 v1.2용 서버리스 C2 전송 플러그인으로, AWS Lambda + DynamoDB를 릴레이 인프라로 사용합니다. | Kitploit
도구/GitHubGitHub/stillbigjosh/adaptix-serverless-c2
Cloud Infrastructure SecurityPenetration Testing FrameworksExploit FrameworksPersistence MechanismsScripting & AutomationServerless SecurityPost-ExploitationCloud SecurityCommand and ControlRed TeamingPayload Development
193106일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHubstillbigjosh/adaptix-serverless-c2

adaptix-serverless-c2

AdaptixC2 v1.2용 서버리스 C2 전송 플러그인으로, AWS Lambda + DynamoDB를 릴레이 인프라로 사용합니다.

저장소 보기

Adaptix 서버리스 C2

서버리스 C2 토폴로지

AWS Lambda + DynamoDB를 릴레이 인프라로 사용하는 AdaptixC2 v1.2용 서버리스 C2 전송 플러그인입니다. 에이전트 트래픽은 AWS 엔드포인트로 향하는 아웃바운드 HTTPS로 나타나며, C2 서버에 인바운드 포트나 공인 IP가 필요하지 않습니다.

아키텍처

Kharon Agent (target)
    |
    | HTTPS GET/POST (outbound only, randomly alternated)
    v
AWS Lambda Function URL (stateless relay)
    |
    | Store inbound / Poll outbound (up to 8s)
    v
DynamoDB (inbound + outbound tables)
    ^
    | Poll every 5 seconds
    |
Listener Plugin (inside AdaptixC2)
    |
    | TsAgent API + TsExtenderData (key persistence)
    v
AdaptixC2 Teamserver + UI

데이터 흐름:

  1. Kharon 에이전트가 HTTPS를 통해 Lambda Function URL로 암호화된 체크인을 전송합니다
  2. Lambda가 원시 데이터를 DynamoDB inbound 테이블에 저장합니다
  3. Lambda가 최대 8초 동안 outbound 테이블을 폴링합니다 (등록을 위한 비동기 갭을 연결)
  4. 응답이 존재하면 Lambda가 이를 반환하고 전달됨으로 표시합니다
  5. AdaptixC2 리스너 플러그인이 DynamoDB inbound 테이블에서 미처리 레코드를 폴링합니다
  6. 리스너가 Kharon 와이어 프로토콜(LokyCrypt 암호화)을 파싱하고 에이전트를 등록/업데이트합니다
  7. 운영자가 명령을 내리면 리스너가 이를 Kharon 형식으로 암호화하여 outbound에 저장합니다
  8. 다음 체크인 시 Lambda가 에이전트에 응답을 반환합니다

구성 요소

구성 요소경로목적
Kharon 에이전트agent/번들된 Kharon 임플란트 (C++ 소스)
Terraformdeploy/aws/Lambda + DynamoDB + IAM + KMS 인프라
Lambda 릴레이deploy/aws/lambda/아웃바운드 폴링을 포함한 무상태 HTTP-to-DynamoDB 프록시
리스너 플러그인listener/AdaptixC2 플러그인, DynamoDB 폴링, Kharon 프로토콜 브리지
Kharon 설정kharon/에이전트/리스너 익스텐더용 AXS 명령 등록 및 설정
패치patches/BeaconServerless 지원을 위한 AdaptixC2 소스 패치
프로필profiles/Lambda URL용 Malleable HTTP 프로필
스크립트scripts/설치, 빌드, 배포, 제거

사전 요구 사항

  • 자격 증명이 구성된 AWS 계정 (aws configure)
  • Terraform >= 1.5.0
  • Go >= 1.23 (리스너 플러그인은 서버 바이너리와 일치하는 GOEXPERIMENT 필요)
  • AdaptixC2 v1.2 설치됨
  • mingw 타겟을 지원하는 clang++: apt install clang lld
  • NASM 어셈블러: apt install nasm
  • objcopy: apt install binutils-mingw-w64-x86-64

AWS 계정 설정

1. 배포용 IAM 사용자 생성

AWS 콘솔에서:

  1. IAM > Users > Create user로 이동
  2. 이름을 adaptix-deployer로 지정
  3. Attach policies directly 선택
  4. 다음 AWS 관리형 정책을 연결:
    • AmazonDynamoDBFullAccess
    • AWSLambda_FullAccess
    • IAMFullAccess
    • CloudWatchLogsFullAccess
  5. KMS용 인라인 정책 추가:
    • Add permissions > Create inline policy > JSON 클릭
    • 붙여넣기: {"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"kms:*","Resource":"*"}]}
    • 이름을 KMSFullAccess로 지정
  6. 사용자를 생성한 후 Security credentials > Create access key로 이동
  7. Command Line Interface (CLI) 선택
  8. Access Key ID와 Secret Access Key 저장

2. AWS CLI 구성

aws configure
# AWS Access Key ID: <paste access key>
# AWS Secret Access Key: <paste secret key>
# Default region: us-east-1
# Default output format: json

확인:

aws sts get-caller-identity

설치

1단계: AWS 인프라 배포

# Build the Lambda relay binary (cross-compiled for Amazon Linux)
./scripts/build_relay.sh

# Deploy Lambda + DynamoDB + IAM with Terraform
./scripts/deploy_infra.sh

# Note the Lambda Function URL from the output, e.g.:
# lambda_function_url = "https://xxxxx.lambda-url.us-east-1.on.aws"

2단계: AdaptixC2에 플러그인 설치

./scripts/install.sh /path/to/AdaptixC2

이 스크립트는 다음을 수행합니다:

  1. dist/ 디렉터리 백업 (인증서, 데이터베이스, 프로필)
  2. BeaconServerless 커넥터 지원을 위한 소스 패치 적용
  3. 서버 바이너리에서 GOEXPERIMENT 플래그 감지
  4. 일치하는 플래그로 리스너 플러그인(.so) 빌드
  5. AdaptixC2 서버 및 익스텐더 재빌드
  6. 백업된 파일 복원 (인증서, 데이터베이스, 프로필)
  7. 서버리스 리스너 플러그인 + Kharon 익스텐더 설정 설치
  8. systemd 서비스 생성/업데이트
  9. AdaptixC2 재시작

3단계: GUI에서 리스너 구성

  1. AdaptixC2 웹 UI에 로그인
  2. Listeners로 이동하여 새 BeaconServerless 리스너 생성
  3. Lambda URL을 1단계의 Function URL로 설정
  4. Relay API Key 설정 (terraform.tfvars의 relay_api_key와 일치해야 함)
  5. 선택적으로 조정: AWS Region, Poll Interval (기본 5초), TTL Hours (기본 24)
  6. profiles/lambda_default.json에서 malleable 프로필 업로드
  7. 리스너 시작

4단계: 페이로드 생성 및 실행

  1. GUI에서 BeaconServerless 리스너를 선택하여 Kharon 에이전트 생성
  2. 형식(Exe, Dll, Svc)과 아키텍처(x64) 선택
  3. 대상에서 페이로드 실행
  4. 에이전트가 몇 초 내에 체크인해야 함

구성

Terraform 변수 (deploy/aws/terraform.tfvars)

region        = "us-east-1"
function_name = "adaptix-relay"
relay_api_key = "your-secret-key-here"
tags = {
  Project = "adaptix-serverless"
}

리스너 설정 (AdaptixC2 GUI)

필드설명기본값
AWS Region인프라가 배포된 리전us-east-1
Lambda URLTerraform 출력의 Function URL(필수)
Relay API KeyTerraform의 relay_api_key와 일치해야 함(선택)
Inbound Table에이전트 체크인용 DynamoDB 테이블adaptix-inbound
Outbound Table서버 응답용 DynamoDB 테이블adaptix-outbound
Poll IntervalDynamoDB 확인 주기 (초)5
TTL HoursDynamoDB 레코드 만료24

주요 기술 세부 사항

Kharon 와이어 프로토콜

Kharon 에이전트는 HTTP를 통해 사용자 정의 바이너리 프로토콜을 사용합니다:

  • 새 에이전트 (등록): [36-byte UUID][encrypted_checkin_data][16-byte LokyCrypt key]
  • 연결된 에이전트 (GetTask): [36-byte UUID][encrypted_payload] (후행 키 없음)
  • !Connected 에이전트 (키 스톰핑): 페이로드가 작을 때 TotalLen-16의 16바이트 키가 UUID 영역과 겹칩니다. 44바이트 패킷의 경우 키가 오프셋 28에서 시작하여 UUID 바이트 28-35와 모든 암호화된 데이터를 덮어씁니다.

리스너는 세 가지 형식을 모두 감지하고 올바르게 처리합니다.

Lambda 아웃바운드 폴링 루프

Lambda + DynamoDB의 비동기 특성 때문에 Lambda가 처음 응답을 확인할 때 리스너가 인바운드 레코드를 아직 처리하지 않았을 수 있습니다. Lambda는 인바운드 레코드를 저장한 후 최대 8초 동안 아웃바운드 테이블을 폴링하여 리스너가 응답을 처리하고 대기열에 넣을 시간을 줍니다. 이는 등록에 중요합니다 (Checkin 응답은 나중의 GetTask가 아닌 Checkin 단계에서 도착해야 함).

키 지속성

에이전트 암호화 키는 TsExtenderDataSave/TsExtenderDataLoad (SQLite 기반)를 통해 지속됩니다. 이는 서비스 재시작 후에도 유지됩니다. 재시작 시 리스너는 알려진 에이전트 ID를 만나면 영구 저장소에서 키를 복구합니다.

GET/POST 처리

Kharon은 GET과 POST 요청을 무작위로 번갈아 사용합니다 (HTTP_METHOD_USE_BOTH). GET 요청은 데이터를 id 쿼리 매개변수에 넣습니다 (프로필에 따라 base64 인코딩). POST 요청은 원시 바이너리를 HTTP 본문에 넣습니다. Lambda는 두 가지를 투명하게 처리합니다.

OPSEC

  • 모든 에이전트 트래픽은 *.lambda-url.*.on.aws 엔드포인트로 향하는 아웃바운드 HTTPS입니다
  • C2 서버에 인바운드 포트가 필요하지 않습니다
  • DynamoDB 레코드는 TTL을 통해 자동 만료됩니다
  • CloudWatch 로그는 3일 보존으로 KMS 암호화됩니다
  • Lambda 릴레이는 API 키 헤더를 통해 인증합니다
  • 도메인 프론팅을 위해 CloudFront와 함께 사용자 정의 도메인 사용을 고려하세요
  • Lambda 폴링 루프는 응답에 0-8초의 지연을 추가합니다

제거

# Remove plugin from AdaptixC2
./scripts/uninstall.sh /path/to/AdaptixC2

# Destroy AWS infrastructure
cd deploy/aws && terraform destroy

프로젝트 구조

adaptix-serverless-c2/
  agent/
    src_beacon/              # Kharon implant (C++ source)
    src_loader/              # Loader wrappers (EXE, DLL, SVC)
  deploy/
    aws/
      main.tf                # Lambda + DynamoDB + IAM + KMS
      variables.tf           # Terraform variables
      outputs.tf             # Output Lambda URL and table ARNs
      lambda/
        main.go              # Lambda relay handler
  listener/
    pl_main.go               # AdaptixC2 plugin entry (Teamserver interface)
    pl_transport.go          # DynamoDB polling, Kharon protocol, LokyCrypt
    ax_config.axs            # Listener creation UI
    config.yaml              # Plugin metadata
  kharon/
    agent_kharon/            # AXS commands + config for Kharon agent extender
    listener_kharon_http/    # AXS + config for Kharon HTTP listener extender
  patches/                   # AdaptixC2 source patches
  profiles/
    lambda_default.json      # Malleable profile for Lambda URL
  scripts/
    install.sh               # Full install into AdaptixC2
    uninstall.sh             # Reverse patches + cleanup
    build_relay.sh           # Cross-compile Lambda binary
    build_agent.sh           # Build Kharon agent shellcode
    build_objects.sh         # Build beacon objects
    deploy_infra.sh          # Terraform init + apply
도구 다운로드