AWS Access Key 해킹
Overview
Overall Progress
-
일간 강의 결과를 정리하던 중, AWS user 계정의 Access Key와 Secret Access Key를 그대로 기록하여 git public repository에 업로드(21:25).
- 업로드 후 5분뒤 Git Guardian에서 이를 감지하고 경고 메일 발신(21:30),
- 10분뒤 AWS에서 액세스키 감지 경고 메일 발신 및 고객지원 상담(Support Case) 생성됨(21:34),
- AWS 계정 잠금 및 격리 처리(21:52)
-
위의 절차가 진행되는 와중, Asia 및 EU Region 전체에 c5.xlarge 인스턴스가 생성되고 US.East Region에 인스턴스 생성 중 계정이 격리되고 모든 인스턴스 정지
-
사건 인지 후 해당 Access Keys를 제거하고, 보안 서비스를 설정등 재발 방지 절차 설정
-
AWS Support Center의 Charges review 이후, 피해 금액 환불됨 (약 2주 소요)
Lesson Learned
- 계정 보안은 철저히
- 개인 계정이라서 다행
- 만약 실제 서비스 가동중인 계정이 노출되어서 의도치않은 추가 금액이 부과되거나,
- 계정 잠금되어 서비스가 중단되었다면? 생각도 하기 싫다.
- Issue가 생기면 관련 Authority에게 질의해보기.
- Keys가 탈취된것도 아니고, 본인실수로 노출된 점은 인정. 하지만 문의하는데 돈드는것도 아니잖아..?
- ‘미안 우리가 해줄수 있는건 아무것도 없어~ 다음엔 조심해~’ 같은 응답을 받을줄 알았음
- 재발방지 조치를 충실히 따른 뒤, Bills were waived
Question
- 어떻게 그렇게 빨리 파악하고 사용한걸까?
- 별도의 트래픽이 있는것도 아니고, 검색엔진 노출 설정도 안되어있고, 생성된지 1주일도 안된 git 계정과 repository인데 어떻게 그렇게 빨리 털렸을까?
- 무언가의 Data Crawling 프로그램을 가동 중이고 거기에 탐지된걸까?
- 만약 Crawling 프로그램에 걸린거면 무슨 의도로 가동 중인걸까?
- 프로그램을 생성하고 가동 및 유지한다면 그에 맞는 별도의 수고와 리소스(프로그램을 가동할 device, 네트워크 연결등?)가 필요하겠지?
- 물론 내가 걸리긴 했지만, 유지하는 시간 대비 잡히는게 그렇지 많지는 않을텐데
- 그냥 재미로? 아니면 악의를가지고? 악의를 가지고 악성프로그램을 24/7 가동중이라고? 오 세상에..
- 생성된 Instance의 가동 목적은 뭐였을까?
- 계정 잠금조치를 풀고 들어오자마자 내가 생성하지 않은 인스턴스들이 각 Region에 잔뜩 생성되어있어서 정신없이 지우기에 바빴음.
- 별도의 Log 저장을 설정해둔것도 아니라서 무슨 설정이 되어있는지 현재시점에선 확인불가
- 진짜 그냥 악의를 가지고 켜놓기만해서 비용발생시키기? 아니면 코인채굴?
사건 발생 (220329)
30분간 받은 경고메일들
-
(21:25) AWS user 계정의 Access Key와 Secret Access Key 내용을 git public repository에 업로드
-
(21:30) GitGuardian 경고 메일 수신
-
(21:34) AWS 경고 메일 수신 및 Support Case 생성
-
(21:52) AWS 계정 잠금 처리
-
결제 청구서에 인스턴스 사용 비용으로 약 7$의 비용이 청구됨.
사건 대응 (220330)
기본적으로 계정이 잠금되면 별도의 격리정책(Quarantine Policy)이 설정된다.
격리 상태에선 비밀번호 재설정, 로그인, 간단한 설정 변경등으로만 사용이 제한된다.
이러한 격리 상태를 해제하려면 안내받은 E-Mail 내용을 수행하고, 생성된 고객지원 상담(Support Case)에 격리해제 요청을 해야한다.
후속메일로 수신한 AWS측의 대응 권고에 따름
- Root 계정 비밀번호 재설정 후 로그인
- 계정이 잠금되어있어서 기존 비밀번호로 접속 불가, 비밀번호 재설정후 접속 가능
- Step1. 노출된 Access Key 교체 및 삭제
- User 및 Root User의 Key는 AWS Management Console에서 설정 가능
- Key 교체 및 삭제; 애플리케이션이 노출된 키를 사용하는 경우
- 두번째 키를 생성하고 애플리케이션이 새로운 키를 사용하도록 설정
- 노출된 키를 비활성화(disable, 삭제아님)
- 새로운 키를 사용해서 원활히 기능이 가동하는걸 확인 후, 노출된 키 삭제
- Step2. CloudTrail Log를 분석하여 허가되지않은 활동(unsanctioned activity) 확인
- 승인되지 않은 IAM users, access keys, login profiles, policies, roles 또는 temporary security credentials 생성 및 활동을 확인
- 노출된 계정에 대한 임시 자격증명이(temporary credentials) 생성되었을 수 있음. 해당 자격을 철회해야함
- 승인되지 않은 활동들 정정
- Step3. CloudTrail Log를 분석하여 승인되지않은 AWS사용 검토(EC2인스턴스,Lambde 기능, EC2 Spot Instance bid, 등)
- CloudTrail 뿐만 아니라 Bills(결제) 페이지에서도 해당 사용 여부를 확인 할 수 있음
- 접속한 Region 뿐만 아니라 다른 접근가능한 모든 Region에서의 활동을 모두 확인해봐야함.
- 위의 Step1, 2, 3를 모두 해결하고 Support case에 Quarantine 해제 요청
후속 조치 (220402)
위의 절차로 계정의 격리상태는 해제되겠지만, 소액이나마 비용이 청구된 게 아쉬웠음.
내 잘못인건 맞지만 ‘평소 사용패턴과 다른 활동이 감지되어 계정이 격리됨’을 꼬투리 잡아서 문의해보기로 함.
7$(약 9,000원)의 금액이 청구됨
-
격리 해제를 신청하며 청구 내역에 이의를 제기함
- ‘아니 내잘못인건 인정하긴 하는데, 니들도 평소 사용 패턴과 다른 이상패턴을 감지했다매! 내가 쓰지도 않은 서비스인데 내가 돈내야하는게 맞아?’
-
청구 내역 조정 전에, 재발방지 절차를 수행해야한다고 함.
-
Step1. 비용 및 사용 감시 서비스 중 최소 2개이상 설정하기
- Bills management console 에서 Billing Alerts 설정하기
- Cloudwatch 설정하기
- Cloudtrail 설정하기
- WAF(Web Application Firewall, 웹 어플리케이션 방화벽) 설정하기
- Trusted Advisor 설정하기
- Free tier 수준에서 (일정사용량 내에서)추가 비용없이 실행가능한것은 1,2,3,5
- 추천하는것은 1. Billing Alerts / 2. Cloudwatch
- Cloudtrail은 서비스는 무료 / log가 S3에 꾸준히 저장되서 S3 Free tier 한도 확인 필요
- WAF는 일부만 Free tier 대상
- T.A.는 일부만 Free tier 대상
- https://aws.amazon.com/ko/ 하단의 freetier 서비스 검색으로 비용확인해볼것
- Free tier 수준에서 (일정사용량 내에서)추가 비용없이 실행가능한것은 1,2,3,5
-
Step2. 보안 모범 사례중 최소 1개 이상 설정하기
- MFA(Multi-Factor Authentication,다중요소 인증) 설정하기
- Security Hub 설정하기
- Guard Duty 설정하기
- Free tire 수준에서 (기간 제한없이)추가비용 없이 실행 가능한 것은 1.
- Security Hub와 Guard Duty는 최초시작후 30일만 무료라서 패스
- https://aws.amazon.com/ko/ 하단의 freetier 서비스 검색으로 비용확인해볼것
- Free tire 수준에서 (기간 제한없이)추가비용 없이 실행 가능한 것은 1.
- Step3. AWS Customer Agreement and shared responsibility model 문서 읽기.
- 읽었다고 하면됨.
- I confirmed that I have read the AWS Customer Agreement and shared responsibility model documents.
- 해당 내용을 정리하여 Support case에 Reply
최종 결과 (220414)
-
필요조치를 모두 수행한 뒤, 면제조치받음
-
Billing Console상의 Invoice에서도 확인가능
Leave a comment