recognizing-deception
Skill11 starsChanged 3 months agoApache-2.0View on GitHub
Spot defensive deception during an authorized engagement before you trigger it — canarytokens (HTTP/DNS/AWS-key/document/Slack/kubeconfig), Active Directory honey accounts and Kerberoast bait, decoy files, and honeypots — using provenance discipline and telltale patterns so a planted tripwire does not burn the operation. Use before acting on found credentials, roasting an SPN, or opening a too-convenient file. Unattributable access is a trap until proven otherwise; if you cannot say where it came from, do not use it.
- Reads credentials
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 3 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 26
Before acting on found credentials, keys, or tokens of uncertain origin
- Distinctive: line 27
Before Kerberoasting or AS-REP roasting an account that looks conveniently exposed
- Distinctive: line 28
Before opening an enticingly-named file or browsing a suspiciously discoverable share
- Very specific: line 29
Before using an AWS/Slack/kube credential discovered in a repo or on a host
- Very specific: line 63
Verify passively where possible: Check logon history and account age in data you already hold, compare naming against known-good objects, …
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Recognizing Deception
Modern defenders plant tripwires whose only purpose is to fire when an intruder touches them: a credential that has no legitimate use, an account that never logs on, a document that phones home when opened. Because they have zero legitimate use, any interaction is a definitive, high-fidelity compromise alert — which makes them the cheapest way for a blue team to catch a red team. Recognizing them is an OPSEC skill: the goal is not to disarm the defense but to avoid stepping on it and burning the engagement. The core instinct is provenance. Access you cannot attribute to a specific step you took is a trap until proven otherwise.
This skill is advisory judgement layered over other work — it does not add target
interaction beyond what you are already authorized to do. It pairs tightly with
credential provenance in maintaining-engagement-state: log where every
credential and access came from, so "I don't know where this came from" becomes a
visible stop signal rather than a shrug.
When to Use
- Before acting on found credentials, keys, or tokens of uncertain origin
- Before Kerberoasting or AS-REP roasting an account that looks conveniently exposed
- Before opening an enticingly-named file or browsing a suspiciously discoverable share
- Before using an AWS/Slack/kube credential discovered in a repo or on a host
- Any time access appears without a step you can point to that produced it
When NOT to Use
- Deploying deception as the defender — that is the inverse discipline and is out of scope here
- Recording where a credential came from — use
maintaining-engagement-state; this skill decides whether to trust it, that one stores the provenance - The active AD attack itself — use
attacking-active-directory; consult this skill before you pull the trigger - Password attacks on a hash you already hold — use
cracking-passwords; check the account is not bait first - Cloud credential abuse — use
exploiting-cloud-platforms; validate the key is not a canary first
Telltale Patterns
Defenders bait with things that look valuable and discoverable. Treat these as deception until disproven:
| Bait | Recognition signal |
| AD honey account | lastLogon/lastLogonTimestamp null or ancient; enabled but never used; a fake SPN making it look Kerberoastable; minimal group membership; description like "do not use"; a SACL audit rule on the object |
| Canary credential (AWS/Slack/kube/Azure cert) | Valid format but tied to no real identity; sitting in ~/.aws/credentials, a repo .env, /root/.kube/config; never appears in prior legitimate API/auth logs |
| Decoy document | Juicy name (Salary-2026, Layoffs-DRAFT, passwords) in a share where it is unused; opens fine but is oddly isolated; unusual ACLs making it conveniently readable |
| HTTP/DNS token | A URL or hostname referenced in comments, bookmarks, /etc/hosts with no operational use; an unusual subdomain in an otherwise consistent namespace |
| Honeypot host | Services too open, too clean, or inconsistent with the environment; a machine that answers everything and contains nothing real |
Heuristics that cut across all of them: access is too easy for its apparent value; the credential/account/file has no legitimate usage history; naming or placement is a shade off the environment's real conventions; and you cannot name the step that produced the access.
What To Do When You Suspect Bait
- Stop before the trigger. For canary keys,
sts:GetCallerIdentity,auth.test, or akubectl get podsis the fire event — do not run it to "just check." For a honey account, the Kerberos request is the alert. - Verify passively where possible. Check logon history and account age in
data you already hold, compare naming against known-good objects, and confirm
provenance in
maintaining-engagement-statebefore acting. - If you tripped one, say so immediately. Tell the operator at once — a fired canary means the blue team likely knows you are there, which changes the engagement and any stealth objective. Concealing it corrupts the results.
Rationalizations to Reject
- "Free domain admin creds — jackpot." Unearned, unattributable high-value access is the single most common bait. Verify provenance before you touch it.
- "I'll just validate the key quickly." The validation call is the trigger. There is no free check on a canary.
- "An SPN means Kerberoast it." A never-logged-on account with a lone SPN and a SACL is honeyuser bait; roasting it is a high-fidelity alert.
- "The file opened fine, so it's real." Document tokens open fine — that is the design; the callback already fired.
- "I probably didn't trigger anything." If you cannot say you didn't, assume you did and tell the operator.
Deliverable
# Deception Check <DEC-###> Date: <UTC> Operator: <name>
Item: <credential / account / file / host>
Provenance: <exact step that produced it — or "unknown">
Signals: <which telltale patterns matched>
Assessment: likely-bait / likely-real / undetermined Confidence: <>
Action: <avoided / verified-then-used / TRIGGERED — escalated at UTC>Log the item and its provenance in maintaining-engagement-state; a triggered
tripwire is escalated to the operator immediately, not buried in the report.
References
maintaining-engagement-state— credential provenance; the backbone of this disciplineattacking-active-directory— consult this before roasting or using AD objectscracking-passwords— confirm the account is not a honeyuser firstexploiting-cloud-platforms— validate a cloud key is not a canary before useperforming-reconnaissance— where conveniently-discoverable bait is first met- Thinkst Canary / Canarytokens and AD honey-object practice as the deception this recognizes
Other versions1 project uses a version of this.
Word for word · 1
- EvilFreelancer/secs★ 11100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository50 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- analyzing-binariesSkill
- analyzing-malwareSkill
- analyzing-memory-imagesSkill
- analyzing-network-trafficSkill
- analyzing-phishing-emailsSkill
- attacking-active-directorySkill
- attacking-wireless-networksSkill
- auditing-code-for-vulnerabilitiesSkill
- auditing-mcp-serversSkill
- auditing-supply-chainSkill
- container-securitySkill
- cracking-passwordsSkill
- engineering-detectionsSkill
- enumerating-network-servicesSkill
- escalating-linux-privilegesSkill
- escalating-windows-privilegesSkill
- establishing-persistenceSkill
- exploiting-cloud-platformsSkill
- hardening-cloud-postureSkill
- hunting-threatsSkill
- hunting-web-backdoorsSkill
- iac-securitySkill
- investigating-aws-incidentsSkill
- investigating-azure-incidentsSkill
- investigating-gcp-incidentsSkill
- investigating-m365-entraSkill
- investigating-windows-endpointsSkill
- maintaining-engagement-stateSkill
- managing-vulnerabilitiesSkill
- mapping-attack-techniquesSkill
- orchestrating-vulnerability-researchSkill
- performing-reconnaissanceSkill
- performing-social-engineeringSkill
- producing-threat-intelligenceSkill
- reporting-security-findingsSkill
- responding-to-incidentsSkill
- reviewing-cryptographySkill
- securing-ai-systemsSkill
- testing-apisSkill
- testing-ics-ot-protocolsSkill
- testing-mobile-applicationsSkill
- testing-web-applicationsSkill
- threat-modelingSkill
- transferring-filesSkill
- triaging-security-alertsSkill
- vetting-agent-extensionsSkill
- writing-sigma-rulesSkill
- writing-yara-rulesSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

