DFIR 조사 + 시뮬레이션된 NexaCorp 침입(vsftpd 2.3.4 CVE-2011-2523 + MITRE Caldera C2)에 대한 7개의 Suricata 규칙. 4일간의 단독 작업(BeCode Brussels Mission 01). 54페이지 보고서, 10개의 발견 사항, 7/7 규칙이 PCAP 재생으로 검증됨.
DFIR 조사 및 침입 탐지 엔지니어링: NexaCorp 인프라에 대한 시뮬레이션 침입 분석. 단독 4일 참여 (BeCode Brussels Blue & Red Team 부트캠프, Mission 01)로 수행. 산출물은 54페이지 조사 보고서(PDF)와 PCAP 재생에서 포착된 사고를 탐지하는 검증된 7개의 Suricata 규칙입니다.
이 저장소는 BeCode 사이버 보안 부트캠프 (2025-2026년 프로모션)의 일환으로 수행된 SOC 분석가 참여를 문서화합니다. 네트워크 및 로그 증거로부터 전체 침입을 재구성한 후, 검증된 Suricata 탐지 규칙 세트를 제공합니다. NexaCorp DFIR 시리즈의 첫 번째 사고입니다.
이것은 가상 인프라를 대상으로 한 실습 참여입니다. NexaCorp는 BeCode Brussels Mission 01 시나리오로 사용된 가상의 클라이언트입니다. 손상된 호스트는 보안 교육을 위해 의도적으로 취약하게 만든 Metasploitable 2 VM이며, Caldera Sandcat 임플란트는 분석가에게 실제 침입자의 비콘 트래픽이 어떻게 생겼는지 가르쳐주는 실습의 일부입니다. 실제 조직, 네트워크 또는 사람이 공격받은 것은 아닙니다.
이 보고서에 게시된 모든 IP 주소, 호스트 이름 및 침해 지표 (172.16.50.10, 192.168.10.10, 10.40.0.200, blue11, mesdec 등)는 실습 로컬 아티팩트이며 실제 위협 인텔리전스가 아닙니다. SIEM에 IOC로 입력하지 마십시오.
BeCode 실습 코치(Thomas B.)에 의해 2026-05-17에 게시 승인됨. 전체 기밀 유지 성명은 조사 보고서(섹션 "배포 및 분류")에 나타납니다.
| 참여 메타데이터 | 값 |
|---|---|
| 참조 번호 | BCC-2026 / INC-2026-001 |
| 기간 | 4일 (단독) |
| 단계 | DFIR (포렌식) + 탐지 엔지니어링 |
| 완료일 | 2026-05-15 |
| 상태 | 완료 (1단계 + 2단계) |
| 조사 결과물 | 값 |
|---|---|
| 조사 결과 | 10 (CRITICAL 3개, HIGH 3개, MEDIUM 2개, LOW 2개) |
| 매핑된 MITRE ATT&CK 기술 | 14 |
| 분석된 네트워크 캡처 | 5시간 31분 동안 5,194개 패킷 (943 KB PCAP) |
| 상관 분석된 Wazuh 이벤트 | 에이전트 020에서 397개 |
| 작성된 Suricata 규칙 | 7 (SID 9000001-9000007) |
| PCAP 재생으로 검증된 규칙 | 7/7 (fast.log 40개 알림, eve.json 314개 레코드) |
시나리오(가상). 중견 규모의 기업 고객인 NexaCorp는 내부 모니터링에서 내부 Linux 서버 중 하나에서 예상치 못한 아웃바운드 트래픽이 감지된 후 BeCode Corp의 블루 팀에 연락했습니다. 방화벽은 트래픽을 기록했지만 실행 가능한 알림을 발생시키지 않았습니다. 이사회는 공개 및 규제 통지 결정을 내리기 전에 판단이 필요했습니다.
임무. 의심되는 사고 기간을 조사하고, 공격자의 침입 경로 및 사후 침입 활동을 특성화하고, 기존 탐지 스택이 포착한 것(및 놓친 것)을 평가하고, 우선 순위가 지정된 복구 계획을 제공합니다. 두 번째 단계에서는 탐지 엔지니어링을 추가했습니다: 실시간으로 재발을 잡을 수 있는 배포 준비가 된 네트워크 IDS 규칙을 제공합니다.
클라이언트로부터 받은 증거 패키지.
| 아티팩트 | 범위 | 참고 |
|---|---|---|
| 네트워크 캡처 (PCAP) | 2026-05-09 20:08 ~ 2026-05-10 01:39 UTC (5시간 31분, 5,194개 패킷) | 사고 중간부터 시작: 프레임 1에서 이미 임플란트가 비콘 전송 중 |
| 호스트 인증 로그 | 2026-05-10 06:47 UTC 이후 | 사고 이후만 (PCAP 종료 후 약 5시간 갭) |
| 호스트 syslog | 2026-05-10 06:37 UTC 이후 | 첫 항목은 syslogd restart로, VM 재부팅을 암시 |
| SIEM 알림 내보내기 (Wazuh) | n/a | 파일은 HTTP 404 응답, 데이터 아님. 나중에 대시보드 직접 쿼리를 통해 397개 이벤트 복구 |
교육적 맥락. 이 참여는 **Be Brussels 블루 & 레드 팀 부트캠프(2025년 11월 ~ 2026년 9월)**의 Mission 01로 전달되었습니다: 실제 DFIR 컨설팅 참여를 시뮬레이션한 단독 시간 제한 조사입니다. 실습 인프라, NexaCorp 신원 및 IOC 값은 의도적으로 가상입니다. 방법론, 도구 및 보고서 형식은 실제 표준(NIST SP 800-61r2, SANS PICERL, MITRE ATT&CK)을 따릅니다.
📄 전체 54페이지 조사 보고서가 표준 산출물입니다. PDF 다운로드 (215 KB) 또는 Markdown 소스 보기 (grep/인용용)
2026-05-09 22:53 UTC 저녁, 외부 공격자(172.16.50.10)가 CVE-2011-2523(2011년 7월부터 손상된 것으로 공개 문서화된 빌드인 vsftpd 2.3.4에 존재하는 백도어)를 악용하여 NexaCorp 내부 서버(192.168.10.10)를 침해했습니다. :)로 끝나는 단일 FTP USER 요청이 TCP/6200에서 인증되지 않은 루트 바인드 셸을 트리거했습니다. 공격자는 20초 세션 동안 8개의 정찰 명령을 실행하고(지속성, 데이터 유출, 이 액세스 벡터를 통한 측면 이동 없음) 연결을 끊었습니다.
독립적으로, 동일한 호스트에서 기존 MITRE Caldera "Sandcat" 에이전트가 /opt/caldera/sandcat (root, 데몬화)에서 실행 중이며 캡처된 기간 동안 40-50초마다 일반 텍스트 HTTP로 10.40.0.200:8888에 비콘을 전송하고 있었습니다. 이것이 원래 클라이언트가 플래그 지정한 "비정상적인 아웃바운드 연결"이며, 증거 패키지에 표시되지 않은 이전 침해를 나타냅니다(임플란트는 첫 번째 PCAP 프레임에서 이미 활성 상태였습니다).
기존 Wazuh SIEM은 대상 호스트에서 397개의 이벤트를 수집했지만 4개의 높은 심각도 알림(전체의 1.0%) 만 발생시켰으며, 모두 일반적인 무차별 대입(MITRE T1110)으로 분류되었습니다. CVE-2011-2523 익스플로잇 페이로드, TCP/6200의 바인드 셸 또는 Caldera C2 채널을 식별하지 못했습니다: 익스플로잇 바이트(USER baduser:))는 vsftpd 자체에 의해 기록되지 않으며, SIEM에는 나머지를 볼 네트워크 원격 측정이 없었습니다. 2단계에서 제공된 7개의 Suricata 규칙은 세 가지 격차를 모두 해소합니다.
헤드라인 IOC (실습 한정, 실제 SIEM에 입력하지 마십시오):
| 유형 | 값 | 컨텍스트 |
|---|---|---|
| 소스 IP (공격자) | 172.16.50.10 | vsftpd 익스플로잇, 다중 프로토콜 정찰, SSH 무차별 대입 |
| 대상 IP | 192.168.10.10 | 손상된 내부 서버 (Metasploitable 2) |
| C2 IP | 10.40.0.200:8888 | Caldera Sandcat 명령 및 제어 |
| 백도어 포트 | 6200/tcp | CVE-2011-2523 루트 바인드 셸 |
| 익스플로잇 페이로드 | :)로 끝나는 FTP USER | 백도어 트리거 패턴 |
포착된 사고는 PCAP에서 재구성된 두 개의 서로 다른 가닥이 있습니다:
vsftpd 2.3.4, 공개적으로 문서화된 백도어(CVE-2011-2523)가 있는 빌드가 내부 네트워크에서 접근 가능했습니다 (조사 결과 I1).:)로 끝나는 단일 FTP USER 요청이 백도어를 트리거했습니다 (조사 결과 I3).10.40.0.200:8888에 비콘을 전송하고 있었으며, 이는 증거 번들에 표시되지 않은 이전 침해의 증거입니다 (조사 결과 I5).저장소는 역할에 따라 적절한 깊이로 시작할 수 있도록 구성되어 있습니다:
| 당신이... | 여기서 시작 | 소요 시간 |
|---|---|---|
| 채용 담당자 또는 인사 관리자 | 이 README + PDF 요약 보고서 훑어보기 | 5분 |
| 적합성을 평가하는 SOC 분석가 | PDF 섹션 5 (탐지 격차) 및 8 (탐지 엔지니어링) + detection/lab.rules | 20분 |
| DFIR 실무자 | 전체 PDF + 조사 과정을 위한 notes/journal.md | 60분 |
| 탐지 엔지니어 | detection/lab.rules + 배포 및 재생 검증을 위한 detection/README.md | 30분 |
| grep, 인용 또는 diff를 원하는 모든 사람 | 보고서 Markdown 소스 | 필요에 따라 |
표준 산출물: reports/의 PDF. Markdown 소스는 동일한 내용이며, 검색 가능성과 버전 관리를 위해 저장소에 유지됩니다.
조사 과정: notes/journal.md는 분석가의 작업 노트(테스트 및 반박된 가설, 증거 인벤토리, 계획 상태)입니다. 결론 자체뿐만 아니라 결론에 도달한 방법을 보여줌으로써 공식 보고서를 보완합니다.
탐지 규칙 세트: detection/lab.rules에는 인라인 주석에 키워드별 전체 근거가 포함된 7개의 Suricata 규칙이 포함되어 있습니다. detection/README.md는 각 규칙이 포착된 사고에서 발동되는지 확인하는 데 사용된 배포 및 재생 검증 워크플로를 문서화합니다.
이 참여는 함께 계층화된 세 가지 업계 표준 프레임워크를 따릅니다.
NIST의 4단계 모델(준비, 탐지 및 분석, 대응/근절/복구, 사후 활동)은 높은 수준의 구조를 제공합니다. 이 참여에서 산출물의 1단계는 NIST "탐지 및 분석" (PCAP 포렌식, SIEM 상관 분석, 공격자 타임라인 재구성)에 매핑됩니다. 2단계는 NIST "교훈" 을 예방 통제(7개의 Suricata 규칙 및 보고서 섹션 7의 우선 순위 권장 사항 목록)로 변환하는 것에 매핑됩니다.
PICERL(준비, 식별, 대응, 근절, 복구, 교훈)은 SANS 사고 대응 프로세스입니다. 이 참여에 적용:
| PICERL 단계 | 이 참여 |
|---|---|
| 준비 (Preparation) | 코치가 검증한 실습 환경, 서명된 증거 패키지, 정의된 범위(포렌식 + 탐지 엔지니어링), 4일 시간 제한 |
| 식별 (Identification) | PCAP 분류 + Wazuh 이벤트 상관 분석 + 가설 기반 분석 (7개 가설, 1개 반박, 5개 확인, 1개 불확실) |
| 대응/근절/복구 (Containment/Eradication/Recovery) | P0 권장 사항(호스트 격리, vsftpd 제거, Caldera 임플란트 정리)으로 문서화되었지만 실행되지 않음(범위 외: 포렌식 분석만 해당, 능동 대응 아님) |
| 교훈 (Lessons Learned) | 2단계 탐지 엔지니어링: 7개 Suricata 규칙 + 튜닝 노트 + 오탐 분석 (보고서 섹션 8) |
모든 조사 결과는 하나 이상의 MITRE ATT&CK 기술에 매핑되어 클라이언트가 이 사고를 기존 위협 모델과 연관시킬 수 있도록 합니다. 10개의 조사 결과에 걸쳐 14개의 고유 기술이 참조됩니다:
조사 결과별 전체 기술 테이블은 보고서 섹션 4 (IOC) 및 섹션 3과 5의 조사 결과별 심층 분석에 있습니다.
보고서의 모든 주장은 증거 패키지의 아티팩트로 추적 가능하며, 이를 재현하는 데 필요한 정확한 tshark 필터, Wazuh 쿼리 또는 Suricata 재생 명령이 포함됩니다. 보고서의 부록 A (재현성 명령) 및 아래의 재현성 섹션을 참조하여 빠르게 시작하십시오.
네트워크 포렌식
네트워크 IDS / 탐지 엔지니어링
afpacket 모드, 단일 스레드, 실습에서 Hyperscan 비활성화): 이 산출물의 7개 규칙 작성, 검증 및 튜닝suricata -T: 배포 및 튜닝 중 구성 및 규칙 검증kill -USR2 $(pgrep suricata): 반복적인 튜닝 중 라이브 규칙 다시 로드SIEM 및 호스트 원격 측정
rule.id 11452, 5551 등), 397개 이벤트 CSV 내보내기grep, awk, jq): 로그 마이닝 및 JSON 구문 분석적대자 에뮬레이션 컨텍스트 (참조, 운영되지 않음)
참조 프레임워크
10개의 조사 결과(I1 ~ I10)는 조사 보고서에 자세히 문서화되어 있습니다. 각 항목에는 증거, 재현성 명령, MITRE ATT&CK 매핑 및 복구 지침이 포함됩니다.
| ID | 심각도 | 제목 | 주요 MITRE 기술 |
|---|---|---|---|
| I1 | 🔴 CRITICAL | vsftpd 2.3.4 취약한 서비스가 내부 네트워크에 노출됨 | T1190 |
| I2 | 🟡 MEDIUM | 익스플로잇 이전에 확장된 저속 정찰 단계 | T1595.002, T1589 |
| I3 | 🟠 HIGH | USER 스마일리 백도어 트리거를 통한 CVE-2011-2523 악용 | T1190 |
| I4 | 🔴 CRITICAL | TCP/6200에서 인증되지 않은 루트 바인드 셸, 8개의 열거 명령 실행됨 | T1059.004, T1082 |
| I5 | 🔴 CRITICAL | 기존 MITRE Caldera Sandcat C2 임플란트(FTP 공격과 무관) | T1071.001, T1102 |
| I6 | 🟢 LOW | 다중 프로토콜 서비스 열거 (HTTP, SSH, SMTP, Telnet, MySQL) | T1046 |
| I7 | 🟡 MEDIUM | PCAP 캡처 기간 외부의 Wazuh에서 보이는 SSH 무차별 대입 시도 | T1110 |
| I8 | 🟠 HIGH | 2개의 첫 sudo 이벤트를 포함한 비정상적인 sudo 활동 | T1548.003 |
| I9 | 🟠 HIGH | 이 공격 클래스에 대한 Wazuh SIEM 탐지 범위 부족 | (방어적 격차) |
| I10 | 🟢 LOW | 호스트 감사 로그가 사고 기간을 포함하지 않음 | (증거 격차) |
심각도 분포: CRITICAL 3개 / HIGH 3개 / MEDIUM 2개 / LOW 2개
읽기 순서 권장: I1(취약한 서비스)부터 시작한 다음 I3, I4(실제 악용 체인), 그 다음 I5(병렬, 무관한 C2 임플란트)로 진행합니다. I2와 I6은 정찰 컨텍스트를 제공합니다. I7부터 I10은 방어 태세 조사 결과(모니터링이 본 것과 놓친 것)입니다.
참여의 2단계에서는 포착된 사고를 익스플로잇 시그니처, 사후 익스플로잇 셸, 병렬 C2 채널의 세 가지 각도에서 다루는 7개의 Suricata 규칙(SID 9000001 ~ 9000007)을 생성했습니다. 각 규칙은 SOC 워크스테이션의 Suricata 6.0.4 인스턴스에 대한 오프라인 PCAP 재생을 통해 검증됩니다.
| SID | 탐지 대상 | 계층 | MITRE 기술 | 재생에서 발동됨 |
|---|---|---|---|---|
| 9000001 | vsftpd 2.3.4 백도어 트리거: :)로 끝나는 USER 인수 | TCP/21 페이로드 | T1190 | ✅ 1/1 |
| 9000002 | vsftpd 2.3.4 취약한 배너 광고 (220 (vsFTPd 2.3.4)) | TCP/21 페이로드 | T1190 | ✅ 30 (모든 FTP 세션에서 배너 반복) |
| 9000003 | 백도어 포트 6200으로의 인바운드 TCP 연결 (SYN 전용) | TCP/6200 | T1059.004 | ✅ 1/1 (바인드 셸 연결) |
| 9000004 | MITRE Caldera Sandcat 에이전트 비콘 (POST /beacon + UA Go-http-client/1.1) | TCP+내용 (포트 무관) | T1071.001, T1102 | ✅ 1 (소스당 60초당 1개로 제한) |
| 9000005 | Caldera C2 서버 응답 (HTTP Server: Python/3.10 aiohttp/3.13.4) | TCP+내용 (포트 무관) | T1071.001 | ✅ 1 (소스당 300초당 1개로 제한) |
| 9000006 | curl/Wget의 HTTP 관리자 경로 열거 (/admin, /login, /phpmyadmin) | TCP/80 페이로드 | T1595.002, T1592.002 | ✅ 3 |
| 9000007 | 느린 속도의 FTP USER 열거 (30분 내에 동일 소스에서 5회 이상 시도) | TCP/21 + 임계값 | T1589, T1078.003 | ✅ 3 |
| 측정 항목 | 값 |
|---|---|
| 작성된 규칙 | 7 |
| PCAP 재생에서 올바르게 발동된 규칙 | 7/7 ✅ |
fast.log의 알림 (중복 제거, SOC 보기) | 40 |
eve.json의 레코드 (원시, 사전 제한) | 314 |
| Suricata 버전 | 6.0.4 (afpacket, 단일 스레드) |
| 재생 명령 | tcpreplay --intf1=ens19 --topspeed attack_mtu.pcap |
| CI 검증 | 푸시 시마다 markdownlint, 인쇄술 및 suricata -T 규칙 확인 |
40대 314의 차이는 SOC 분석가에게 깔끔한 운영 보기를 제공하면서 포렌식 심층 분석을 위해 eve.json에 원시 알림 스트림을 보존하기 위해 규칙 9000003, 9000004, 9000005, 9000006에 의도적인 제한을 적용했기 때문입니다.
배포 중 4번의 반복 수정이 detection/README.md에 문서화되어 있습니다. 주요 교훈:1. 포트 독립적 HTTP 탐지. 규칙 9000004 및 9000005(Caldera)는 처음에 alert http 및 http.uri 키워드로 작성되었으며, 이는 Suricata의 HTTP 파서가 포트 80에서만 작동하게 합니다. Caldera C2는 포트 8888에서 실행되므로 파서가 우회되어 규칙이 실행되지 않았습니다. 수정: TCP+콘텐츠 모드(alert tcp ... content:"POST /beacon"; content:"Go-http-client/1.1";)로 다시 작성하여 포트에 관계없이 원시 HTTP 바이트를 매칭합니다.
2. flow:established는 PCAP 재생 중에 신뢰할 수 없음. 캡처된 TCP 핸드셰이크가 재생 창 밖에 있으면 흐름 상태 시스템이 불확정 상태가 됩니다. Caldera 규칙에서 flow:established를 제거하면 라이브 모드와 재생 모드 모두에서 매칭됩니다.
3. SYN 전용 규칙에 대한 명시적 흐름 방향. 규칙 9000003(포트 6200)이 SC_WARN_POOR_RULE: SYN-only ... w/o direction specified 경고를 발생시켰습니다. flow:to_server,not_established를 추가하여 수정했습니다.
4. RFC1918 전용 실습 환경에서의 HOME_NET 대 EXTERNAL_NET. 공격자, 대상, C2가 모두 사설 공간에 있을 때, EXTERNAL_NET = !$HOME_NET이 비어지고 $EXTERNAL_NET any -> $HOME_NET 21 형식의 규칙은 절대 일치하지 않습니다. 실습 수정: 둘 다 any를 사용. 프로덕션 수정: HOME_NET을 보호 대상 세그먼트로만 좁힙니다.
규칙별 오탐 분석은 보고서 섹션 8.5에 문서화되어 있습니다. 대부분의 규칙은 잘 정의된 환경에서 위험이 미미합니다. 규칙 9000005(aiohttp Server 헤더) 및 9000006(관리자 경로에 대한 curl/Wget)은 양성 내부 Python 서비스 또는 관리 스크립팅이 있는 경우 조정이 필요합니다.
NexaCorp-DFIR-INC-2026-001/ ├── README.md (this file) ├── LICENSE (MIT) ├── .gitignore ├── .github/ │ └── workflows/ │ └── ci.yml markdownlint + typography + Suricata rule check ├── reports/ │ ├── INC-2026-001_Findings_Report.pdf canonical 54-page deliverable │ └── INC-2026-001_Findings_Report.md same content, Markdown source ├── detection/ │ ├── lab.rules 7 Suricata rules (SID 9000001-9000007) │ └── README.md deploy + replay validation workflow ├── evidence-summary/ │ └── ioc-summary.md indicators of compromise (SIEM-ingestible) ├── methodology/ │ ├── attack-timeline.md incident timeline (UTC) │ └── attck-mapping.md MITRE ATT&CK mapping table └── notes/ └── journal.md analyst investigation journal (hypotheses, plan, IOCs, timeline)
**파일 분류:**
| 경로 | 역할 | 대상 |
|---|---|---|
| `reports/*.pdf` | 정식 전달물, 공식 보고서 | 고객, 채용 담당자, 감사자 |
| `reports/*.md` | 동일 내용, grep 친화적 소스 | 인용 또는 diff 작업을 하는 모든 사람 |
| `detection/lab.rules` | 프로덕션 준비 완료된 Suricata 규칙 세트 | SOC / 탐지 엔지니어 |
| `detection/README.md` | 배포 + 재생 검증 가이드 | 탐지 엔지니어 온보딩 |
| `evidence-summary/ioc-summary.md` | 침해 지표, 범주별 | SOC / 위협 헌팅 |
| `methodology/attack-timeline.md` | 사고 타임라인 (UTC) | DFIR 실무자 |
| `methodology/attck-mapping.md` | MITRE ATT&CK 매핑 표 | DFIR / 탐지 엔지니어 |
| `notes/journal.md` | 조사 작업 노트북 | 해당 방법을 연구하는 DFIR 실무자 |
| `.github/workflows/ci.yml` | 자동화된 markdownlint, 타이포그래피 및 Suricata 규칙 검증 (`suricata -T`, `detection/*.rules`가 존재할 때 실행), 푸시 시 실행 | CI |
## 재현성
조사 보고서의 모든 주장은 증거 패키지의 아티팩트로 추적 가능합니다. PCAP 자체는 재배포되지 않지만(BeCode 연구소 자산), 명령어와 쿼리는 문서화되어 있어 자신의 사본을 가진 사람이라면 누구나 분석을 재현할 수 있습니다.
### 주요 결과 재현 (PCAP 분석)
`tshark` (Wireshark CLI)와 원본 `attack.pcap` 파일이 필요합니다:```bash
# 1. PCAP overview
tshark -r attack.pcap -q -z io,stat,0
# 2. TCP conversations (reveals attacker, target, C2)
tshark -r attack.pcap -q -z conv,tcp | head -30
# 3. Confirm vsftpd 2.3.4 banner exposure (Finding I1)
tshark -r attack.pcap -Y "ftp && ip.src == 192.168.10.10" \
-T fields -e frame.time -e ftp.response.code -e ftp.response.arg | head -5
# 4. Find the CVE-2011-2523 exploit payload (Finding I3)
tshark -r attack.pcap -Y 'ftp.request.command == "USER"' \
-T fields -e frame.time -e ftp.request.arg
# 5. Reconstruct the root shell session on TCP/6200 (Finding I4)
tshark -r attack.pcap -q -z follow,tcp,ascii,70
# 6. Reconstruct the Caldera C2 beacon (Finding I5)
tshark -r attack.pcap -q -z follow,tcp,ascii,6 | head -50
Suricata 6.0.x, tcpreplay, 및 모니터링되는 인터페이스(ens19 실험실에서; 자신의 것으로 대체)가 필요합니다:```bash
sudo cp detection/lab.rules /etc/suricata/rules/learner/lab.rules
sudo kill -USR2 $(pgrep -f suricata) sleep 5
sudo truncate -s 0 /var/log/suricata/fast.log
sudo tcpreplay --intf1=ens19 --topspeed attack_mtu.pcap
sudo grep -oE '[1:[0-9]+:' /var/log/suricata/fast.log | sort | uniq -c | sort -rn
예상 출력 (한 번의 전체 재생 후):```text
30 [1:9000002: (vsftpd banner repeated per session)
3 [1:9000007: (FTP USER enumeration threshold)
3 [1:9000006: (HTTP admin path enumeration)
1 [1:9000005: (Caldera C2 response)
1 [1:9000004: (Caldera Sandcat beacon, throttled)
1 [1:9000003: (Backdoor port 6200 SYN)
1 [1:9000001: (vsftpd USER smiley exploit)
7/7 규칙이 올바르게 발동함. 전체 증거 패키지(fast.log, eve.json, throttling config, Suricata version snapshot)는 findings report의 부록 E에 열거되어 있습니다.
full_log 필드에서 추정된 것이며, 직접 관찰된 것이 아닙니다.auth.log 및 syslog는 PCAP 종료 후 약 5시간 후에 시작되며, 첫 번째 항목은 syslogd restart(VM 재부팅으로 추정)입니다. 회전된 로그 파일은 제공되지 않았습니다. 이는 Finding I10으로 문서화되어 있습니다.USER 인수의 대체 널 바이트 종결자), 다른 User-Agent로 Caldera 재컴파일, 또는 C2를 암호화된 HTTPS로 이동시켜 회피할 수 있습니다(JA3/JA4와 같은 TLS 메타데이터 분석이 대안이 될 것입니다). 규칙은 캡처된 위협 시나리오에 적합합니다; 장기적인 탐지 전략은 행동 기반 및 메타데이터 기반 탐지를 추가해야 합니다.HOME_NET은 실습 환경에서 any로 설정되었습니다. 실제 NexaCorp 배포에서는 HOME_NET을 보호 대상 세그먼트로만 좁혀야 합니다(예: 192.168.10.0/24). 그래야 EXTERNAL_NET = !$HOME_NET이 공격자 공간을 올바르게 포함합니다. 전달된 규칙은 실습에 맞게 조정되었으며, 프로덕션 사용 전에 이 단일 구성 변경이 필요합니다.full_log를 가져와 어떤 사용자 계정이 이를 트리거했는지(그리고 FTP 익스플로잇과 관련된 타임스탬프) 식별하고, 12개의 SSH 인증 성공을 검토하여 합법적인 관리자 세션과 공격자 제어 세션을 구분합니다. 둘 다 보고서의 'Open Questions' 부록에 문서화되어 있습니다.BeCode Brussels 블루 & 레드 팀 부트캠프(2025년 11월 ~ 2026년 9월), 미션 01, 2026-05-15에 수행된 단독 DFIR 작업.
저자: Johan-Emmanuel Hatchi (LinkedIn).
2026년 9월부터 벨기에에서 사이버 보안 인턴십 기회에 열려 있습니다. 이러한 종단 간 조사 작업(PCAP 포렌식, SIEM 상관 분석, IDS 규칙 작성, 공식 고객 보고)이 포함된 SOC / DFIR / 탐지 엔지니어링 역할을 찾고 있습니다.
MIT, 2026 Johan-Emmanuel Hatchi.
detection/lab.rules의 Suricata 규칙과 보고서 텍스트는 모두 동일한 MIT 라이선스로 배포됩니다: 출처 표시와 함께 자유롭게 복사, 수정 및 재배포할 수 있습니다. PCAP, 실습 인프라 및 작업 브리핑은 BeCode Brussels의 자산으로 남아 있으며 재배포되지 않습니다.