
CVE 연구-탐지 시그니처 엔지니어링 프로젝트: 검증된 오탐/미탐 처리를 통해 대규모로 외부에서 vsftpd 2.3.4 백도어(CVE-2011-2523)를 지문 식별 - Python으로 구축
CVE를 탐지 시그니처 엔지니어링 프로젝트로 연결: 공개된 취약점을 연구하고, 이를 외부에서 식별하는 핑거프린트를 구축하며, 실제 랩 타깃에 대해 탐지 품질을 검증합니다.
대부분의 취약점 연구 포트폴리오는 "나는 X를 익스플로잇했다"에서 멈춥니다. 이 프로젝트는 탐지 엔지니어링이 실제로 묻는 질문에 더 가까운, 다른 질문을 중심으로 구축되었습니다:
CVE가 공개된 후, 아무것도 익스플로잇하지 않고 외부에서 대규모로, 인터넷에 노출된 자산 중 실제로 취약한 기술을 실행 중인 자산을 어떻게 안정적으로 식별할 수 있을까요?
이 저장소는 실제 CVE 하나, CVE-2011-2523 (vsftpd 2.3.4 백도어)에 대한 전체 워크플로우를 문서화합니다. 취약점 연구부터 핑거프린트 설계, 탐지 스크립트 엔지니어링, 실제 랩 타깃에 대한 검증까지 다루며 — 의도적으로 익스플로잇이 아닌 탐지로 구축되었습니다.
| 핵심 기능 | 이 저장소 내 위치 |
|---|---|
| 새로 공개된 CVE 및 권고 조사 | docs/CVE-RESEARCH.md — CVE-2011-2523 배경, 영향받는 버전, 공개 타임라인 |
| 기술 핑거프린트 및 탐지 시그니처 설계 | fingerprint_vsftpd_cve_2011_2523.py — 배너 기반 버전 매칭 시그니처 |
| 확장 가능한 탐지 로직 구축 | 배치 모드(--targets-file)로 한 번의 실행에서 여러 호스트 핑거프린팅 |
| 실제 자산을 사용한 탐지 검증 | 실제 랩 타깃(Metasploitable2 + 닫힌 포트 대조군)에 대해 실행 및 검증 |
| 오탐(false positive) / 미탐(false negative) 감소 | 불리언 대신 3-상태 판정 로직(vulnerable / not_vulnerable / undetermined) — 닫혀 있거나 필터링된 포트가 조용히 "취약하지 않음"으로 처리되지 않음 |
| 연구 및 검증을 위한 Python 스크립팅 | 전체 탐지 스크립트 + JSON 증거 출력, 수동 단계 없음 |
| HTTP/HTTPS, 네트워킹 기초 | 원시 TCP/소켓 레벨 서비스 상호작용, 배너 파싱 |
| 인터넷 노출 인프라에 초점 | 외부, 무인증 핑거프린팅용으로 설계 — 자격 증명 없음, 익스플로잇 없음, 서비스 중단 없음 |
CVE 공개 → 연구 및 버전 분석 → 핑거프린트 설계
→ 탐지 스크립트 → 검증 (TP/FP/FN 검토) → 증거 출력
220 환영 배너에서 정확한 버전을 알립니다. 해당 배너가 핑거프린트 표면입니다 — 이를 읽는 데 인증이나 익스플로잇이 필요 없습니다.fingerprint_vsftpd_cve_2011_2523.py가 연결하여 배너를 캡처하고, 알려진 취약 시그니처와 정규식 매칭 후 결과를 분류합니다.undetermined을 올바르게 보고하는지 확인)에 대해 실행합니다.스크린샷 파일을 업로드한 뒤
/screenshots에 맞게 이름을 변경하거나 경로를 업데이트하세요.
| 핑거프린트 스크립트 | 검증 출력 |
|---|---|
| Script | Output |
추가 실행 상세:
Detail Detail Detail Detail
# 단일 타깃
python3 fingerprint_vsftpd_cve_2011_2523.py --target 192.168.56.101
# 배치 — 여러 호스트, 증거 형식 JSON 출력
python3 fingerprint_vsftpd_cve_2011_2523.py --targets-file targets.json \
--output evidence/vsftpd_fingerprint_findings.json
샘플 출력:
{
"scan_type": "vsftpd_2.3.4_backdoor_fingerprint",
"cve": "CVE-2011-2523",
"total_targets": 1,
"vulnerable_count": 1,
"findings": [
{
"host": "192.168.56.101",
"port": 21,
"banner": "220 (vsFTPd 2.3.4)",
"verdict": "vulnerable",
"reason": "Banner matches known vulnerable signature (vsftpd 2.3.4)"
}
]
}
| 테스트 케이스 | 타깃 유형 | 예상 판정 | 결과 |
|---|---|---|---|
| 취약한 것으로 알려진 호스트 | Metasploitable2 (vsftpd 2.3.4) | vulnerable | 확인됨 |
| 닫힌/필터링된 포트 | 리슨 중이 아닌 포트 | undetermined (조용한 미탐이 아님) | 확인됨 |
| 비-vsftpd 서비스 | 기타 FTP 배너 | not_applicable | 확인됨 |
이 3분할은 프로젝트의 핵심 탐지 품질 관리입니다. 순진한 탐지기는 "확인 불가"와 "확인 결과 이상 없음"을 동일한 결과로 합쳐버리는데, 이것이 바로 운영 탐지 로직에서 미탐이 숨는 방식입니다.
.
├── fingerprint_vsftpd_cve_2011_2523.py
├── docs/
│ └── CVE-RESEARCH.md
├── evidence/
│ └── vsftpd_fingerprint_findings.json
├── screenshots/
│ └── (스크립트 + 검증 실행 스크린샷)
└── README.md
사이버보안 엔지니어 | 탐지 엔지니어 | 취약점 연구원 | 퍼플 팀 | SIEM | 엔터프라이즈 보안
연구-탐지 파이프라인에 집중: 공개된 CVE를 권고문에서부터, 취약한 기술을 외부에서 대규모로 식별할 수 있는 작동하고 검증된 핑거프린트로 전환합니다 — 이론만이 아닌 실습 기반의 공격 및 방어 랩 작업 위에 구축되었습니다.
https://www.linkedin.com/in/bassey-solomon-henry/
GitHub
https://github.com/solomonhenry-afk/Bassey-Solomon-Henry
"취약점은 규모에 맞게 어떤 시스템이 실제로 해당 취약점을 가지고 있는지 증명할 수 있을 때까지 진짜 위험이 아닙니다. 연구는 무엇이 가능한지 알려주고, 탐지 엔지니어링은 무엇이 사실인지 알려줍니다."
이 프로젝트가 유용하다면, 저장소에 스타(star)를 남기는 것을 고려해 주세요.