Skip to content

sung0810/cloud-ev-security

Repository files navigation

AEGIS — EV 충전 인프라 사이버 위협 탐지·자동 대응 시스템

AWS 기반 MITRE ATT&CK 6종 공격 자동 탐지 및 격리 플랫폼


아키텍처

EV 충전기 (IoT)
    │  MQTT/TLS 8883
    ▼
AWS IoT Core ──► GuardDuty (AI 탐지)
                     │  Finding 이벤트
                     ▼
               EventBridge Rule
                     │
                     ▼
               Lambda (AEGIS)  ──► Slack 알림
               ├── T0855: IoT 정책 격리
               ├── T0839: 펌웨어 차단 명령
               ├── T1499: Rate Limit Shadow
               ├── T1078: 인증서 REVOKE
               ├── T1548: IAM 정책 회수
               └── T1565: 로그 기록(증거 보존)
                     │
                     ▼
               CloudWatch Dashboard + CloudTrail

프로젝트 구조

cloud-ev-security/
├── terraform/
│   ├── main.tf                  # 루트 모듈 (5개 서브모듈 호출)
│   ├── variables.tf
│   ├── outputs.tf
│   ├── terraform.tfvars         # 실제 값 설정 (git 제외)
│   └── modules/
│       ├── iot/                 # IoT Thing, Certificate, Policy
│       ├── lambda/              # Lambda 함수 + IAM 역할
│       ├── eventbridge/         # GuardDuty Finding → Lambda 룰
│       ├── monitoring/          # CloudTrail + CloudWatch Dashboard
│       └── guardduty/           # GuardDuty Detector
├── lambda/
│   └── handler.py               # 6종 공격 자동 대응 핸들러
└── simulator/
    └── charger.py               # EV 충전기 + 공격 시뮬레이터

배포 (Terraform)

cd terraform
terraform init
terraform plan
terraform apply

사전 요구사항

  • AWS CLI 설정 (aws configure)
  • AWS 계정에서 GuardDuty 활성화 (콘솔)
  • terraform.tfvars에 Slack Webhook URL 입력

MITRE ATT&CK 대응 매핑

기법 공격명 AEGIS 대응
T0855 비인가 명령 주입 IoT 정책 DetachPolicy (즉시 격리)
T0839 펌웨어 변조 MQTT 차단 명령 발행
T1499 MQTT DoS Shadow rate_limit 플래그
T1078 탈취 계정 로그인 IoT 인증서 REVOKE
T1548 IAM 권한 탈취 연결된 IAM 정책 전체 회수
T1565 충전 데이터 변조 CloudTrail 로그 기록 (증거 보존)

시뮬레이터 사용법

사전 설치

pip install paho-mqtt

환경변수 설정

export IOT_ENDPOINT="xxxxxx-ats.iot.ap-northeast-2.amazonaws.com"
export THING_NAME="aegis-ev-charger-01"
export CA_CERT="certs/AmazonRootCA1.pem"
export CLIENT_CERT="certs/certificate.pem.crt"
export PRIVATE_KEY="certs/private.pem.key"

실행

# 정상 충전 상태 10회 발행
python simulator/charger.py --mode normal

# 특정 공격 시뮬레이션
python simulator/charger.py --mode attack --attack T0855
python simulator/charger.py --mode attack --attack T1499

# 6종 공격 전체 시뮬레이션
python simulator/charger.py --mode all

# MQTT 없이 페이로드만 확인 (개발용)
python simulator/charger.py --mode all --no-mqtt

Lambda 단위 테스트

cd terraform

# T0855 — 충전기 비인가 명령 주입
aws lambda invoke --function-name aegis-threat-response \
  --payload fileb://test_T0855.json output.json
cat output.json

# T1548 — IAM 권한 탈취
aws lambda invoke --function-name aegis-threat-response \
  --payload fileb://test_T1548.json output.json

# T1078 — 탈취 계정 로그인
aws lambda invoke --function-name aegis-threat-response \
  --payload fileb://test_T1078.json output.json

# T0839 — 펌웨어 변조
aws lambda invoke --function-name aegis-threat-response \
  --payload fileb://test_event.json output.json

# T1499 — MQTT DoS
aws lambda invoke --function-name aegis-threat-response \
  --payload fileb://test_T1499.json output.json

인증서 발급 (IoT 연결 시)

AWS 콘솔 → IoT Core → 보안 → 인증서에서 다운로드:

  • certificate.pem.crt
  • private.pem.key
  • AmazonRootCA1.pem (Amazon 공식 사이트)

simulator/certs/ 폴더에 저장 (.gitignore에 포함됨)


CloudWatch 대시보드

AWS 콘솔 → CloudWatch → 대시보드 → aegis-security-dashboard

  • 공격 탐지 횟수 (공격 유형별)
  • Lambda 에러율
  • Lambda 실행 시간
  • IoT 메시지 처리량

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors