Post-exploitation breach confirmation through honey-credential instrumentation
Detect credential theft with zero false positives.
SIGNAL-FLARE plants fake credentials in your application. When attackers steal and use them, you get instant alertsβno guessing, no noise, just ground truth.
Traditional security tools tell you "something suspicious happened."
SIGNAL-FLARE tells you: "credentials were stolen and someone is using them right now."
| Without SIGNAL-FLARE | With SIGNAL-FLARE |
|---|---|
| β Behavioral detection (maybe it's an attack?) | β Ground truth detection (definitely compromised) |
| β High false positive rate | β Zero false positives by design |
| β Alert fatigue | β Every alert is actionable |
| β Detection in days/weeks | β Detection in seconds |
# Clone and start
git clone https://github.com/logesh-GIT001/signal-flare.git
cd signal-flare
# Generate secret and start listener
export FLARE_SECRET=$(openssl rand -hex 32)
docker-compose up -d
# Verify it's running
curl http://localhost:8080/health
# β {"status":"healthy"}# Install
pip install signal-flare
# Generate honey-credential
export FLARE_SECRET=$(openssl rand -hex 32)
signal-flare generate --type awsOutput:
# Fake AWS Credential
AWS_ACCESS_KEY_ID=AKIAF3A8D9C1B4E6
AWS_SECRET_ACCESS_KEY=s3SU0MhafXuK6wFTZakFx2AIty...
FLARE_ID=1767248654:3ea23854f39bf000a29d0f34eaf5679f...
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Your Production Application β
β β
β Environment Variables: β
β ββ DATABASE_URL=postgresql://real... β Real (used) β
β ββ AWS_KEY=AKIA_real... β Real (used) β
β ββ BACKUP_AWS_KEY=AKIA_fake... β Fake (trap!) β
β ββ LEGACY_DB=postgresql://fake... β Fake (trap!) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
β Attacker breaks in
βΌ
ββββββββββββββββββββ
β Attacker steals β
β ALL credentials β
ββββββββββββββββββββ
β
β Tests credentials
βΌ
ββββββββββββββββββββ
β Tests fake AWS β
β key or DB conn β
ββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββ
β π¨ INSTANT ALERT β
β Source: 203.0.113.45 β
β Credential: aws_access_key β
β Action: iam:GetUser β
β Status: BREACH CONFIRMED β
βββββββββββββββββββββββββββββββββ
Key insight: Legitimate code never touches honey-credentials, so ANY usage = confirmed breach.
- β Zero false positives - Only alerts when credentials are actually used
- β Instant detection - Alerts in seconds, not days
- β Ground truth - No guessing if breach occurred
- β SIEM integration - Splunk, Elasticsearch, PagerDuty support
- β Severity triage - LOW/HIGH/CRITICAL classification
- β CI/CD ready - GitHub Actions, GitLab CI, Jenkins examples
- β Kubernetes native - Helm charts and manifests included
- β Docker support - One-command deployment
- β Zero dependencies - Pure Python, no external services
- β Automatic rotation - Fresh credentials every deployment
| Document | Description |
|---|---|
| QUICKSTART.md | Get running in 5 minutes |
| USE_CASES.md | Real-world deployment scenarios |
| docs/DEPLOYMENT.md | Production deployment guide |
| docs/CONTRIBUTING.md | How to contribute |
# Inject honey-credentials during deployment
env:
- name: DATABASE_URL
value: postgresql://real_user:pass@db:5432/prod
- name: BACKUP_DB_READONLY # β Honey-credential
value: postgresql://fake_user:trap@db:5432/analyticsResult: When attacker compromises pod and tests credentials β instant alert.
# .github/workflows/deploy.yml
- name: Instrument with honey-credentials
run: |
signal-flare generate --type aws >> .env.production
docker build --env-file .env.production .Result: Every deployment gets fresh honey-credentials automatically.
# Honey-credential sits unused in environment
BACKUP_AWS_KEY = os.environ['BACKUP_AWS_ACCESS_KEY_ID']
# Real work uses IAM role (secure)
s3 = boto3.client('s3') # Uses IAM, not env varsResult: If Lambda code is exfiltrated and attacker tests credentials β alert.
π See full deployment guide in USE_CASES.md
Step 1: Attacker breaks in
Step 2: Steals credentials
Step 3: Uses them for weeks/months β UNDETECTED
Step 4: Data exfiltrated
Step 5: Finally discovered (average: 277 days)
Step 1: Attacker breaks in
Step 2: Steals credentials
Step 3: Tests them
ββ π¨ ALERT (within seconds)
Step 4: Security team responds immediately
Mean Time to Detect: 277 days β 5 seconds
pip install signal-flaredocker-compose up -dgit clone https://github.com/logesh-GIT001/signal-flare.git
cd signal-flare/cli
pip install -e .| Variable | Description | Required | Default |
|---|---|---|---|
FLARE_SECRET |
HMAC signing key | Yes | - |
FLARE_LISTENER |
Listener URL | No | http://localhost:8080 |
FLARE_TTL_HOURS |
Credential lifetime | No | 24 |
SIEM_WEBHOOK |
SIEM integration URL | No | - |
# Generate once, store securely (e.g., Vault, AWS Secrets Manager)
openssl rand -hex 32export FLARE_SECRET=$(openssl rand -hex 32)
docker-compose up -dsignal-flare generate --type aws
# Copy the FLARE_ID from outputcurl -X POST http://localhost:8080/flare \
-H "Content-Type: application/json" \
-d '{"flare_id":"PASTE_FLARE_ID","credential_type":"aws_access_key","action_attempted":"iam:ListUsers"}'docker-compose logs listenerExpected Output:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π¨ BREACH ALERT - HIGH β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ£
β Event: BREACH CONFIRMED β
β Timestamp: 2026-01-01 14:23:45 UTC β
β Source IP: 127.0.0.1 β
β Cred Type: aws_access_key β
β Action: iam:ListUsers β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Component | Status | Description |
|---|---|---|
| CLI Tool | β Complete | Generate honey-credentials |
| Listener Service | β Complete | Receive & validate alerts |
| Docker Support | β Complete | Containerized deployment |
| Documentation | β Complete | Full guides & examples |
| SIEM Integration | π§ Examples | Splunk, ELK, PagerDuty |
| Kubernetes | π§ In Progress | Helm charts coming soon |
We welcome contributions! See CONTRIBUTING.md for:
- Code style guidelines
- Development setup
- Pull request process
Quick start:
git clone https://github.com/logesh-GIT001/signal-flare.git
cd signal-flare
python -m venv venv
source venv/bin/activate
pip install -e cli/- Mean Time to Detect: < 5 seconds
- False Positive Rate: 0%
- Detection Coverage: 100% of credential theft
- Average breach cost: $4.45M (IBM Security 2023)
- Average dwell time: 277 days (without detection)
- SIGNAL-FLARE cost: $0 (open source) + minimal hosting
- ROI: Prevents even ONE breach = millions saved
DO NOT create public issues for security vulnerabilities.
Email: [Add your security email]
We'll respond within 48 hours and work with you on a fix.
- β HMAC-SHA256 signature validation
- β Time-bound credentials (TTL enforcement)
- β Non-root container execution
- β Read-only root filesystem support
- β Network policy templates for zero-trust
MIT License - see LICENSE file for details.
Inspired by:
- Canarytokens by Thinkst
- AWS GuardDuty's credential misuse detection
- The deception technology research community
- Documentation: Full docs
- Issues: GitHub Issues
- Discussions: GitHub Discussions
β Star this repo if you find it useful!
Built with β by security engineers, for security engineers.
Get Started β’ Use Cases β’ Contribute