안녕하세요 에이클라우드입니다. 이번 포스트에서는 Amazon GuardDuty에 대해 알아보도록 하겠습니다.
클라우드 환경에서 보안을 강화하고 잠재적인 위협을 조기에 탐지하는 것은 모든 기업의 최우선 과제입니다.
아마존 웹 서비스(AWS)가 제공하는 Amazon GuardDuty는 기업의 이러한 요구를 충족시키기 위한 강력한 보안 탐지 서비스로, 머신 러닝과 위협 인텔리전스를 활용하여 AWS 계정 및 워크로드에 대한 이상 활동을 자동으로 탐지합니다.
해당 주제는 포스트가 너무 길어지는 것을 방지하기 위해 1, 2편으로 나누어 소개드릴 예정이며 그 중 1편인 본 포스트의 목차는 다음과 같습니다.
▪︎ Amazon GuardDuty의 작동 방식
▪︎ 기본 데이터 소스
▪︎ 추가 리소스 보호
▪︎ Findings (결과)
▪︎ Severity Level (심각도)
▪︎ 대응 자동화
위와 같이 Amazon GuardDuty의 작동 방식, 수집하는 데이터 소스 등 주요 특징을 소개드리고, 탐지된 위협에 대한 대응을 자동화하여 클라우드 환경의 보안 관리 수준을 한 단계 끌어올리는 방법에 대해 알아보도록 하겠습니다.
Amazon GuardDuty
Amazon GuardDuty는 AWS 환경에서 데이터 소스 및 로그를 지속적으로 모니터링하고 분석 및 처리하는 위협 탐지 서비스입니다.
악성 IP 주소 및 도메인 목록, ML 모델 등의 위협 인텔리전스 피드를 사용하여 AWS 환경의 악의적인 활동을 탐지합니다.
예를 들어 인스턴스 또는 컨테이너 워크로드에서 암호 화폐 채굴 활동, RDS 및 Aurora의 데이터 유출이나 비정상적인 로그인 이벤트, S3 멀웨어, 비정상적인 API 사용 패턴 등 AWS 환경에서 일어나는 다양한 위협을 탐지할 수 있습니다.
아래는 Amazon GuardDuty의 작동 방식입니다.
Amazon GuardDuty 작동 방식

Amazon GuardDuty의 작동 방식을 표현하면 위와 같습니다.
먼저 활성화된 데이터 소스를 수집 및 분석합니다. Amazon GuardDuty는 기본적으로 CloudTrail, Flow Logs, DNS Logs를 수집하며, 이 외에 EKS, RDS, EBS 등 다른 리소스 역시 활성화가 되어있는 경우 Amazon GuardDuty가 데이터 소스를 수집할 수 있습니다.
아래는 Amazon GuardDuty의 2가지 위협 탐지 방식입니다.
✅ Threat Intelligence
– GuardDuty는 위협 정보 소스를 사용하여 위협을 탐지합니다. 이는 AWS의 내부 소스나 AWS의 보안 파트너사의 인텔리전스 피드가 될 수 있습니다.
– 예를 들어 리소스가 악의적인 도메인이나 IP 주소에 연결 또는 쿼리하는 경우 이를 위협으로 식별합니다.
✅ Anomaly Detection
– GuardDuty의 ML을 통해 기존 패턴에서 벗어난 경우를 위협으로 식별할 수 있습니다.
– 예를 들어 사용자의 기존 패턴을 벗어난 비정상적인 API 호출이나 루트 사용자 액세스 등이 있습니다.
– 다만, GuardDuty가 기존 패턴을 학습하는 데 1~2주가 소요될 수 있습니다.
위와 같은 2가지 위협 탐지 방식을 통해 Amazon GuardDuty는 기존에 알려진 위협이나, 새로운 패턴의 위협을 정밀하게 탐지해낼 수 있습니다.
GuarDuty가 위협을 탐지한 이후의 액션은 아래 Findings 단계에서 소개해드리겠습니다.
기본 데이터 소스

Amazon GuardDuty를 활성화하면 계정에 연결된 기본 데이터 소스를 자동으로 수집하기 시작하며, 이를 통해 악성 도메인이나 IP 주소와의 통신을 탐지하고 비 정상적인 작업 및 활동을 식별합니다.
수집되는 기본 데이터 소스는 AWS CloudTrail 이벤트, VPC Flow Logs, DNS Logs가 있으며 해당 소스들이 GuardDuty로 전송되는 동안 모든 로그 데이터는 암호화됩니다.
Amazon GuardDuty가 기본 데이터 소스를 수집하기 위해서 사용자가 별도 기능을 활성화 해야하거나 하는 작업이 필요하지 않습니다.
✅ AWS CloudTrail 이벤트
– GuardDuty는 콘솔이나 CLI, SDK 등을 통해 발생된 API 호출을 기록한 CloudTrail History를 분석합니다.
– API 호출에 사용된 소스 IP 주소와 사용자 및 계정에 대해 식별할 수 있습니다.
✅ VPC Flow Logs
– VPC Flow Logs는 VPC의 ENI에서 송수신 되는 트래픽에 대한 정보를 수집할 수 있는 기능입니다.
– GuardDuty는 VPC Flow Logs를 분석하여 수상한 외부 트래픽이나 IP 주소를 식별합니다.
– VPC Flow Logs에 대한 로그 데이터 수집은 독립적인 복제 스트림을 통해 수행되므로, 사용자가 VPC Flow Logs 기능을 별도로 활성화 시킬 필요는 없습니다.
✅ DNS Logs
– EC2 인스턴스에서 AWS DNS Resolver를 사용하는 경우, GuardDuty는 내부 DNS Resolver를 통해 쿼리 로그를 분석합니다.
– DNS Logs를 수집하기 위해 사용자가 Route53을 반드시 사용해야할 필요는 없습니다.
추가 리소스 보호 기능
기본 데이터 소스 이외에도 AWS 사용자들이 주로 사용하는 리소스에 대한 추가적인 보호 기능도 제공합니다.

여기에는 S3 Protection, EC2 및 S3 멀웨어 감지, RDS & Aurora Protection, Lambda 네트워크 활동, EKS Audit Log 및 런타임 모니터링 등이 있습니다.
추가 리소스 역시 VPC Flow Logs와 마찬가지로 S3 Protection을 활성화를 위해 S3 이벤트 로깅을 활성화 하거나 EKS Protection을 위해 EKS Audit Logs를 활성화하는 등 별도의 데이터 소스 활성화 작업을 할 필요가 없으며, 단순히 GuardDuty에서 기능이 활성화만 되어있으면 로그를 자동으로 수집합니다.
✅ S3 Protection & 멀웨어 감지
– S3 보호 기능은 버킷에서 데이터 유출 및 파기 시도 등의 잠재적인 보안 위협을 식별합니다. 이를 위해 GuardDuty는 CloudTrail의 데이터 이벤트를 모니터링합니다.
– S3 멀웨어 보호는 버킷에 새로 업로드된 객체를 스캔하여 멀웨어를 감지합니다. 선택한 버킷에 객체가 업로드되면, GuardDuty가 자동으로 멀웨어 스캔을 시작합니다.
✅ EC2 & EBS 멀웨어 감지
– GuardDuty는 EC2 인스턴스와 연결된 EBS 볼륨을 스캔하여 멀웨어를 감지합니다.
– GuardDuty는 잠재적으로 영향을 받는 리소스에 연결된 EBS 볼륨의 스냅샷을 생성하고 이를 GuardDuty 서비스 계정과 공유하여 스캔을 시작합니다. 따라서 GuardDuty의 멀웨어 스캔 작업에 의해 리소스 성능이 저하되는 일이 없습니다.
– GuardDuty의 멀웨어 보호 기능을 통해 EC2 인스턴스에 보안 소프트웨어를 설치하지 않고도 멀웨어에 대한 탐지가 가능해집니다.
✅ Aurora & RDS
– Amazon Aurora 및 Amazon RDS에 대한 액세스 위협을 확인하기 위해 RDS 로그인 이벤트를 모니터링합니다.
– 성공 및 실패한 로그인 시도를 모두 캡쳐하고 비정상적인 패턴이나 위협이 감지되면 이에 대한 Findings를 생성합니다.
– RDS 보호 기능을 최초로 활성화하거나 새로 만든 데이터베이스의 경우 정상적인 동작 기준을 학습하는 기간이 있습니다. 이는 최대 2주가 소요될 수 있으며 이 기간 동안에는 비정상적인 로그인 결과가 없을 수 있습니다.
– Aurora의 위협 탐지 기능을 통해 저장된 데이터에 대한 잠재적 위협을 식별합니다.
✅ EKS Protection
– EKS Protection을 활성화하면 GuardDuty는 Amazon EKS 클러스터에서 Audit Logs를 모니터링하고 악의적인 활동을 분석합니다.
✅ 런타임 모니터링
– 런타임 모니터링은 OS 수준, 네트워킹, 파일 이벤트를 분석하여 특정 AWS 워크로드에서 잠재적인 위협을 감지합니다.
– Amazon EC2, Amazon EKS, AWS Fargate의 런타임 모니터링을 수행할 수 있습니다.
– GuardDuty는 보안 에이전트를 사용하여 런타임 동작에 대한 가시성을 추가합니다.
✅ Lambda Protection
– Lambda 보호 기능을 활성화하면 GuardDuty가 Lambda의 네트워크 활동 로그를 모니터링합니다.
– 예를 들어 Lambda 함수가 잘 알려진 C&C 서버와 연결된 IP 주소를 쿼리하는 등, 의심스러운 네트워크 트래픽을 식별하면 GuardDuty는 Findings를 생성합니다.
Findings (결과)
앞선 내용에서 “Findings를 생성합니다.”라는 문장이 종종 나왔습니다.
여기서 Findings(결과)란 Amazon GuardDuty가 AWS 계정 및 데이터에서 감지된 보안 문제를 의미합니다.
Findings는 AWS 콘솔이나 AWS CLI API 작업으로 확인이 가능하며, 여기에는 계정 ID, 날짜, 결과 유형, 리소스, 심각도 등 여러 정보가 표시됩니다.
Finding Type(결과 유형)은 감지된 문제에 대해 간결하게 설명된 정보를 제공합니다.
Finding Type은 [ ThreatPurpose:ResourceTypeAffected/ThreatFamilyName.DetectionMechanism!Artifact
] 형식을 가지고 있습니다.
각 필드에 대한 간략한 설명은 아래와 같습니다.
▪︎ ThreatPurpose – 위협, 공격의 주요 목적
▪︎ ResourceTypeAffected – 영향을 받은 AWS 리소스
▪︎ ThreatFamilyName – 탐지된 악성 활동에 대한 설명
▪︎ DetectionMechanism – 위협 탐지 방식
▪︎ Artifact – 악성 활동에 사용된 리소스
예를 들어 Finding Type이 [ CryptoCurrency:EC2/BitcoinTool.B!DNS ]라면, 아래와 같이 매핑됩니다.
이는 특정 EC2 인스턴스가 암호 화폐와 관련된 도메인 주소를 DNS에 쿼리하였음을 의미합니다.

아래는 콘솔에서 확인한 Amazon GuardDuty의 Findings 항목입니다.
예시와 같이 Amazon GuardDuty가 AWS 환경에서 악의적인 활동을 감지하였으며 이를 Findings로 생성한 모습입니다.

결과를 클릭해보면 해당 Findings에 대해 더 상세한 내역을 확인할 수 있습니다.
보이시는 것과 같이 Finding Type이 [ CryptoCurrency:EC2/BitocinTool.B!DNS ]인 악의적 활동을 감지하였으며, 해당 결과에 대한 심각도, 계정 ID, 리전 등의 여러 항목이 있는 것을 확인할 수 있습니다.

이 외에도 하단에 해당 Findings 정보에 대한 다른 상세 내역도 나와있어 이를 토대로 문제를 해결할 수 있습니다.

또한 Amazon GuardDuty의 가이드 문서에서 탐지된 문제들에 대한 해결 권장 사항을 안내하고 있으니 혹여라도 문제가 발생한 경우 참고하시길 바랍니다.
가이드 링크 : https://docs.aws.amazon.com/ko_kr/guardduty/latest/ug/guardduty_finding-types-ec2.html#cryptocurrency-ec2-bitcointoolbdns

Severity Level (심각도)


위에서 살펴본 Amazon GuardDuty의 Findings에는 각 결과마다 Severity Level(심각도)이 할당됩니다.
심각도 수준이 높을 수록 환경에 미칠 수 있는 잠재적 위험이 높다는 의미이며 1.0 ~ 10.0 범위 내의 심각도 값에 따라 Critical(심각), High(높음), Medium(중간), Low(낮음)로 분류됩니다.
Amazon GuardDuty에서 정의되는 Severity Level의 설명은 아래와 같습니다.
⚫️ Critical (심각)
– 값의 범위가 9.0 ~ 10.0 수준입니다. 공격 시퀀스가 진행 중이거나 최근에 발생했으며 AWS 리소스가 잠재적으로 손상되었거나 이미 손상되었을 수 있습니다.
– 랜섬웨어의 공격 중 일부일 수 있으며 범위가 확대될 수 있으므로 우선적으로 수정할 것을 권장합니다.
🔴 High (높음)
– 값의 범위가 7.0 ~ 8.9 수준입니다. AWS 리소스가 손상되어 무단으로 사용되고 있음을 나타냅니다.
– 우선적으로 리소스의 무단 사용을 방지하기 위해 즉각적인 조치를 취할 것을 권장합니다.
🟠 Medium (중간)
– 값의 범위가 4.0 ~ 6.9 수준입니다. 일반적인 패턴에서 벗어난 의심스러운 활동을 나타내며 경우에 따라서 리소스가 손상 되었을 수 있습니다.
– 최대한 빠르게 영향을 받는 리소스를 조사하고, 원인을 파악할 수 없거나 승인된 활동이 아닌 경우에는 리소스가 손상된 것으로 간주하고 조치를 취합니다.
🟡 Low (낮음)
– 값의 범위가 1.0 ~ 3.9 수준입니다. 포트 스캔이나 침입 시도 실패 등 환경이 손상되지는 않았으나 악의적인 활동이 감지된 경우를 나타냅니다.
– 즉각적인 권장 조치는 없으나, 악의적인 사용자가 환경에 대한 취약점을 찾고 있는 것일 수 있으므로 해당 부분에 대한 인식이 필요합니다.
Findings 대응 자동화
Amazon GuardDuty가 악의적 활동을 탐지하고 이를 Findings로 생성하는 것까지 알아보았습니다.
악의적 활동이 탐지가 되었다면 이에 대응 조치를 취해야합니다만, Amazon GuardDuty는 “탐지 서비스”이므로 탐지된 결과에 대한 조치를 취하는 등의 작업까지는 수행하지 않습니다.
하지만 Amazon EventBridge를 활용한다면 탐지된 악의적 활동에 대한 대응을 자동으로 조치할 수 있습니다.

Findings 대응 자동화 아키텍처 예시는 위와 같습니다.
▪︎ Amazon GuardDuty가 보안 위협을 탐지하면 Findings를 생성하고, 이는 자동으로 EventBridge에 전달됩니다.
▪︎ EventBridge에 의해 Lambda 함수가 트리거되어 정의된 대응 로직을 수행하게되고, SNS를 통해 이메일이나 Slack 등 알림 시스템으로 전달합니다.

사례를 통해 사용 예시를 알아보겠습니다.
1️⃣ Amazon GuardDuty가 VPC Flow Logs에서 수상한 트래픽을 탐지합니다.
2️⃣ GuardDuty는 탐지된 사항에 대해 Finding을 생성합니다. Finding Type은 [ UnauthorizedAccess:EC2/SSHBruteForce ]로 SSH에 대한 무차별 대입 공격을 의미합니다.
3️⃣ Finding이 EventBridge에 전달되어 2가지 대응 조치를 수행합니다.
– 하나는 SNS가 트리거되어 담당자에게 이메일 또는 기타 도구를 통해 알림을 전송합니다.
– 다른 하나는 AWS Lambda 함수를 실행하여 보안 대응 작업을 수행합니다. 이 작업은 NACL과 보안 그룹, WAF의 Web ACL 수정 작업이 될 수 있습니다.
여기까지 Amazon GuardDuty의 작동 방식, 여러 데이터 소스, 탐지된 위협에 대한 결과 및 심각도, 대응 자동화 방법을 다뤄보았습니다.
다음 포스트에서는 AmazonGuardDuty의 멀티 계정 관리와 다른 AWS 서비스와의 통합, 이 외에 기타 사항에 대해 추가적으로 다뤄보도록 하겠습니다.
감사합니다.
✅ AWS 공식 가이드링크
– Amazon GuardDuty란?
– Amazon GuardDuty의 기본 데이터 소스
– GuardDuty Findings
– GuardDuty Findings Type
– GuardDuty Severity Level