Description
Rotate, refresh, and evolve the deception environment to maintain operational effectiveness. Assets that were interacted with may be compromised or burned. The deception environment must evolve faster than adversary awareness of it.
Rationale
Deception environments are not set-and-forget. Adversaries who realize they interacted with deception will share that knowledge with their group. Assets that were touched need to be rotated with fresh, differently-configured alternatives. The deception environment must continuously evolve to stay ahead of adversary awareness.
Supporting Basis
Direct antecedentThe sources explicitly describe iterative or adaptive revision and redeployment in response to observations and changing adversary behavior.
- Almeshekah, M.H.; Spafford, E.H. Planning and Integrating Deception into Computer Security Defenses. NSPW 2014.Peer reviewed
- The MITRE Corporation. A Practical Guide to Adversary Engagement, version 1.0. 2022.Technical guide
- Islam, M.M.; Al-Shaer, E. Active Deception Framework: An Extensible Development Environment for Adaptive Cyber Deception. IEEE SecDev 2020, 41–48.Peer reviewed
These sources establish design lineage and scope. They do not validate this record's operational effectiveness, planning estimates, environment labels, or ATT&CK relationships.
Implementation Steps
Assess asset exposure
Review which deception assets were interacted with and assess the likelihood that they have been identified as deception by the adversary.
Rotate exposed assets
Replace interacted assets with new ones using different configurations, different names, and different network positions. The new assets should not be traceable to the old ones.
Refresh stale assets
Update deception assets that have become stale: expired certificates, outdated software versions, stale user login timestamps, and old file modification dates.
Evolve the architecture
Based on deception effectiveness analysis, adjust the overall deception architecture: add coverage in areas that proved effective, reduce investment in areas that saw no activity.
Technical Implementation Examples(1)
Deception Environment Refresh Automation
Script to rotate and refresh deception assets after an adversary engagement to prevent burn
#!/bin/bash
# refresh-deception-environment.sh
# Rotate deception assets after adversary engagement.
# Replaces interacted assets with fresh configurations to prevent
# adversaries from recognizing previously encountered decoys.
set -euo pipefail
ENGAGEMENT_ID="$1"
TERRAFORM_DIR="/opt/shadow-cdf/terraform"
ANSIBLE_DIR="/opt/shadow-cdf/ansible"
LOG_FILE="/var/log/shadow-cdf/refresh-$(date +%Y%m%d).log"
log() { echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] $*" | tee -a "$LOG_FILE"; }
log "Starting deception environment refresh for engagement: $ENGAGEMENT_ID"
# 1. Identify assets that were interacted with
log "Querying SIEM for interacted assets..."
INTERACTED_HOSTS=$(curl -s "https://siem.shadow-mgmt.internal/api/v1/query" \
-H "Authorization: Bearer $SIEM_TOKEN" \
-d "{
\"query\": \"shadow_cdf:true AND engagement_id:$ENGAGEMENT_ID\",
\"agg\": \"terms:destination.ip\"
}" | jq -r '.aggregations.terms.buckets[].key')
log "Interacted assets: $INTERACTED_HOSTS"
# 2. Destroy interacted assets
for HOST_IP in $INTERACTED_HOSTS; do
log "Destroying interacted asset: $HOST_IP"
cd "$TERRAFORM_DIR"
terraform destroy -target="module.decoy_host[\"$HOST_IP\"]" -auto-approve
done
# 3. Generate new configurations with different parameters
log "Generating fresh deception asset configurations..."
NEW_HOSTNAME_SUFFIX=$((RANDOM % 90 + 10))
cd "$TERRAFORM_DIR"
terraform apply \
-var="hostname_suffix=$NEW_HOSTNAME_SUFFIX" \
-var="refresh_trigger=$(date +%s)" \
-auto-approve
# 4. Re-configure with fresh artifacts
log "Applying fresh Ansible configurations..."
cd "$ANSIBLE_DIR"
ansible-playbook playbooks/configure-decoy-host.yml \
--extra-vars "refresh_mode=true engagement=$ENGAGEMENT_ID"
# 5. Rotate trap credentials
log "Rotating trap credentials..."
ansible-playbook playbooks/rotate-trap-credentials.yml
# 6. Redistribute canary tokens
log "Redistributing canary tokens..."
python3 /opt/shadow-cdf/scripts/canary-token-manager.py \
--action rotate \
--engagement "$ENGAGEMENT_ID"
# 7. Update DNS records for new assets
log "Updating DNS breadcrumbs..."
ansible-playbook playbooks/update-dns-breadcrumbs.yml
# 8. Validate new environment
log "Validating refreshed environment..."
python3 /opt/shadow-cdf/scripts/validate-deception-env.py
log "Deception environment refresh complete."
log "New assets deployed with hostname suffix: $NEW_HOSTNAME_SUFFIX"
log "Archive engagement data: /var/archive/shadow-cdf/$ENGAGEMENT_ID/"Considerations
- Refresh frequency should be based on operational tempo. After a major adversary engagement, refresh quickly. During quiet periods, standard maintenance cycles suffice.
- Automation is essential for sustainable refresh operations. Manual refresh of dozens of deception assets is not scalable.
- Maintain an archive of retired deception assets and their configurations. This history informs future deception design and prevents repeating configurations that were ineffective.
Supported Environments
Tools & Resources
- Infrastructure-as-code tools (Terraform, Ansible)
- Configuration management
- Automated refresh scripts
Related Techniques
Quick Stats
- Phase
- Respond
- Difficulty
- intermediate
- Detection Value
- medium
- Cost
- moderate
- Time
- 3-7 days per cycle
- ATT&CK Mappings
- 0