[AWS-Security] 9.3. 로그에서 위협 탐지
1. Amazon GuardDuty
매일 수만 줄 씩 쌓이는 로그를 관리자가 직접 모니터링 하다가 공격을 조기에 발견하는 것은 불가능에 가깝다.
이러한 문제를 Amazon GuardDuty를 통해 지능적으로 해결할 수 있다.
- 역할 : GuardDuty는 CloudTrail, VPC Flow Logs, DNS 로그 등을 지속적으로 수집하고 분석하여, 의심스러운 활동이나 알려진 악의적 패턴이 발견되면 즉시 관리자에게 경고(Findings)를 보낸다.
2. VPC Flow Logs에서 위협 탐지
GuardDuty가 네트워크 트래픽(VPC Flow Logs)을 분석하여 찾아내는 위협은 크게 두 가지로 나뉜다.
2.1. 리소스에 ‘대한(To)’ 의심스러운 트래픽 (외부 공격)
해커가 인프라의 약점을 찾기 위해 외부에서 찔러보는 형태의 공격이다. 가장 대표적인 예로, 오픈 포트 스캐닝(PortScanning)과 SSH/RDP 무차별 대입 공격(Brute-force)이 있다.
해커들은 주로 Nmap이라는 도구를 사용해 타겟 서버에 어떤 포트가 열려 있는지 검사한다. (Nmap을 활용한 포트 스캔 예시)
1
2
# 호스트에 대해 포트 스캔 실행 (Nmap)
$ nmap -sT -Pn 10.0.0.1
- 위 명령을 실행하면 22(SSH), 8000(HTTP) 등 열려있는 포트 목록이 반환된다.
- 로그에서의 모습 : 이 스캔을 당한 서버의 VPC Flow Logs를 확인해 보면, 동일한 외부 IP가 수많은 다른 목적지 포트로 짧은 시간 안에 많은 연결을 시도한 기록이 남게 된다.
- GuardDuty는 이러한 비정상적인 Flow Logs 패턴을 인식하고, “SSH 무차별 대입 공격 시도가 탐지됨”과 같은 경고를 띄워준다.
2.2. 리소스’에서 발생한(From)’ 의심스러운 트래픽 (호스트 손상)
만약 공격자가 방어를 뚫고 EC2 인스턴스의 제어권을 탈취했다면, 해커는 그 서버를 악용하여 다른 짓을 시작한다. 이를 모니터링하면 우리 서버가 해킹되었다는 사실을 빠르게 알아차릴 수 있다.
- DoS 공격 트래픽 : 감염된 인스턴스가 갑자기 비정상적으로 막대한 양의 트래픽을 외부로 쏟아낸다. (CloudWatch Insight의 트래픽 급증 그래프로도 확인 가능)
- 이메일 스팸 발송 : 평소 이메일 서버가 아닌 인스턴스가 갑자기 25번 포트(SMTP)로 아웃바운드 트래픽을 대량 전송한다면 해킹된 것으로 판단할 수 있다.
- 암호화폐 채굴 : 비트코인 네트워크 등 알려진 마이닝 풀(Mining Pool)의 IP 주소와 통신을 시도한다.
2.3. GuardDuty의 네트워크 관련 주요 검사 결과(Findings) 요약
GuardDuty가 VPC Flow Logs를 분석하여 찾아내는 대표적인 위협 유형들은 아래와 같다.
| 검사 결과 이름 (Finding Name) | 탐지 내용 (설명) |
|---|---|
| Backdoor:EC2/C&CActivity.B!DNS | EC2가 알려진 악성 해커의 C&C(명령 및 제어) 서버와 통신하고 있음을 알린다. |
| Backdoor:EC2/DenialOfService.Tcp | EC2가 대량의 아웃바운드 TCP 트래픽을 생성하여 외부로 DoS 공격을 수행 중임을 알린다. |
| Backdoor:EC2/Spambot | EC2가 스팸 메일 발송을 위해 25번 포트(SMTP)로 통신하고 있음을 알린다. (인스턴스 손상 확실) |
| CryptoCurrency:EC2/BitcoinTool.B | EC2가 비트코인 등 암호화폐 채굴과 관련된 IP 주소와 통신하고 있음을 알린다. |
| Impact:EC2/PortSweep | EC2가 다수의 다른 외부 IP 주소들을 향해 포트 스캔을 공격적으로 수행하고 있음을 알린다. |
| Recon:EC2/Portscan | 짧은 시간 동안 누군가 우리의 EC2 인스턴스의 여러 포트에 연결을 시도하며 약점을 찾고(정찰) 있음을 알린다. |
| Trojan:EC2/DNSDataExfiltration | EC2가 DNS 쿼리를 악용해 중요 데이터를 외부로 몰래 빼돌리고(유출) 있음을 알린다. |
| UnauthorizedAccess:EC2/TorRelay | EC2가 익명 네트워크인 Tor(토르) 릴레이 네트워크에 연결하고 있음을 알린다. |
3. CloudTrail 로그에서 위협 탐지
공격자가 IAM 자격 증명 (Access Key 등)을 탈취하여 AWS 계정에 침투했을 때, 이들이 수행하는 악의적인 API 호출 패턴은 크게 정찰, 권한 상승, 추적 은폐, 중단(리소스 소비) 4가지로 나뉜다.
GuardDuty는 CloudTrail 로그를 실시간으로 분석해 이 4단계의 징후를 모두 잡아낸다.
3.1. 1단계: 정찰 수행(Reconnaissance)
해커가 자격 증명을 훔친 후 가장 먼저 하는 일은 “내가 지금 무슨 권한을 가지고 있고, 어떤 소중한 리소스가 있는지” 탐색하는 것이다.
- 탐지 지표 (로그 패턴)
- 평소에 쓰지 않던
GetUser,ListUserPolicies,GetPolicy같은 IAM 권한 확인 API를 무더기로 호출한다. - 권한이 없는 API를 찔러보면서 수많은 접근 거부(Access Denied) 오류를 발생시킨다.
- 데이터가 들어있는 곳을 찾기 위해
ListBuckets’,GetBucektEncryption같은 조회(List,Get,Describe) 작업을 대량으로 수행한다.
- 평소에 쓰지 않던
- 관련 GuardDuty 검사 결과
Recon:IAMUser/UserPerminssions: 의심스러운 상황에서 IAM 권한을 조사하고 있음을 알린다.Discover:S3/BucketEnumeration.Unusual: 비정상적인 방식으로 S3 버킷 목록을 뒤지고 있음을 알린다.
3.2. 2단계: 권한 상승 (Escalating Privilege)
해커가 원하는 데이터에 접근할 권한이 없다면, 스스로에게 권한을 부여하거나 더 높은 권한을 가진 새로운 사용자를 만들어 내려 시도한다.
- 탐지 지표 (로그 패턴)
- IAM 권한 조작 :
AttachUserPolicy,CreateUser,AddUserToGroup,UpdateAssumeRolePolicy등의 API를 호출해 관리자 권한을 탈취하려 한다. - 리소스 정책 조작 : IAM을 건드리기 어렵다면 리소스 자체의 문을 열기 위해
PutBucketPolicy(S3),AddPermission(Lambda, SQS),PutResourcePolicy(CloudWatch) 등을 호출한다.
- IAM 권한 조작 :
- 관련 GuardDuty 검사 결과
PrivilegeEscalation:IAMUser/AdministrativePermissions: 공격자가 자신에게 허용적인 정책을 할당하여 권한을 상승시키려 시도했음을 알린다.
3.3. 3단계: 추적 은폐 (Covering Tracks)
공격자는 자신의 해킹 행위가 관리자에게 들키지 않도록 로그를 끄거나 기록을 삭제하려고 시도한다.
- 탐지 지표 (로그 패턴)
- CloudTrail 로깅을 중지(
StopLogging)하거나, S3에 저장된 로그 파일을 삭제한다.
- CloudTrail 로깅을 중지(
- 관련 GuardDuty 검사 결과
Stealth:IAMUser/CloudTrailLoggingDisabled: 누군가 악의적인 목적으로 CloudTrail 추적을 비활성화했음을 알린다.Stealth:S3/ServerAccessLoggingDisabled: S3 서버 접근 로깅을 꺼서 자신의 흔적을 지우려 했음을 알린다.
3.4. 4단계: 중단 및 자원 소비 (Disruption & Resource Consumption)
목적을 달성한 해커가 리소스를 파괴하여 서비스를 중단시키거나, 악의적인 목적(암호화폐 채굴, 봇넷 등)을 위해 막대한 비용이 드는 리소스를 무단으로 생성한다.
- 탐지 지표 (로그 패턴)
- 비정상적인 속도로 대량의 데이터 삭제 (
DeleteObject) API가 호출된다. - 고사양의 EC2 인스턴스를 대량으로 띄우는
RunInstanceAPI가 호출된다.
- 비정상적인 속도로 대량의 데이터 삭제 (
- 관련 GuardDuty 검사 결과
Impact:S3/ObjectDelete.Unusual: 평소와 다르게 비정상적으로 많은 S3 데이터가 삭제되고 있음을 알린다.ResourceConsumption:IAMUser/ComputerResources: 평소와 다른 위치나 방식으로 EC2 인스턴스를 시작했음을 알린다.