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 충전기 + 공격 시뮬레이터
cd terraform
terraform init
terraform plan
terraform apply- AWS CLI 설정 (
aws configure) - AWS 계정에서 GuardDuty 활성화 (콘솔)
terraform.tfvars에 Slack Webhook URL 입력
| 기법 | 공격명 | AEGIS 대응 |
|---|---|---|
| T0855 | 비인가 명령 주입 | IoT 정책 DetachPolicy (즉시 격리) |
| T0839 | 펌웨어 변조 | MQTT 차단 명령 발행 |
| T1499 | MQTT DoS | Shadow rate_limit 플래그 |
| T1078 | 탈취 계정 로그인 | IoT 인증서 REVOKE |
| T1548 | IAM 권한 탈취 | 연결된 IAM 정책 전체 회수 |
| T1565 | 충전 데이터 변조 | CloudTrail 로그 기록 (증거 보존) |
pip install paho-mqttexport 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-mqttcd 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.jsonAWS 콘솔 → IoT Core → 보안 → 인증서에서 다운로드:
certificate.pem.crtprivate.pem.keyAmazonRootCA1.pem(Amazon 공식 사이트)
simulator/certs/ 폴더에 저장 (.gitignore에 포함됨)
AWS 콘솔 → CloudWatch → 대시보드 → aegis-security-dashboard
- 공격 탐지 횟수 (공격 유형별)
- Lambda 에러율
- Lambda 실행 시간
- IoT 메시지 처리량