Spacebar Campaigns

AWSL-001 AWS VPC Flow Log

Log ID:
AWSL-001
Source:
AWS VPC vpc-027c43d14ecc78c52
Representative Path:
CloudWatch Logs /aws/vpc/flowlogs/sb01
Collection:
VPC Flow Logs -> CloudWatch Logs -> SB-01 collector -> Elasticsearch
Current Status:
1차 collector 기반 ELK 적재 및 BAS evidence 검증 완료
Primary Use:
App 서버 outbound 전송 정황, Jenkins/App/DB/ELK 간 통신, REJECT 스캔성 트래픽 확인

공격 행위 요약

SB-01에서 공격자는 App 서버에서 고객 예약 데이터를 archive로 묶은 뒤 SSH 또는 HTTPS 기반 채널로 외부 인프라에 전송하려 한다. VPC Flow Log는 전송 파일명이나 HTTP 내용을 보여주지는 않지만, App 서버가 어느 외부 IP와 어떤 포트로 얼마나 많은 바이트를 주고받았는지 확인할 수 있다.

로그 발생 위치

구분위치설명
CloudWatch Logs/aws/vpc/flowlogs/sb01VPC Flow Log가 적재되는 로그 그룹
VPCvpc-027c43d14ecc78c52SB-01 Jenkins/App/DB/ELK가 위치한 VPC
Flow Logfl-0b529a6d7a03c3b34VPC 단위 Flow Log
Traffic TypeALLACCEPT/REJECT 흐름 모두 수집
Aggregation Interval60 seconds1분 단위로 flow 집계
App ENIeni-06aca8e8d42592a24sb01-app, private IP 172.31.4.70

수집 방식

구분방식
AWSVPC Flow Logs를 VPC 단위로 생성
DestinationCloudWatch Logs로 전송
FilterALL로 설정해 ACCEPT/REJECT 흐름 모두 수집
1차 collector로컬 AWS CLI 기반 수집 스크립트로 최근 Flow Log를 Elasticsearch에 bulk ingest
분석 위치Elasticsearch index sb01-awsl-001-vpc-flowlogs

현재는 1차 검증을 위해 로컬 AWS CLI collector를 사용한다. 장기 운영형 구성에서는 IAM Role 기반 Filebeat AWS input, Elastic Agent AWS integration, CloudWatch Logs subscription, Firehose, Lambda forwarder 중 하나로 전환한다.

실제 관측 로그 예시

2 142636331738 eni-06aca8e8d42592a24 172.31.4.70 93.184.216.34 45620 443 6 12 15240 1778958200 1778958260 ACCEPT OK

기본 형식 순서:

version account-id interface-id srcaddr dstaddr srcport dstport protocol packets bytes start end action log-status

관측 예시: App HTTPS 대용량 outbound

2026-05-16T19:16:53.000Z
2 142636331738 eni-06aca8e8d42592a24 172.31.4.70 13.216.7.132 49478 443 6 1117 1110487 1778959434 1778959463 ACCEPT OK
필드해석
interface-ideni-06aca8e8d42592a24App 서버 ENI
srcaddr172.31.4.70App 서버 private IP
dstaddr13.216.7.132외부 목적지 IP
dstport443HTTPS
protocol6TCP
packets / bytes1117 / 1110487App 서버에서 외부로 약 1.1MB 전송
actionACCEPTSecurity Group/NACL에서 허용된 outbound flow

이 예시는 안전한 테스트용 HTTPS POST로 만든 outbound flow다. 실제 T1048.002 판단에서는 이 네트워크 흐름만 단독으로 보지 않고, 같은 시간대 LL-002에서 archive 생성, scp, curl 실행이 있었는지 함께 확인한다.

참고 예시: 외부 FTP 스캔 차단

2026-05-16T19:16:53.000Z
2 142636331738 eni-06aca8e8d42592a24 49.71.226.71 172.31.4.70 48509 21 6 1 40 1778959013 1778959039 REJECT OK

이 예시는 T1048.002 유출 증거가 아니라, public subnet에 놓인 EC2가 외부 스캔을 받는다는 네트워크 노출 정황이다.

주요 필드

필드의미예시
interface-id트래픽이 관측된 ENIeni-06aca8e8d42592a24
srcaddr출발지 IP172.31.4.70
dstaddr목적지 IP13.216.7.132
srcport출발지 포트49478
dstport목적지 포트443
protocol프로토콜 번호. TCP는 66
packets패킷 수1117
bytes전송 바이트 수1110487
actionSecurity Group/NACL 처리 결과ACCEPT
log-statusFlow Log 기록 상태OK

커버하는 Techniques Used

TechniqueMapping Reason
T1048.002 Exfiltration Over Asymmetric Encrypted Non-C2 ProtocolApp 서버에서 외부 IP의 22/443 포트로 발생한 outbound 전송량과 시간대를 확인한다.
T1021.004 Remote Services: SSHJenkins private IP에서 App private IP로 발생한 SSH 흐름을 LL-001의 SSH 인증 로그와 함께 확인한다.

탐지 포인트

Technique관찰할 행위주요 필드
T1048.002 Exfiltration Over Alternative ProtocolApp 서버 172.31.4.70이 외부 IP의 22 또는 443 포트로 평소보다 큰 outbound traffic을 발생시킨다. LL-002의 archive 생성, scp, curl 실행 직후 발생하면 우선순위가 높다.srcaddr, dstaddr, dstport, bytes, action, start, end
T1021.004 Remote Services: SSHJenkins 172.31.13.239에서 App 172.31.4.70의 22 포트로 접속 흐름이 발생한다. 단독으로는 정상 배포일 수 있으므로 LL-001의 계정/시간대와 함께 본다.srcaddr, dstaddr, dstport, action

ELK Query 예시

source.ip:"172.31.13.239" AND destination.ip:"172.31.4.70" AND destination.port:22 AND event.action:ACCEPT
source.ip:"172.31.4.70" AND destination.port:(22 OR 443) AND event.action:ACCEPT
sb01_log_type:vpc_flow AND network.bytes:>100000