Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CaddySmith — Cobalt Strike 또는 Sliver C2 프로필에서 Caddy 리디렉터 구성을 생성합니다. | Kitploit
도구/GitHubGitHub/icecubesandwich/caddysmith
Penetration Testing FrameworksWeb Proxies & InterceptionIDS/IPS EvasionCommand and ControlRed TeamingPayload Development
GitHubicecubesandwich/caddysmith

CaddySmith

Cobalt Strike 또는 Sliver C2 프로필에서 Caddy 리디렉터 구성을 생성합니다.

저장소 보기
231개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CaddySmith

CaddySmith는 Cobalt Strike 또는 Sliver C2 프로필을 읽어서 Caddy 웹 서버 설정을 생성하는 작은 Python 스크립트입니다. 생성된 Caddyfile은 일반 Linux 서버를 리다이렉터로 바꿔줍니다: 합법적인 비콘 트래픽은 팀 서버로 리버스 프록시되고, 그 외 모든 것(스캐너, 검색 봇, 블루 팀 프로브, 임의 curl)은 데코이 URL로 보내집니다.

Apache보다 훨씬 쉽게 빠르게 설정할 수 있는 웹 서버인 Caddy를 사용하기 위해 이 도구를 만들었습니다. Caddy는 단일 정적 바이너리, 자동 Let's Encrypt 인증서, a2enmod 과정이 필요 없습니다.

승인된 작업만 가능합니다. 이는 공격적 보안 도구입니다. 테스트 권한을 서면으로 받은 환경에서만 실행하세요.

지원되는 프로필 형식

CaddySmith는 파일 내용에서 형식을 자동 감지합니다:

  • Cobalt Strike — set uri "/foo" 지시어가 있는 고전적인 텍스트 형식. 각 HTTP-GET / HTTP-POST URI는 프로필의 클라이언트 헤더가 적용된 정확한 경로 라우트가 됩니다.
  • Sliver — Sliver에서 내보낸 JSON 임플란트 구성. Sliver는 고정 URI를 사용하지 않습니다. 비콘 빌드 시 path / file / extension 목록에서 URI를 생성합니다. CaddySmith는 최상위 경로 접두사를 glob으로 일치시키고 (예: path /api* /static* /resources*), UA의 Chrome 빌드 번호 하위 문자열 매칭을 수행합니다 (Sliver의 플랫폼별 UA 재작성에도 유지됨).

--profile-type cobaltstrike 또는 --profile-type sliver로 특정 파서를 강제할 수도 있습니다.

기능

프로필 파일이 주어지면 스크립트는 다음을 추출합니다:

  • User-Agent 문자열
  • URI (CS) 또는 경로 접두사 (Sliver)
  • 클라이언트 측 헤더 (CS 전용 — Sliver는 특정 헤더를 지정하지 않음)
  • Host 헤더 (--server-name을 전달하지 않으면 리다이렉터의 도메인 이름으로 사용)
  • 스테이징 활성화 여부 (CS 전용 — set host_stage)

그런 다음 다음과 같은 Caddyfile을 빌드합니다:

  1. (선택 사항) 일반 HTTP 트래픽에 403 반환
  2. 약 15개의 알려진 나쁜 사용자 에이전트 차단 (curl, nmap, sqlmap, Googlebot 등)
  3. 직접 IP 접근 및 GET/POST가 아닌 모든 HTTP 메서드 차단
  4. 일치하는 User-Agent 조건 하에 프로필의 URI(또는 Sliver의 접두사)만 리버스 프록시
  5. 일반적인 스캐너 프로브 경로 차단 (.env, /wp-admin, .php 등)
  6. 나머지는 모두 데코이 URL로 리디렉션

요구 사항

  • Python 3.7+ (표준 라이브러리만 사용, pip install 불필요)
  • 리다이렉터 자체에 Caddy 2.x (설치 가이드)

빠른 시작

root@kitploit:~
python3 caddysmith.py my.profile \
    --backend https://teamserver.internal:443 \
    --decoy   https://www.example.com/ \
    --server-name redirector.example.com \
    --email   [email protected] \
    --forbid-http \
    -o redirector.caddy

이 명령은 생성된 설정을 redirector.caddy에 쓰고 stderr에 수행된 작업 요약을 출력합니다.

생성된 설정 배포

옵션 A: Caddyfile 직접 실행

생성된 파일을 리다이렉터로 복사하고 Caddy를 실행합니다. Caddy는 기본적으로 JSON 설정을 사용하므로 --adapter caddyfile 플래그가 필요합니다:

root@kitploit:~
caddy run --config /etc/caddy/redirector.caddy --adapter caddyfile

실행 중인 인스턴스에 업데이트된 설정을 다시 로드하려면:

root@kitploit:~
caddy reload --config /etc/caddy/redirector.caddy --adapter caddyfile

Caddy가 형식 불일치에 대해 경고하면 다음으로 정리하세요:

root@kitploit:~
caddy fmt --overwrite /etc/caddy/redirector.caddy

옵션 B: 메인 Caddyfile에서 가져오기

파일을 /etc/caddy/에 넣고 메인 Caddyfile에서 가져옵니다:

root@kitploit:~
# /etc/caddy/Caddyfile
import /etc/caddy/redirector.caddy

--email을 전달했다면 (권장), 생성된 스니펫에 전역 옵션 블록이 이미 포함되어 있으므로 메인 Caddyfile에는 import 줄만 있으면 됩니다. 전달하지 않았다면 { } 블록에 이메일을 수동으로 추가하고 import 위에 넣으세요.

그런 다음 검증 및 다시 로드:

root@kitploit:~
sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy

A 레코드가 리다이렉터를 가리키는 한 Caddy는 --server-name 도메인에 대해 Let's Encrypt 인증서를 자동으로 프로비저닝합니다.

모든 플래그

정책 모드

  • strict (기본값) — User-Agent, 모든 클라이언트 헤더, 직접 IP, HTTP 메서드 및 프로브 경로 확인
  • lax — 잘못된 사용자 에이전트만 차단, 경로별 헤더 일치 없음
  • none — 프로필 URI에 대한 모든 요청을 프록시, 필터링 없음

보통은 strict를 원합니다. Lax는 실제 비콘이 연결되지 않는 이유를 디버깅할 때 유용합니다.

작업 예제

Amazon 엔드포인트를 모방하는 프로필이 있고 redirector.0xtb.sh에 배포하려는 경우:

root@kitploit:~
python3 caddysmith.py amazon.profile \
    --backend https://10.1.1.10:443 \
    --decoy   https://www.amazon.com/ \
    --server-name redirector.0xtb.sh \
    --forbid-http \
    --policy strict \
    -o /etc/caddy/redirector.caddy

요약은 어떤 경로가 생성되었는지 정확히 보여줍니다. 예:

root@kitploit:~
Routes built:   2
  - [profile-get] /broadcast
  - [profile-post] /1/events/com.amazon.csm.csa.prod

다시 생성했는데 경로가 없다면 스크립트가 프로필을 구문 분석하지 못한 것입니다. stderr의 경고를 확인하세요.

Sliver 예제

Sliver 임플란트 설정 (JSON)의 경우:

root@kitploit:~
python3 caddysmith.py sliver-implant.json \
    --backend https://10.1.1.10:443 \
    --decoy   https://www.amazon.com/ \
    --server-name redirector.0xtb.sh \
    --email   [email protected] \
    --forbid-http \
    --policy strict \
    -o /etc/caddy/redirector.caddy

요약은 Sliver가 감지되었음을 알리고 접두사 경로를 보여줍니다:

root@kitploit:~
Profile type:   sliver
Routes built:   1
  - [sliver] /api /public /resources /services /static (prefix)

Sliver는 path × file × extension 조합에서 무작위로 URI를 생성하므로, 생성된 path 매처는 정확한 경로 대신 접두사 glob (path /api* /public* /resources* /services* /static*)을 사용합니다. User-Agent 매처는 Chrome 빌드 번호의 하위 문자열 (예: 3921.146)을 사용하는데, Sliver가 플랫폼별 UA 재작성에서 이를 유지합니다.

배포 후 연기 테스트

root@kitploit:~
# 일반 HTTP는 403이어야 함 (--forbid-http 사용 시)
curl -I http://redirector.0xtb.sh/

# 베어 호스트네임은 데코이로 리디렉션되어야 함
curl -kI https://redirector.0xtb.sh/

# 잘못된 UA도 리디렉션되어야 함
curl -kI -A "curl/8.4.0" https://redirector.0xtb.sh/broadcast

# 올바른 UA + 경로를 가진 요청은 프록시 통해 200 반환
# strict 모드에서는 프로필의 모든 클라이언트 헤더도 함께 보내야 함

알려진 제한 사항

  • 스테이징 규칙이 생성되지 않음 (Cobalt Strike). CS 프로필에 set host_stage "true"가 있거나 전혀 설정되지 않은 경우, 스크립트는 경고하고 스테이저 URI를 건너뜁니다. 프로필에 set host_stage "false";를 추가하거나 --extra-uri를 통해 스테이저 URI를 명시적으로 전달하세요.
  • Sliver 접두사 일치는 CS 정확 일치보다 넓습니다. Sliver를 사용하면 프록시 경로가 /api, /static 등으로 시작하는 모든 URL을 차지합니다. 이러한 접두사를 사용하는 스캐너 프로브 (예: /api/.env)는 로컬에서 차단되지 않고 팀 서버로 전송되지만, Sliver 자체 HTTP 전송은 임플란트 ID를 통해 인증하므로 승인되지 않은 요청은 C2 계층에서 거부됩니다. UA 게이팅은 여전히 대부분의 스캐너를 차단합니다.
  • 실행당 하나의 백엔드. 모든 경로는 동일한 --backend로 프록시됩니다. 여러 팀 서버가 필요한 경우 스크립트를 여러 번 실행하고 수동으로 병합하세요.
  • 프로필 URI 구문 분석은 라인 기반입니다 (Cobalt Strike). set uri "/path1 /path2";는 작동하지만 (한 줄에 여러 경로), 특이한 서식은 파서를 혼란시킬 수 있습니다. 요약의 경로 목록을 확인하세요.
  • HTTPS 백엔드 인증서 확인이 기본적으로 비활성화됩니다. 팀 서버는 일반적으로 자체 서명 인증서를 사용하므로 생성된 설정에는 tls_insecure_skip_verify가 포함됩니다. 백엔드에 실제 인증서가 있는 경우 생성된 파일에서 해당 줄을 삭제하세요.

크레딧

Apache 기반 Malleable-Redirector가 이 스크립트가 생성하는 것의 시작점이었으며, 동일한 세 가지 트랙 URI 모델 (프로필 URI / 추가 URI / 느슨한 URI), 동일한 정책 모드, 동일한 일반적인 레이아웃을 사용합니다. CaddySmith는 출력을 Apache .htaccess 대신 Caddy 구문으로 변환합니다.

라이선스

MIT

도구 다운로드
플래그기본값설명
profile(필수).profile 파일 경로
--backendhttps://teamserver.local:443일치하는 트래픽을 프록시할 위치
--decoyhttps://www.example.com/일치하지 않는 트래픽의 리디렉션 대상
--server-namec2.example.com리다이렉터의 도메인 이름
--policystrictstrict, lax 또는 none
--profile-typeautocobaltstrike 또는 sliver 강제 (기본값: 자동 감지)
--extra-uri PATH—프록시할 추가 URI (UA 검사 포함). 반복 가능.
--lax-uri PATH—프록시할 추가 URI (검사 없음). 반복 가능.
--allow-ua STRING—--extra-uri 경로에서 허용할 추가 UA. 반복 가능.
--forbid-httpoff일반 HTTP에 403 반환
--email EMAIL—Let's Encrypt 등록 및 갱신 알림을 위한 이메일
-o, --output FILEstdout설정을 파일에 작성