
CVE-2024-23700의 실행 시나리오를 보여주는 C2 서버 데모 소스 코드
[cite_start]이 프로젝트는 CVE-2024-23700 권한 상승 취약점 악용 실험 시나리오를 위한 명령 및 제어(Command & Control - C2 Server) 서버의 설계 및 구축을 보여줍니다[cite: 2]. [cite_start]이 서버는 대상 Android 기기에서 탈취된 민감 데이터를 수신, 처리, 분류 및 표시하는 역할을 합니다[cite: 3].
이 저장소의 문서와 소스 코드는 학습, 보안 분석 및 허가된 환경에서의 테스트 목적으로만 제공됩니다. 합법적인 테스트 범위에 속하지 않는 기기, 계정 또는 데이터에는 사용하지 마십시오.
과목: 모바일 기기 보안
수행 팀: 4명의 팀원으로 구성된 팀이 수행한 프로젝트입니다.
이 C2 Server 설계 프로젝트를 연구하고 완성하는 과정에서 팀은 다음과 같은 작업을 담당했습니다:
data.json 형태의 저장 시스템 설계.C2 Server 시스템은 Client-Server 모델을 적용하며, 악성 Android 애플리케이션(PoC)이 Client 역할을 하여 지속적으로 데이터를 서버로 전송합니다. C2 아키텍처는 높은 속도와 유연성을 보장하기 위해 독립적으로 처리되는 두 가지 구성 요소로 나뉩니다.
C2 Server의 주요 동작 흐름:
/은 이중 처리 메커니즘으로 설계되었습니다. GET 메서드(브라우저 스캔)로 접근하면 서버는 회피를 위해 가짜 404 오류를 반환합니다. 악성 코드에서 JSON 형식의 POST 메서드를 수신하면 서버는 이를 수락하고 기기 식별자를 추출합니다.s_cache, gps_cache).data.json의 저장 목록 맨 앞에 푸시됩니다./api/data에 GET 요청을 보내 데이터베이스를 읽습니다.device_id)를 가진 패킷을 자동으로 그룹화하고, 구조를 깊이 스캔하여 하드웨어 정보(RAM, 배터리, OS)를 추출한 후 레이더에 시각적으로 표시합니다.취약점 코드: CVE-2024-23700
Android 심각도: Critical
관련 구성 요소: Android Companion Device Manager
참조 패치: Android Wear Security Bulletin 2024-05-01
이 C2 서버는 실험 네트워크의 일부로 설계되었으며, 위 취약점을 통해 성공적으로 악용된 Android 기기에서 인텔리전스 데이터 스트림을 수신합니다.
CVE-2024-23700-C2-Server/
├── backend/
│ ├── app.py - API Endpoint 초기화, 위장 처리 및 JSON 분류
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── pages/
│ │ │ ├── Dashboard.jsx - 기기 개요 레이더 화면
│ │ │ └── DeviceDetails.jsx - Payload 심층 분석 대화상자
│ │ ├── App.jsx
│ │ └── App.css
│ ├── package.json
│ └── nginx.conf - Frontend용 Reverse Proxy 사용자 지정
├── data.json - 레코드 저장용 플랫 파일 DB (볼륨 마운트됨)
├── docker-compose.yml - 컨테이너 및 내부 네트워크 관리
├── .gitignore
└── README.md
복잡한 로직 대신, 서버는 반환된 데이터 블록(cache)을 기반으로 자동으로 인식하고 라벨을 지정하며, Frontend 인터페이스는 스마트 사전(MODULE_MAP 및 COLUMN_TRANSLATIONS)을 통합하여 결과를 표준화하고 "현지화"합니다:
s_cache).c_cache).cal_cache).n_cache).gps_cache).또한, 시스템은 원시 timestamp를 읽기 쉬운 현지 시간 표준으로 자동 변환하고 숫자 코드를 실제 상태로 해석합니다(예: 통화 유형 1 = "↙️ 수신 전화").
전체 C2 인프라는 환경 차이를 제거하고 일관성을 보장하기 위해 docker compose로 운영됩니다. 구조는 두 가지 주요 서비스를 실행합니다:
data.json 파일을 컨테이너 내부의 /app/data.json 메모리 영역에 연결합니다. 이를 통해 컨테이너가 삭제되거나 재시작되어도 인텔리전스 데이터가 영구적으로 저장됩니다. 이 서비스는 restart: always 정책을 적용합니다./api/ 접두사가 있는 모든 API 요청은 보안 강화를 위해 Backend로 자동 전달(proxy_pass)됩니다. 이 컨테이너는 초기 연결 오류를 방지하기 위해 Backend 이후에 시작되어야 합니다(depends_on).data.json 파일에 적절한 읽기/쓰기 권한이 설정되어 있는지 확인해야 합니다.| 구성 요소 | 설명 | 경로 |
|---|
Backend Flask (app.py) | 제어 센터(C2), 데이터를 수신, 분류 및 data.json에 저장. | backend/app.py |
| Dashboard Radar | 중앙 제어판, 대상 그룹화 및 HW/OS 정보, payload 수 표시. | frontend/src/pages/Dashboard.jsx |
| Device Details Modal | 피해자 데이터 분석 인터페이스(Modal XL), Accordion 시스템 및 동적 데이터 테이블 제공. | frontend/src/pages/DeviceDetails.jsx |
| Docker 구성 파일 | Reverse Proxy를 통한 Backend(포트 5000) 및 Nginx Frontend(포트 80) 배포 조정. | docker-compose.yml |