A. 개요

  • 아마존 GuardDuty는 AWS 계정을 보호하기 위한 지능형 위협 감지 기능을 제공한다.
  • 머신 러닝 알고리즘이 있어서 이상현상 감지 기능과 타사 데이터를 이용해 위협을 찾아낸다.
  • 원클릭으로 작동이 되며 별도의 소프트웨어를 설치할 필요가 없다.
  • GuardDuty는 많은 입력 데이터를 확인한다.
    •  CloudTrail Events Logs - 일반적이지 않은 API 호출 승인이나 승인되지 않은 배포 등등
      • CloudTrail Management Events - VPC 서브넷 생성, Trail 생성 등등
      • CloudTrail S3 Data Events - 오브젝트의 생성, 삭제 등등
    • VPC Flow Logs - 일반적이지 않은 내부 트래픽이나 아이피 주소 등등
    • DNS Logs - DNS 쿼리 안에 인코딩 된 데이터를 보내는 EC2 인스턴스를 살펴본다. 
    • Optional Features - EKS Audit Logs(감사 로그), RDS&Aurora, EBS, Lambda, S3 Data Events 등등을 분석할 수 있다. 
  • 감지 중에 무언가를 발견했을 때 EventBridge을 통해 이벤트가 생성이 되며 이를 자동 통보로 규칙으로 설정할 수 있다. 이 규칙들은 EventBrige가 대상으로 하는 모든 것들을 대상으로 한다. 예를 들어 AWS의 Lambda나 SNS 같은 것들도 대상으로 지정 가능하다.
  • 암호화폐 공격을 방어하기에 좋은 방어 수단이 될 수 있다. 암호화폐를 찾기 위한 공격이 있을 수 있는데 GurardDuty는 입력 데이터를 분석하여 공격사실을 알아낸다. 

B. Multi-Account Strategy

  • 관리자 계정을 통해 다수의 사용자 계정을 관리할 수 있다. 
    • GuradDuty를 통해 초대를 보내 관리자 계정이 사용자 계정을 추가할 수 있다.
    • 관리자 계정은 사용자 계정 삭제가 가능하여 GuardDuty 관리가 가능하다.
    • GuardDuty가 발견한 모든 결과를 관리할 수도 있다.
    • 신뢰하는 IP 주소 리스트나 위협 리스트들을 설정하여 관리할 수 있다.
    • 위임된 관리자라는 기능
      • 멤버 계정이 GuardDuty의 관리자가 될 수 있다. 이를 통해 GuardDuty의 관리자는 조직 전체의 관리자가 될 필요가 없다.  (하기의 그림 참조)

 

Amazon GuradDuty - designated administrator 출처 : Stephane Maarek from Udemy

 
예를 들어, AWS 조직이 있고 그 하위에 2개의 OU(Prod, Dev)가 있다고 가정을 한다. 그리고 GuardDuty를 관리를 위한 관리자 계정을 만들어 권한을 위임하여 다른 모든 멤버 계정에서 GuardDuty를 관리할 수 있다.
 

C. Finding & Finding Types

AWS 계정에서 악의적인 GuardDuty에서 잠재적인 심각한 보안 이슈를 발견한다면 EvnetBridge를 통해 자동으로 응답할 수 있다.  작동원리는 GuardDuty가 무언가를 발견하면 Amazon EventBridge로 보내 이메일 알림, 람다 함수, Slack 등을 가능하게 한다. 이벤트 대상은 위임된 관리자나 관리자 계정을 통해 멤버 계정과 관리자 계정 모두 설정할 수 있다.  
 

Amazon GuradDuty 출처 : Stephane Maarek from Udemy

 
 

  • GuradDuty는 서비스로부터 직접적으로 독립된 데이터 스트림을 가져오며 대표적으로 Clould Trail 로그, VPC 흐름 로그, EKS 로그가 있다. 또한 GuardDuty는 데이터와 관리 이벤트를 자동으로 읽어온다. GuardDuty를 활성화하여 이 이벤트들을 읽어온다 하더라도 서비스가 활성화되지 않는다. 단지 이벤트, 로그만 읽어서 가져올 뿐이다.
  • 자동 알림의 정상 작동 여부를 확인하기 위해 샘플로 발견값(Finding)을 생성할 수 있다.

 

ThreatPurpose:Resource TypeAffected/ThreatFamilyName/DetectionMechanism!Artifact
 

  • 각각의 발견값(Finding)은 값이 있으며 이는 높음, 중간, 낮음과 같은 경고 레벨로 카테고리화되어있다. 또한, 위와 같이 naming 규칙이 있습니다. 
    • ThreatPurpose : 주요한 위협 목적 ( 백도어, 암호화폐 공격 등등)
    • Resource Type : EC2, S3 등등 타겟이 되는 AWS 자원(서비스)의 이름
    • ThreatFamilyName :  악의적인 활동에 대한 설명 (네트워크 비정상 포트 등등)
    • DetectionMechanism : GuradDuty가 결괏값을 찾은 방법 (TCP, UDP을 통해서... 등등)
    • Artifact : 악의적인 활동에 사용된 자원을 설명

 

발견값 예시 출처 : Stephane Maarek from Udemy