LL-001 Linux SSH Auth Log
SSH 인증 성공/실패, 세션 시작/종료, 접속 계정과 출발지 IP를 확인한다.
이 페이지는 SB-01 Demo의 Techniques Used를 기준으로 어떤 로그를 수집하고, 각 로그의 어떤 필드로 공격 행위를 확인할 수 있는지 정리하는 초안이다. 이 데모 Page 2는 Technique별 로그 근거와 Investigation Pivot을 어떤 방식으로 분리해 보여줄지 검토한다.
| 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, 전송량, 시간대 확인 |
Jenkins에서 확보한 배포 키와 deploy 계정을 이용해 App 서버에 SSH 접속하는 단계다. 이 Technique은 App 서버의 인증 로그를 1차 근거로 보고, Jenkins 배포 시간대와 교차 확인한다.
/var/log/auth.log
@timestamp, user.name, source.ip, event.outcome, process.name
Accepted publickey for deploy 이벤트 확인source.ip가 Jenkins 서버인지, 또는 비정상 출발지인지 확인sb01_server: "app" and sb01_log_type: "linux_auth" and message: "Accepted publickey for deploy"
source.ip -> Jenkins 배포 이력 -> App 서버 auditd 경로 접근 -> DB 접속 로그 순으로 확장한다.
App 서버에서 애플리케이션 경로, 컨테이너 구성, 환경 설정 파일을 확인하는 단계다. 단순 명령 실행보다 어떤 경로에 접근했는지와 그 접근 주체를 함께 본다.
/var/log/audit/audit.log
auditd.log.name, process.executable, user.name, auditd.log.key
/opt/spacebar-booking 같은 애플리케이션 운영 경로 접근 확인/usr/bin/ls, cat, find 등 경로 탐색성 프로세스 확인event.module: "auditd" and auditd.log.name: /opt/spacebar-booking*
auditd.log.key -> process.pid -> user.name -> 직전 SSH 로그인 이벤트로 연결한다.
App 서버에서 확인한 DB 접속 정보를 이용해 PostgreSQL 고객/예약 데이터를 조회하는 단계다. DB 로그는 쿼리 자체보다 접속 주체, 출발지, 대상 DB, 비정상 조회 패턴을 중심으로 본다.
/var/log/postgresql/postgresql-*.log
database.name, user.name, source.ip, event.action, query
service.type: "postgresql" and message: ("booking" or "reservation" or "customer")
DB 접속 계정 -> source.ip -> App 서버 auditd 이벤트 -> Jenkins/App SSH 이벤트 순으로 역추적한다.
SSH 인증 성공/실패, 세션 시작/종료, 접속 계정과 출발지 IP를 확인한다.
민감 경로 접근, 실행 프로세스, 실제 로그인 사용자와 audit key를 확인한다.
Jenkins UI/CLI jar 접근, HTTP 메서드, URI, status, User-Agent를 확인한다.
DB 접속 계정, 출발지, 대상 DB, 쿼리 또는 statement 로그를 확인한다.