Spacebar Campaigns

SB-00 Demo Detection Map

이 페이지는 SB-01 Demo의 Techniques Used를 기준으로 어떤 로그를 수집하고, 각 로그의 어떤 필드로 공격 행위를 확인할 수 있는지 정리하는 초안이다. 이 데모 Page 2는 Technique별 로그 근거와 Investigation Pivot을 어떤 방식으로 분리해 보여줄지 검토한다.

문서화 원칙 Technique 문서와 Log 문서를 분리한다. Technique은 관련 Log ID를 참조하고, Log Catalog는 해당 로그가 커버하는 Technique을 역매핑한다.

Technique to Log Map

Technique 공격 행위 요약 Primary Logs 분석 관점
T1592 Jenkins 응답 헤더, CLI jar, UI 노출 여부 확인 JL-001 Jenkins access log에서 CLI jar 요청, 비정상 User-Agent, 반복 스캔 패턴 확인
T1078 탈취한 Jenkins API Token으로 Jenkins에 인증 JL-002 Jenkins 시스템/컨테이너 로그에서 사용자 인증, CLI 사용 흔적, 평소와 다른 시간대 확인
T1190 Jenkins CLI CVE-2024-23897 파일 읽기 취약점 악용 JL-001, JL-002 CLI jar 접근 후 Jenkins 내부 파일 탐색 정황을 시간순으로 연결
T1021.004 Jenkins 배포 키로 App 서버 deploy 계정 SSH 접근 LL-001 Accepted publickey, user.name, source.ip, 접속 시간대를 배포 이력과 비교
T1083 App 서버에서 애플리케이션 경로와 설정 파일 탐색 LL-002 auditd에서 민감 경로 접근, 실행 프로세스, 실제 로그인 사용자 확인
T1213.006 PostgreSQL 고객/예약 데이터 조회 DBL-001 DB 접속 계정, source.ip, 쿼리 대상 테이블, 대량 조회 시점 확인
T1048.002 압축/암호화된 데이터 외부 전송 AWSL-001 사설 서버에서 외부 IP로 향하는 HTTPS/SSH egress, 전송량, 시간대 확인

Detection Details

T1021.004 Remote Services: SSH

Jenkins에서 확보한 배포 키와 deploy 계정을 이용해 App 서버에 SSH 접속하는 단계다. 이 Technique은 App 서버의 인증 로그를 1차 근거로 보고, Jenkins 배포 시간대와 교차 확인한다.

Representative Path

/var/log/auth.log

Fields to Read

@timestamp, user.name, source.ip, event.outcome, process.name

Detection Point

  • App 서버에서 Accepted publickey for deploy 이벤트 확인
  • source.ip가 Jenkins 서버인지, 또는 비정상 출발지인지 확인
  • Jenkins 정상 배포 시간대와 SSH 접속 시간이 일치하는지 비교

KQL Draft

sb01_server: "app" and sb01_log_type: "linux_auth" and message: "Accepted publickey for deploy"

Investigation Pivot

source.ip -> Jenkins 배포 이력 -> App 서버 auditd 경로 접근 -> DB 접속 로그 순으로 확장한다.

T1083 File and Directory Discovery

App 서버에서 애플리케이션 경로, 컨테이너 구성, 환경 설정 파일을 확인하는 단계다. 단순 명령 실행보다 어떤 경로에 접근했는지와 그 접근 주체를 함께 본다.

Representative Path

/var/log/audit/audit.log

Fields to Read

auditd.log.name, process.executable, user.name, auditd.log.key

Detection Point

  • /opt/spacebar-booking 같은 애플리케이션 운영 경로 접근 확인
  • /usr/bin/ls, cat, find 등 경로 탐색성 프로세스 확인
  • SSH 접속 직후 같은 세션에서 경로 접근이 발생했는지 확인

KQL Draft

event.module: "auditd" and auditd.log.name: /opt/spacebar-booking*

Investigation Pivot

auditd.log.key -> process.pid -> user.name -> 직전 SSH 로그인 이벤트로 연결한다.

T1213.006 Data from Information Repositories: Databases

App 서버에서 확인한 DB 접속 정보를 이용해 PostgreSQL 고객/예약 데이터를 조회하는 단계다. DB 로그는 쿼리 자체보다 접속 주체, 출발지, 대상 DB, 비정상 조회 패턴을 중심으로 본다.

Representative Path

/var/log/postgresql/postgresql-*.log

Fields to Read

database.name, user.name, source.ip, event.action, query

Detection Point

  • App 서버가 아닌 위치에서 DB 접속이 발생했는지 확인
  • 예약/고객 테이블에 대한 대량 조회 또는 평소와 다른 시간대 조회 확인
  • DB 접속 직전 App 서버에서 환경 설정 파일 접근이 있었는지 연결

KQL Draft

service.type: "postgresql" and message: ("booking" or "reservation" or "customer")

Investigation Pivot

DB 접속 계정 -> source.ip -> App 서버 auditd 이벤트 -> Jenkins/App SSH 이벤트 순으로 역추적한다.

Referenced Log Catalog