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
3041027일 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
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/ 디렉터리(certs, 데이터베이스, 프로필)를 백업합니다
  2. BeaconServerless 커넥터 지원을 위한 소스 패치를 적용합니다
  3. 서버 바이너리에서 GOEXPERIMENT 플래그를 감지합니다
  4. 일치하는 플래그로 리스너 플러그인(.so)을 빌드합니다
  5. AdaptixC2 서버와 확장기(extender)를 재빌드합니다
  6. 백업한 파일(certs, 데이터베이스, 프로필)을 복원합니다
  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(기본값 5s), 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 리전인프라가 배포되는 리전us-east-1
Lambda URLTerraform 출력에서 얻은 함수 URL(필수)
Relay API 키Terraform의 relay_api_key와 일치해야 함(선택 사항)
인바운드 테이블에이전트 체크인용 DynamoDB 테이블adaptix-inbound
아웃바운드 테이블서버 응답용 DynamoDB 테이블adaptix-outbound
폴링 간격DynamoDB를 확인하는 빈도 (초)5
TTL 시간DynamoDB 레코드 만료24

주요 기술 세부 사항

Kharon 와이어 프로토콜

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

  • 신규 에이전트 (등록): [36-byte UUID][encrypted_checkin_data][16-byte LokyCrypt key]
  • 연결된 에이전트 (GetTask): [36-byte UUID][encrypted_payload] (후행 키 없음)
  • !연결된 에이전트 (키 덮어쓰기): 페이로드가 작을 때 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
도구 다운로드