Spacebar Campaigns

JL-001 Jenkins Access and Controller Log

Log ID:
JL-001
Source:
SB-01 Jenkins server
Representative Path:
/var/lib/docker/volumes/jenkins_jenkins_home/_data/logs/access_log, /var/lib/docker/containers/<container-id>/*-json.log
Collection:
Filebeat 8.19.15 custom inputs
Current Status:
ELK 수집 및 BAS evidence 검증 완료
Primary Use:
Jenkins UI/CLI 접근, Jenkins controller 동작, CVE-2024-23897 악용 전후 접근 흔적 확인

공격 행위 요약

SB-01에서 공격자는 Jenkins Web UI와 CLI 접근 가능성을 확인하고, 확보한 API Token으로 Jenkins CLI에 인증한다. 이후 Jenkins CLI 파일 읽기 취약점 악용 시도는 Jenkins access log와 controller log에서 HTTP 요청, CLI endpoint 접근, Java CLI client 흔적으로 확인한다.

로그 발생 위치

구분위치설명
Jenkins access log/var/lib/docker/volumes/jenkins_jenkins_home/_data/logs/access_logJenkins Web UI, CLI endpoint 접근 기록
Jenkins Docker log/var/lib/docker/containers/<container-id>/*-json.logJenkins controller 기동, plugin, 내부 오류 및 controller 이벤트
Jenkins containersb-jenkinsJenkins controller가 Docker container로 실행됨

수집 방식

구분방식
Jenkins access logFilebeat filestream sb01-jenkins-access-log로 수집
Jenkins Docker logFilebeat filestream + container parser sb01-jenkins-docker-log로 수집
ELK 필드sb01_server: jenkins, sb01_log_type: jenkins_access 또는 jenkins_docker

실제 관측 로그 예시

172.18.0.1 - - [21/May/2026:14:23:12 +0900] "GET /login HTTP/1.1" 200 1737 "-" "curl/8.5.0"
127.0.0.1 - - [11/May/2026:19:50:44 +0900] "POST /cli HTTP/1.1" 200 80 "-" "Java/17.0.9"
2026-05-21 04:57:27.694+0000 [id=24] INFO hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running

주요 필드

필드의미예시
@timestampFilebeat가 해석한 이벤트 시간2026-05-21T05:23:19.373Z
sb01_log_typeSB-01 자체 로그 분류jenkins_access, jenkins_docker
message원본 Jenkins 로그 라인POST /cli HTTP/1.1
log.file.path수집된 원본 파일 경로.../logs/access_log
host.name로그 발생 서버ip-172-31-13-239

커버하는 Techniques Used

TechniqueMapping Reason
T1592 Gather Victim Host InformationJenkins UI, CLI endpoint, 버전/서비스 노출 여부를 확인하는 접근 흔적을 본다.
T1078 Valid AccountsAPI Token 기반 Jenkins CLI 접근이 정상 계정 권한으로 수행됐는지 확인한다.
T1190 Exploit Public-Facing ApplicationJenkins CLI 취약점 악용 흐름의 POST /cli, Java CLI client 흔적을 확인한다.

탐지 포인트

  1. 정상 배포 시간대가 아닌 POST /cli 요청이 있는지 확인한다.
  2. Jenkins CLI user-agent 또는 Java client 접근이 반복되는지 확인한다.
  3. Jenkins access log의 CLI 접근 직후 JL-002 build/workspace 탐색 흔적이 이어지는지 확인한다.
  4. Jenkins 접근 이후 LL-001에서 App SSH 접속이 발생하는지 pivot한다.

ELK Query 예시

sb01_server:jenkins AND sb01_log_type:jenkins_access
sb01_server:jenkins AND sb01_log_type:jenkins_access AND message:"POST /cli"
sb01_server:jenkins AND sb01_log_type:jenkins_docker AND message:"Jenkins is fully up and running"