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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Cisco-FMC-honeypot — 원래 CVE-2026-20131용 허니팟 | Kitploit
도구/GitHubGitHub/hassan-pouladi/cisco-fmc-honeypot
Vulnerability AnalysisNetwork SecurityMalware AnalysisThreat IntelligenceIncident Response
GitHubhassan-pouladi/cisco-fmc-honeypot

Cisco-FMC-honeypot

원래 CVE-2026-20131용 허니팟

저장소 보기
1132개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

FMC-트랩

저상호작용 허니팟으로, Cisco Secure Firewall Management Center (FMC) 웹 표면을 모방하고 인증되지 않은 Java 직렬화 스타일 공격 트래픽(CVE 스타일 안전하지 않은 역직렬화 프로브)을 캡처합니다.

  • 안전한 설계: 애플리케이션은 Java 객체를 역직렬화하지 않습니다. \xac\xed\x00\x05(및 Base64 rO0AB…)를 탐지하고 정규 표현식 및 휴리스틱을 사용하여 셸 또는 URL 문자열을 추출합니다.
  • 명령 실행 없음: 2단계 URL은 **Python requests**를 사용하여 실행 불가능한 다운로드 볼륨으로만 검색합니다.
  • 프로덕션 지향 스택: Docker Compose + Gunicorn 및 선택적 Caddy(HTTPS, Let's Encrypt).

실행 이유

한 줄 JSON 로그(Splunk 및 ELK 호환), 선택적 Telegram 알림, 해시된 2단계 아티팩트, 비루트 컨테이너 사용자. 이 프로젝트는 추가 통합 코드 없이 집중적인 FMC 스타일 트랩이 필요한 연구자를 대상으로 합니다.

요구 사항

항목참고
Docker 및 Docker Compose v2Docker 설치
VPS 또는 호스트전용 또는 격리된 네트워크 세그먼트 권장
도메인 (선택 사항)HTTPS용: DNS 구성 및 호스트로의 인바운드 TCP 80 및 TCP 443 허용

빠른 시작 (약 5분)

1. 클론

root@kitploit:~
git clone https://github.com/Hassan-Pouladi/Cisco-FMC-honeypot
cd FMC-Trap

2. 환경 구성

root@kitploit:~
cp .env.example .env

필요에 따라 .env를 편집합니다(환경 변수 참조). 번들 Caddy 뒤에 배포하는 경우 **TRUST_X_FORWARDED_FOR=1**로 설정하여 로그의 클라이언트 IP 주소가 원래 클라이언트를 반영하도록 합니다.

3. Caddy를 도메인에 지정

**Caddyfile**을 편집하여 플레이스홀더 호스트 이름을 사용자의 도메인(및 해당되는 경우 www)으로 바꿉니다:

root@kitploit:~
example.com, www.example.com {
	reverse_proxy fmc-trap:5000
}

선택적으로 Caddyfile에서 전역 email [email protected] 블록의 주석을 해제하여 Let's Encrypt 만료 알림을 받을 수 있습니다.

4. DNS 및 방화벽 (HTTPS)

  • A(및 해당되는 경우 AAAA) 레코드를 생성합니다: yourdomain.com → 서버의 공인 IP, www도 사용하는 경우 추가.
  • 호스트에서 인바운드 TCP 80 및 TCP 443을 허용합니다(클라우드 보안 그룹 및 호스트 방화벽, 예: ufw allow 80,443/tcp).

5. 데이터 디렉터리 (필수)

애플리케이션은 컨테이너 내부에서 UID **10001**로 실행됩니다. 바인드 마운트된 ./data 디렉터리는 쓰기 가능해야 합니다:

root@kitploit:~
mkdir -p data/logs data/downloads
sudo chown -R 10001:10001 data/logs data/downloads

올바른 소유권이 없으면 악용 POST 요청이 500을 반환할 수 있습니다(로그 또는 원시 블롭을 쓸 때 Permission denied).

6. 시작

root@kitploit:~
docker compose up -d --build

7. 확인

root@kitploit:~
docker compose ps
curl -sI https://yourdomain.com/

HTTP/2 200(또는 301 또는 302) 및 **Via: Caddy**가 예상됩니다. 브라우저에서 **https://yourdomain.com/**는 시뮬레이션된 FMC 로그인 페이지를 표시해야 합니다.

이벤트, 페이로드 및 Docker 출력을 읽을 위치는 로그, 다운로드 및 서비스 출력 찾기 및 일반 작업을 참조하세요.

로그, 다운로드 및 서비스 출력 찾기

아래 모든 내용은 프로젝트 디렉터리(docker-compose.yml이 포함된 폴더, 일반적으로 클론 후 FMC-Trap)를 기준으로 합니다. 경로는 호스트 기준이며, Docker가 이를 컨테이너에 바인드 마운트합니다.

항목호스트 경로열기 또는 팔로우 방법
이벤트 로그 (JSON 라인)data/logs/fmc-trap.jsontail -f data/logs/fmc-trap.json (실시간 스트림), 또는 편집기에서 열기, 또는 Splunk/ELK로 수집
다운로드된 2단계 페이로드data/downloads/수집기가 원격 응답을 저장할 때만 파일이 나타납니다. 각 파일은 SHA256 해시(64자 16진수)로 이름 지정되며, 확장자 없음. ls -la data/downloads(Linux/macOS) 또는 Get-ChildItem data\downloads(Windows PowerShell)로 나열
애플리케이션 프로세스 출력파일 아님; Dockerdocker compose logs -f fmc-trap
Caddy (TLS, 프록시, ACME)파일 아님; Dockerdocker compose logs -f caddy
Telegram 알림 (선택 사항)data/에 저장되지 않음.env에서 TELEGRAM_BOT_TOKEN 및 TELEGRAM_CHAT_ID 설정; 이벤트가 기록될 때 알림 전송

로그 파일에 무언가 나타날 때: fmc-trap.json은 요청이 역직렬화 프로브 동작(POST의 매직 바이트)과 일치할 때 한 줄에 하나의 JSON 객체를 받습니다. 가짜 로그인 페이지에 대한 일반적인 GET 요청은 기본적으로 이 파일에 기록되지 않습니다.

다운로드 폴더에 파일이 있을 때: 파이프라인이 프로브에서 URL을 추출하고 수집기가 MAX_DOWNLOAD_MB 내에서 허용된 원격 콘텐츠를 성공적으로 가져온 경우에만 항목이 나타납니다. 디렉터리가 비어 있으면 아직 적격 URL이 없거나 애플리케이션의 정책에 따라 가져오기가 차단되었을 수 있습니다.

JSON 예쁘게 출력 (선택 사항): 단일 라인의 경우 python -m json.tool로 파이프하거나 jq(설치된 경우)를 사용하세요.

일반 작업

목표명령 또는 동작
컨테이너가 실행 중인지 확인docker compose ps
.env 또는 Caddyfile 편집 후 재시작docker compose up -d --build (또는 env만 변경된 경우 docker compose up -d --force-recreate)
스택 중지docker compose down
새 JSON 이벤트를 지속적으로 팔로우tail -f data/logs/fmc-trap.json
최근 몇 개 이벤트 확인tail -n 50 data/logs/fmc-trap.json
다운로드된 아티팩트 개수 세기파일 관리자에서 data/downloads 열기, 또는 해당 디렉터리에서 쉘 파일 개수 사용 (파일은 SHA256으로 이름 지정)
허니팟 페이지 로드 확인브라우저에서 https://yourdomain.com/ 열기 또는 확인 단계에서 curl -sI 사용

아키텍처

root@kitploit:~
Internet :443/:80 → Caddy (TLS, Let's Encrypt) → fmc-trap:5000 (Gunicorn/Flask)
                              ↓
                    ./data/logs, ./data/downloads (bind mounts)
  • Caddy만 호스트에 80 및 443을 게시합니다. 애플리케이션 컨테이너는 직접 노출되지 않습니다(Compose에서 expose: "5000" 참조).
  • Caddy는 컨테이너 내부에서 공용 DNS 리졸버(1.1.1.1, 8.8.8.8)를 사용하여 Docker에서 VPS 리졸버에 연결할 수 없는 호스트(일부 클라우드 제공업체의 일반적인 제한)에서도 Let's Encrypt가 성공하도록 합니다.

환경 변수

변수목적기본값 / 참고
TRUST_X_FORWARDED_FOR첫 번째 X-Forwarded-For 홉을 src_ip로 사용Caddy 사용 시 1 권장
DECEPTION_STATUS200은 HTML 본문 반환; 302는 리디렉션 반환200
DECEPTION_REDIRECT_URL상태가 302일 때 대상 경로/
MAX_DOWNLOAD_MBURL당 수집기 제한16
TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID선택적 알림비어 있으면 알림 비활성화
FMC_SERVER_HEADERServer 응답 헤더nginx
VT_API_KEY예약됨선택 사항

Compose는 이러한 변수를 fmc-trap 서비스로 전달합니다. 자세한 내용은 docker-compose.yml을 참조하세요.

JSON 로그 필드 (참조)

data/logs/fmc-trap.json의 각 줄은 하나의 JSON 객체입니다. 일반적인 키로는 timestamp, event_type, src_ip, headers, raw_payload_hash, extracted_commands 및 파일이 저장된 경우 downloaded_file_hash가 있습니다. data/downloads/에 저장된 블롭은 모드 0400(소유자 읽기 전용)을 사용합니다.

문제 해결

증상해결 방법
data/ 아래에 쓸 때 Permission denied 오류sudo chown -R 10001:10001 data/logs data/downloads 실행
Bind for 0.0.0.0:80 failed: port is already allocated다른 서비스나 컨테이너가 80에 바인딩되어 있습니다. 해당 서비스를 중지하거나 80을 해제하세요. 호스트당 하나의 프로세스만 80에서 수신할 수 있습니다.
Caddy 로그에 Let's Encrypt 또는 ACME 오류DNS가 이 서버로 확인되고 80 및 443이 인터넷에서 연결 가능한지 확인하세요. Compose는 호스트 리졸버가 Docker 내부에서 실패할 때 Caddy에 대해 DNS 1.1.1.1 및 8.8.8.8을 구성합니다.
첫 번째 시도에서 curl로 HTTPS 연결 시 출력이 비어 있거나 실패docker compose logs caddy에서 certificate obtained successfully가 나타날 때까지 기다리세요.
로그의 클라이언트 IP가 172.x.x.x로 표시됨Caddy 사용 시 **TRUST_X_FORWARDED_FOR=1**을 설정한 후 컨테이너를 다시 생성하세요: docker compose up -d --force-recreate.

선택 사항: localhost에서 애플리케이션 노출 (디버깅)

Caddy 없이 Gunicorn에 직접 접근하려면 docker-compose.yml의 fmc-trap 아래에 다음을 추가하세요:

root@kitploit:~
ports:
  - "127.0.0.1:5000:5000"

프로덕션에서 Caddy가 TLS를 종료할 때 애플리케이션을 0.0.0.0에 바인딩하지 마십시오.

보안

  • 전용 VPS 또는 격리된 네트워크에 배포하세요. 이 서비스는 악성 트래픽을 처리하며 분석을 위해 악성 코드를 다운로드할 수 있습니다.
  • Telegram 토큰 및 기타 비밀은 호스트의 .env에만 저장하세요(절대 .env를 커밋하지 마세요).
  • 방화벽을 필요한 최소 포트(80 및 443(HTTPS용))로 제한하세요.

법적 및 윤리적 사용

소유한 시스템 또는 명시적으로 계측 배포 권한이 부여된 시스템에만 배포하세요. 허니팟은 공격 트래픽과 악성 코드를 수집할 수 있습니다. 해당 법률 및 조직 정책을 준수하세요. 이 소프트웨어는 보안 연구 목적으로 사용됩니다.

도구 다운로드