Asterrr's Handbook

Threat detection with GuardDuty

GuardDuty foundational sources and protection plans, Extended Threat Detection attack sequences, finding types and severity, suppression rules, threat lists and organization-wide rollout.

Exam tasks: 1.1 (skills 1.1.1 to 1.1.4: monitoring requirements, aggregating security events, detecting anomalous activity)

The decision: which GuardDuty protection plans does this workload need, who administers GuardDuty for the whole organization, and how do you cut noise without blinding the detector?

What GuardDuty sees

  • GuardDuty reads its sources through an independent stream. You don't have to turn on a trail, flow logs or Resolver query logging for GuardDuty to analyze them, and turning them on doesn't change what it sees.
  • It is Regional. Enable it in every Region, including ones you don't use: attackers love idle Regions.
  • It detects only. It never blocks traffic or revokes keys. Blocking is your EventBridge-driven response.

Your own DNS server

DNS-based findings (for example Backdoor:EC2/C&CActivity.B!DNS) come from queries sent to the Amazon-provided VPC resolver. If instances use a self-managed DNS server, GuardDuty loses that signal. Runtime Monitoring restores DNS visibility from inside the host, because the agent sees the lookups directly.

Protection plans

PlanData it addsTurn it on when
S3 ProtectionCloudTrail S3 data events (GetObject, PutObject, DeleteObject)Buckets hold anything you'd miss. Also unlocks S3 exfiltration attack sequences
EKS ProtectionKubernetes audit logs, pulled directly from EKS (no cluster logging needed)You run EKS and want API-level detections: anonymous access, privileged pods
Runtime MonitoringOS-level process, file and network events from a GuardDuty security agentYou need to see inside hosts and containers: reverse shells, miners, container escape
Malware Protection for EC2Agentless scan of EBS volumes, started by a suspicious finding or on demandYou want evidence of malware on an instance without installing anything
Malware Protection for S3Scans newly uploaded objects in chosen buckets, can tag resultsUntrusted uploads (user files, partner drops). Usable without the rest of GuardDuty
Malware Protection for AWS BackupScans EBS snapshots, AMIs and recovery pointsYou need to prove a restore point is clean before recovery
RDS ProtectionLogin activity for supported Aurora and RDS enginesBrute force or anomalous logins to databases
Lambda ProtectionNetwork activity of Lambda functionsFunctions that could be abused for mining or C2 traffic
AI ProtectionCloudTrail data events from Bedrock, Bedrock AgentCore and SageMaker AIModel invocation abuse, cost harvesting, prompt injection
  • New GuardDuty accounts get every plan except Runtime Monitoring enabled during the 30-day trial. Accounts that enabled GuardDuty before a plan launched don't get the new plan automatically.
  • Runtime Monitoring needs the agent. GuardDuty can manage it for you: an EKS add-on, a Fargate sidecar, or Systems Manager for EC2. The agent reaches GuardDuty through a VPC endpoint that GuardDuty creates.

Exam signal

"Detect a reverse shell / crypto-miner process inside a container" means Runtime Monitoring. "Detect access to the Kubernetes API from a Tor exit node" means EKS Protection (audit logs). "Scan files uploaded by customers before processing" means Malware Protection for S3.

Findings: names and severity

Every finding type follows ThreatPurpose:ResourceTypeAffected/ThreatFamilyName.DetectionMechanism!Artifact:

  • ThreatPurpose tells you the attacker's goal: Recon, UnauthorizedAccess, CryptoCurrency, Backdoor, Trojan, Exfiltration, Impact, Persistence, PrivilegeEscalation, DefenseEvasion, Stealth, Policy, Execution, Discovery, PenTest, and AttackSequence.
  • ResourceType tells you where to look: EC2, IAMUser, S3, Kubernetes, Runtime, Lambda, RDS.
  • !DNS means it came from DNS logs; .Custom means it matched your threat list.

Worth recognising on sight:

FindingWhat it meansFirst response
UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWSRole credentials from an instance are being used from outside AWSRevoke the role's active sessions, then investigate the instance
CryptoCurrency:EC2/BitcoinTool.B!DNSInstance resolves mining pool domainsIsolate the instance, snapshot for forensics
Stealth:IAMUser/CloudTrailLoggingDisabledSomeone stopped or deleted a trailRestart logging, find the principal, check SCPs
Policy:IAMUser/RootCredentialUsageRoot user credentials called an APIConfirm it was planned, review root MFA
Recon:EC2/PortProbeUnprotectedPortInternet hosts probing an open portTighten the security group if the port shouldn't be public
Exfiltration:S3/AnomalousBehaviorUnusual volume or pattern of S3 readsCheck who, from where, and which objects
SeverityValueMeaning
Critical9.0 to 10.0An attack sequence is in progress or just happened. All attack sequence findings are Critical
High7.0 to 8.9The resource is compromised and actively misused
Medium4.0 to 6.9Behaviour deviates from the baseline and may mean compromise
Low1.0 to 3.9An attempt that didn't succeed, such as a blocked scan
9.0–10.0
Critical severity, used by Extended Threat Detection attack sequences.
24 hours
Rolling window Extended Threat Detection correlates signals over.
90 days
How long GuardDuty keeps findings, including archived ones. Export to S3 to keep longer.
6 hours
Default frequency for sending updates of existing findings. Can be set to 15 minutes or 1 hour.
50,000
Member accounts one delegated GuardDuty administrator can manage.
30 days
Free trial per account, per Region, for GuardDuty and its plans.

Extended Threat Detection

  • On by default wherever GuardDuty is on, at no extra cost. You can't really "enable" it; you feed it by turning on more protection plans.
  • It correlates signals (API calls, weak signals that aren't findings on their own, and existing findings) across sources and time, within one account, and raises a single attack sequence finding.
  • Attack sequence types include AttackSequence:IAM/CompromisedCredentials, AttackSequence:S3/CompromisedData, AttackSequence:EKS/CompromisedCluster, AttackSequence:ECS/CompromisedCluster and AttackSequence:EC2/CompromisedInstanceGroup.
  • Coverage depends on your plans: S3 exfiltration sequences need S3 Protection, EKS sequences need EKS Protection or Runtime Monitoring, ECS and EC2 group sequences lean on Runtime Monitoring, and AI workload signals need AI Protection.

Exam signal

"Reduce alert fatigue from dozens of related Medium findings and see the whole attack as one story" points to Extended Threat Detection and its attack sequence findings, not to a SIEM correlation rule you build yourself.

Tuning: suppression rules, trusted lists and threat lists

  • A suppression rule is a saved filter that auto-archives matching new findings. GuardDuty still generates them (you can see them under Archived), but they are not sent to EventBridge, Security Hub, Detective or the S3 export, and they don't start malware scans.
  • Keep rules narrow: finding type plus something specific, such as the scanner's AMI ID, a tag on bastion hosts, or your on-premises egress IP.
  • Trusted IP lists stop findings for traffic from IPs you own. Threat lists add your own bad IPs and domains, producing .Custom findings.
  • In a multi-account setup, only the administrator account manages suppression rules, trusted IP lists and threat lists. Members can't.

Suppress everything from a noisy resource

Suppressed findings are archived, and Extended Threat Detection ignores archived findings when it builds attack sequences. A broad rule such as "archive all Kubernetes findings" quietly removes the signals that would have revealed a cluster compromise. Suppress specific known-good behaviour only, and only after you've seen the false positive repeat.

Trusted IP list as a suppression tool

Adding your vulnerability scanner's IP to a trusted IP list hides every finding involving that IP, including real ones if the scanner is ever compromised. A suppression rule scoped to Recon:EC2/Portscan from the scanner instance is the targeted fix.

Running GuardDuty across an organization

  • The management account designates a delegated administrator, normally the security tooling account. Using the management account itself is allowed but goes against least privilege.
  • The designation is per Region, and it must be the same account in every Region.
  • Auto-enable can apply to ALL accounts (existing and new), NEW only, or NONE, and can be set per protection plan. Choose ALL if the question says "no account may be left out".
  • Findings from members appear in the admin account. The admin's EventBridge bus gets every member's findings, so one rule there covers the organization in that Region.
  • Members can't disassociate themselves or suspend GuardDuty when managed through Organizations. Changing the delegated admin removes the membership links but leaves GuardDuty enabled in members.
  • The old invitation method still works for accounts outside the organization, but Organizations is the recommended path.
  • Export findings to an S3 bucket for retention beyond 90 days. The export requires a KMS key whose policy lets GuardDuty use it.

Legacy: use protection plans and Runtime Monitoring instead

Older material refers to GuardDuty "data sources" you toggle (S3 logs, Kubernetes logs) and to a separate "EKS Runtime Monitoring" feature. Current GuardDuty groups these as protection plans, and runtime coverage for EKS, EC2 and ECS (including Fargate) is one Runtime Monitoring plan.

Scenarios

Scenario
A retailer has 240 accounts in AWS Organizations and a dedicated security tooling account. The CISO requires threat detection in every account and every enabled Region, including accounts created in the future, with all findings reviewed in one place. The security team must also be able to maintain one list of known malicious IP addresses for the whole company. What should the security engineer do?
Scenario
A fintech runs a nightly authorized vulnerability scan from two EC2 instances built from a dedicated AMI. Each night GuardDuty raises Recon:EC2/Portscan findings for those instances, and the SOC wants them to stop reaching its SIEM, which consumes findings through EventBridge. The SOC must still be alerted if any other instance port-scans. What is the MOST appropriate solution?
Scenario
A media company enabled GuardDuty two years ago with default settings and has never changed them. After an incident, investigators found that stolen role credentials were used to make a bucket policy public and then download 40 GB from that bucket. GuardDuty produced one Medium finding about the policy change but nothing about the download. Which change would MOST improve detection of this attack pattern in future?

Further reading

On this page