[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71CY6GABRNDCAMF490P7MZ3":3,"skill-same:01M71CY6GABRNDCAMF490P7MZ3":88},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":61,"commitSha":62,"skillDirectory":63,"forksCount":14,"repositoryHtmlUrl":64,"repositoryHomepageUrl":6,"ownerHtmlUrl":65,"ownerBlogUrl":6,"ownerDescription":66,"updatedAt":67,"install":68,"resources":81},"01M71CY6GABRNDCAMF490P7MZ3","signatures-signing-implement-configure",null,"Ed25519 artifact signing, BLAKE2b-256 integrity verification, chain of custody, Argon2id key protection, AES-256-GCM encryption. Available to ALL agents as a core skill — not a standalone agent.","DCx7C5\u002Fai-marketplace","DCx7C5","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F42419559?v=4","01M71C01G2AZV3NTNGWAWSHJPP","DC","01M71C01GQW6G50S2BYMS7PP3E",0,"MIT","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fcrypto\u002Fsignatures\u002Fsigning\u002Fimplement\u002Fconfigure\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"configure","implement","signing","signatures signing implement configure","signatures","sonnet","integrity","pki","ed25519","read","core skill","aes","artifact","verification","encryption","Bash","memory","chain","standalone","shared","2026-11-10 10:12:30",false,"---\nname: signatures-signing-implement-configure\ndescription: Ed25519 artifact signing, BLAKE2b-256 integrity verification, chain of custody, Argon2id key protection, AES-256-GCM encryption. Available to ALL agents as a core skill — not a standalone agent.\nmodel: sonnet\nmaxTurns: 10\ntools:\n  - Read\n  - Bash\n  - Glob\n  - Grep\nskills:\n  - shared-memory\ntags:\n- crypto-pki\n- signing\n- artifact-signing\nnist_csf: []\ncapec: []\n---\n\n# Artifact Signing — Ed25519 + BLAKE2b Integrity Skill\n\n**Purpose:** Every agent in the cybersecsuite framework can sign, verify, and hash artifacts. This skill provides the crypto primitives and patterns used across all agents.\n\n---\n\n## Crypto Stack\n\n| Operation | Algorithm | Implementation |\n|---|---|---|\n| Signing | Ed25519 | `cryptography.hazmat.primitives.asymmetric.ed25519` |\n| Hashing | BLAKE2b-256 | `hashlib.blake2b(digest_size=32)` |\n| KDF | Argon2id | `memory_cost=262144, iterations=4, lanes=4, salt_length=32` |\n| Encryption | AES-256-GCM | `cryptography.hazmat.primitives.ciphers.aead.AESGCM` |\n| Key Storage | PEM + Argon2id-encrypted | `PasswordManager.encrypt_key()` |\n\n---\n\n## Usage Patterns\n\n### Compute BLAKE2b-256 Hash\n\n```python\nimport hashlib\nimport json\n\ndata = {\"key\": \"value\"}\ncontent_hash = hashlib.blake2b(\n    json.dumps(data, sort_keys=True).encode(),\n    digest_size=32\n).hexdigest()\n```\n\n### Sign an Artifact with Ed25519\n\n```python\nfrom crypto.ssl_signer import SSLArtifactSigner\n\nsigner = SSLArtifactSigner(\n    private_key_path=\"\u002Fetc\u002Fdystopian\u002Fcrypto\u002Fcert\u002Fprivate\u002Fdefault-private.key\",\n    public_key_path=\"\u002Fetc\u002Fdystopian\u002Fcrypto\u002Fcert\u002Fprivate\u002Fdefault-public.pem\",\n    key_id=\"default\",\n)\n\n# Sign — returns frontmatter.payload token\ntoken = signer.sign_artifact(\n    artifact_data={\"name\": \"evidence.json\", \"content\": data},\n    expires_in_hours=8760,  # 1 year\n    custom_claims={\"version\": 1},\n)\n\n# Verify\nis_valid, payload = signer.verify_artifact(token)\n\n# Extract frontmatter (includes embedded signature)\nmetadata = signer.get_signature_metadata(token)\n# → {\"alg\": \"Ed25519\", \"kid\": \"default\", \"sig\": \"\u003Cbase64>\", \"created_at\": \"...\"}\n```\n\n### Managed Artifact Lifecycle (with DB)\n\n```python\nfrom crypto.artifact_manager import ArtifactManager\nfrom crypto.ssl_signer import SSLArtifactSigner\n\nsigner = SSLArtifactSigner(private_key_path=\"...\", key_id=\"default\")\nmanager = ArtifactManager(signer)\n\n# Create + auto-sign\nartifact = await manager.create_artifact(\n    name=\"evidence-001\",\n    content={\"finding\": \"suspicious binary\"},\n    workspace_id=1,\n    created_by=\"hunter\",\n    reason=\"Phase 5 memory forensics\",\n)\n\n# Update + auto-re-sign\nartifact = await manager.update_artifact(\n    artifact_id=artifact.id,\n    content={\"finding\": \"confirmed rootkit\", \"ioc\": \"...\"},\n    modified_by=\"memory-analyst\",\n    reason=\"Cross-validated with kernel-analyst\",\n)\n\n# Verify\nresult = await manager.verify_artifact(artifact.id, operator=\"hunter\")\n# → {\"artifact_id\": 1, \"valid\": True, \"status\": \"valid\", \"payload\": {...}}\n```\n\n### Pydantic Model with Signature\n\n```python\nfrom crypto.pydantic_models import ArtifactWithIntegrity, Ed25519Signer\nfrom cryptography.hazmat.primitives.asymmetric import ed25519\n\n# Create with HMAC checksum + optional Ed25519 signature\nprivate_key = ed25519.Ed25519PrivateKey.generate()\nartifact = ArtifactWithIntegrity.create(\n    data={\"config\": {\"env\": \"production\"}},\n    name=\"config.yaml\",\n    created_by=\"python-developer\",\n    private_key=private_key,\n    key_id=\"deploy-key\",\n)\n\n# Verify HMAC\nassert artifact.verify_integrity()\n\n# Verify Ed25519\npublic_key = private_key.public_key()\nassert artifact.verify_signature(public_key)\n\n# Frontmatter contains embedded signature\nprint(artifact.frontmatter)\n# → {\"alg\": \"Ed25519\", \"kid\": \"deploy-key\", \"sig\": \"...\", \"signed_at\": \"...\"}\n```\n\n### Key Management (Argon2id + AES-256-GCM)\n\n```python\nfrom crypto.key_manager import KeyManager\n\nkm = KeyManager(keys_dir=\"\u002Fetc\u002Fdystopian\u002Fcrypto\u002Fcert\u002Fprivate\")\n\n# Create CA keypair (Ed25519, password-protected)\nmetadata = km.create_ca_keypair(\n    name=\"RootCA\",\n    password_file=\"\u002Fetc\u002Fdystopian-crypto\u002Fpassword\",\n)\n\n# Load private key (decrypts with Argon2id + AES-256-GCM)\nprivate_key = km.load_private_key(\"RootCA\", password_file=\"\u002Fetc\u002Fdystopian-crypto\u002Fpassword\")\n\n# Rotate key\nnew_metadata = km.rotate_key(\"RootCA\", password_file=\"\u002Fetc\u002Fdystopian-crypto\u002Fpassword\")\n\n# Verify integrity (file exists + permissions = 0o600)\nis_valid, msg = km.verify_key_integrity(\"RootCA\")\n```\n\n---\n\n## Token Format\n\nSigned tokens use **frontmatter.payload** format (2 parts, dot-separated):\n\n```\n\u003Cbase64(frontmatter_json)>.\u003Cbase64(payload_json)>\n```\n\n### Frontmatter (header with embedded signature)\n```json\n{\n  \"alg\": \"Ed25519\",\n  \"typ\": \"ARTIFACT\",\n  \"kid\": \"default\",\n  \"created_at\": \"2026-04-17T00:00:00+00:00\",\n  \"sig\": \"\u003Cbase64 Ed25519 signature of payload>\"\n}\n```\n\n### Payload\n```json\n{\n  \"data\": {\"...artifact content...\"},\n  \"body_hash\": \"\u003CBLAKE2b-256 hex>\",\n  \"exp\": \"2027-04-17T00:00:00+00:00\",\n  \"iat\": \"2026-04-17T00:00:00+00:00\"\n}\n```\n\n---\n\n## Rules for All Agents\n\n1. **Every collected evidence artifact** MUST have a BLAKE2b-256 hash computed before storage\n2. **Every artifact submitted to the DB** MUST be signed with Ed25519 via `ArtifactManager`\n3. **Every signing operation** is logged to `ArtifactSignatureLog` (audit trail)\n4. **Never hardcode passwords** — always use password files + `PasswordManager`\n5. **Key file permissions** must be `0o600` for private keys, `0o644` for public keys\n6. **Chain of custody**: every artifact records `created_by`, `modified_by`, `change_reason`\n7. **Verification**: call `verify_artifact()` before acting on any artifact from external sources\n\n---\n\n## MITRE ATT&CK Mapping\n\n| Finding | Technique |\n|---|---|\n| Unsigned artifact in evidence chain | T1565 – Data Manipulation |\n| Key file with wrong permissions | T1552.004 – Private Keys |\n| Missing audit log entry | T1070 – Indicator Removal |\n| Tampered artifact (hash mismatch) | T1565.001 – Stored Data Manipulation |\n\n","# Artifact Signing — Ed25519 + BLAKE2b Integrity Skill\n\n**Purpose:** Every agent in the cybersecsuite framework can sign, verify, and hash artifacts. This skill provides the crypto primitives and patterns used across all agents.\n\n---\n\n## Crypto Stack\n\n| Operation | Algorithm | Implementation |\n|---|---|---|\n| Signing | Ed25519 | `cryptography.hazmat.primitives.asymmetric.ed25519` |\n| Hashing | BLAKE2b-256 | `hashlib.blake2b(digest_size=32)` |\n| KDF | Argon2id | `memory_cost=262144, iterations=4, lanes=4, salt_length=32` |\n| Encryption | AES-256-GCM | `cryptography.hazmat.primitives.ciphers.aead.AESGCM` |\n| Key Storage | PEM + Argon2id-encrypted | `PasswordManager.encrypt_key()` |\n\n---\n\n## Usage Patterns\n\n### Compute BLAKE2b-256 Hash\n\n```python\nimport hashlib\nimport json\n\ndata = {\"key\": \"value\"}\ncontent_hash = hashlib.blake2b(\n    json.dumps(data, sort_keys=True).encode(),\n    digest_size=32\n).hexdigest()\n```\n\n### Sign an Artifact with Ed25519\n\n```python\nfrom crypto.ssl_signer import SSLArtifactSigner\n\nsigner = SSLArtifactSigner(\n    private_key_path=\"\u002Fetc\u002Fdystopian\u002Fcrypto\u002Fcert\u002Fprivate\u002Fdefault-private.key\",\n    public_key_path=\"\u002Fetc\u002Fdystopian\u002Fcrypto\u002Fcert\u002Fprivate\u002Fdefault-public.pem\",\n    key_id=\"default\",\n)\n\n# Sign — returns frontmatter.payload token\ntoken = signer.sign_artifact(\n    artifact_data={\"name\": \"evidence.json\", \"content\": data},\n    expires_in_hours=8760,  # 1 year\n    custom_claims={\"version\": 1},\n)\n\n# Verify\nis_valid, payload = signer.verify_artifact(token)\n\n# Extract frontmatter (includes embedded signature)\nmetadata = signer.get_signature_metadata(token)\n# → {\"alg\": \"Ed25519\", \"kid\": \"default\", \"sig\": \"\u003Cbase64>\", \"created_at\": \"...\"}\n```\n\n### Managed Artifact Lifecycle (with DB)\n\n```python\nfrom crypto.artifact_manager import ArtifactManager\nfrom crypto.ssl_signer import SSLArtifactSigner\n\nsigner = SSLArtifactSigner(private_key_path=\"...\", key_id=\"default\")\nmanager = ArtifactManager(signer)\n\n# Create + auto-sign\nartifact = await manager.create_artifact(\n    name=\"evidence-001\",\n    content={\"finding\": \"suspicious binary\"},\n    workspace_id=1,\n    created_by=\"hunter\",\n    reason=\"Phase 5 memory forensics\",\n)\n\n# Update + auto-re-sign\nartifact = await manager.update_artifact(\n    artifact_id=artifact.id,\n    content={\"finding\": \"confirmed rootkit\", \"ioc\": \"...\"},\n    modified_by=\"memory-analyst\",\n    reason=\"Cross-validated with kernel-analyst\",\n)\n\n# Verify\nresult = await manager.verify_artifact(artifact.id, operator=\"hunter\")\n# → {\"artifact_id\": 1, \"valid\": True, \"status\": \"valid\", \"payload\": {...}}\n```\n\n### Pydantic Model with Signature\n\n```python\nfrom crypto.pydantic_models import ArtifactWithIntegrity, Ed25519Signer\nfrom cryptography.hazmat.primitives.asymmetric import ed25519\n\n# Create with HMAC checksum + optional Ed25519 signature\nprivate_key = ed25519.Ed25519PrivateKey.generate()\nartifact = ArtifactWithIntegrity.create(\n    data={\"config\": {\"env\": \"production\"}},\n    name=\"config.yaml\",\n    created_by=\"python-developer\",\n    private_key=private_key,\n    key_id=\"deploy-key\",\n)\n\n# Verify HMAC\nassert artifact.verify_integrity()\n\n# Verify Ed25519\npublic_key = private_key.public_key()\nassert artifact.verify_signature(public_key)\n\n# Frontmatter contains embedded signature\nprint(artifact.frontmatter)\n# → {\"alg\": \"Ed25519\", \"kid\": \"deploy-key\", \"sig\": \"...\", \"signed_at\": \"...\"}\n```\n\n### Key Management (Argon2id + AES-256-GCM)\n\n```python\nfrom crypto.key_manager import KeyManager\n\nkm = KeyManager(keys_dir=\"\u002Fetc\u002Fdystopian\u002Fcrypto\u002Fcert\u002Fprivate\")\n\n# Create CA keypair (Ed25519, password-protected)\nmetadata = km.create_ca_keypair(\n    name=\"RootCA\",\n    password_file=\"\u002Fetc\u002Fdystopian-crypto\u002Fpassword\",\n)\n\n# Load private key (decrypts with Argon2id + AES-256-GCM)\nprivate_key = km.load_private_key(\"RootCA\", password_file=\"\u002Fetc\u002Fdystopian-crypto\u002Fpassword\")\n\n# Rotate key\nnew_metadata = km.rotate_key(\"RootCA\", password_file=\"\u002Fetc\u002Fdystopian-crypto\u002Fpassword\")\n\n# Verify integrity (file exists + permissions = 0o600)\nis_valid, msg = km.verify_key_integrity(\"RootCA\")\n```\n\n---\n\n## Token Format\n\nSigned tokens use **frontmatter.payload** format (2 parts, dot-separated):\n\n```\n\u003Cbase64(frontmatter_json)>.\u003Cbase64(payload_json)>\n```\n\n### Frontmatter (header with embedded signature)\n```json\n{\n  \"alg\": \"Ed25519\",\n  \"typ\": \"ARTIFACT\",\n  \"kid\": \"default\",\n  \"created_at\": \"2026-04-17T00:00:00+00:00\",\n  \"sig\": \"\u003Cbase64 Ed25519 signature of payload>\"\n}\n```\n\n### Payload\n```json\n{\n  \"data\": {\"...artifact content...\"},\n  \"body_hash\": \"\u003CBLAKE2b-256 hex>\",\n  \"exp\": \"2027-04-17T00:00:00+00:00\",\n  \"iat\": \"2026-04-17T00:00:00+00:00\"\n}\n```\n\n---\n\n## Rules for All Agents\n\n1. **Every collected evidence artifact** MUST have a BLAKE2b-256 hash computed before storage\n2. **Every artifact submitted to the DB** MUST be signed with Ed25519 via `ArtifactManager`\n3. **Every signing operation** is logged to `ArtifactSignatureLog` (audit trail)\n4. **Never hardcode passwords** — always use password files + `PasswordManager`\n5. **Key file permissions** must be `0o600` for private keys, `0o644` for public keys\n6. **Chain of custody**: every artifact records `created_by`, `modified_by`, `change_reason`\n7. **Verification**: call `verify_artifact()` before acting on any artifact from external sources\n\n---\n\n## MITRE ATT&CK Mapping\n\n| Finding | Technique |\n|---|---|\n| Unsigned artifact in evidence chain | T1565 – Data Manipulation |\n| Key file with wrong permissions | T1552.004 – Private Keys |\n| Missing audit log entry | T1070 – Indicator Removal |\n| Tampered artifact (hash mismatch) | T1565.001 – Stored Data Manipulation |\n\n",{"name":5,"tags":49,"capec":52,"model":29,"tools":53,"skills":57,"maxTurns":59,"nist_csf":60,"description":7},[50,26,51],"crypto-pki","artifact-signing",[],[54,39,55,56],"Read","Glob","Grep",[58],"shared-memory",10,[],"main","a91f1293287ffa9f4f1b8f486cd6e835a1568c84","skills\u002Fcrypto\u002Fsignatures\u002Fsigning\u002Fimplement\u002Fconfigure","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace","https:\u002F\u002Fgithub.com\u002FDCx7C5","#Python","2026-09-01 11:21:00",{"source":8,"skillName":5,"commands":69,"prompt":79,"zipAvailable":80},[70,73,76],{"tool":71,"command":72},"npx","npx skills add DCx7C5\u002Fai-marketplace --skill signatures-signing-implement-configure",{"tool":74,"command":75},"bunx","bunx skills add DCx7C5\u002Fai-marketplace --skill signatures-signing-implement-configure",{"tool":77,"command":78},"pnpm","pnpm dlx skills add DCx7C5\u002Fai-marketplace --skill signatures-signing-implement-configure","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fcrypto\u002Fsignatures\u002Fsigning\u002Fimplement\u002Fconfigure\u002FSKILL.md",true,[82],{"path":83,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":87},"index.json","REFERENCE","参考文档",726,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fcrypto\u002Fsignatures\u002Fsigning\u002Fimplement\u002Fconfigure\u002Findex.json",[89,115,136,156,178,193],{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":44},"01M71HAPZ01KQ30RKTB0FFSQ05","services-wmi-persistence-detect","Detect WMI event subscription persistence by enumerating ActiveScriptEventConsumer, CommandLineEventConsumer, and permanent subscriptions in the WMI repository.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fservices\u002Fwmi\u002Fpersistence\u002Fdetect\u002FSKILL.md",[],[96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114],"services","detect","services wmi persistence detect","wmi","persistence","de","cm","process","activescript","event","subscriptions","commandline-consumer","repository","subscription","event-subscription","t1546.003","forensics","cybersecurity","process-forensics",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":44},"01M71HAK6JTTTS229T17WJMMCG","services-wmi-exec-exploit","Perform lateral movement across Windows networks using WMI-based remote execution techniques including Impacket wmiexec.py, CrackMapExec, and native WMI commands for stealthy post-exploitation during red team engagements.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fservices\u002Fwmi\u002Fexec\u002Fexploit\u002FSKILL.md",[],[122,96,123,99,124,125,126,113,39,127,128,129,130,131,101,132,133,33,134,135],"exploit","services wmi exec exploit","exec","remote","traffic","analysis","team","across","crackmapexec","native","command","lateral movement","lateral-movement","Impacket",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":44},"01M71HAG6MHKNQV8KDZKMT4886","registry-artifact-extract","Extract and analyze Windows Registry hives to uncover user activity, installed software, autostart entries, and evidence of system compromise.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fregistry\u002Fartifact\u002Fextract\u002FSKILL.md",[],[36,143,144,145,146,147,113,39,148,127,149,150,101,33,151,152,153,154,155,29],"registry","registry artifact extract","extract","evidence-collection","artifact-analysis","collection","analyze","uncover","software","activity","digital-forensics","windows-registry","regripper",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":162,"publishedAt":44},"01M71HACR4A8XTWTTSXK4124AA","processes-token-impersonate-detect","Detect Windows token impersonation and privilege abuse including SeImpersonatePrivilege exploitation via Potato attacks and token stealing techniques.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fprocesses\u002Ftoken\u002Fimpersonate\u002Fdetect\u002FSKILL.md",[],[97,163,164,165,166,167,168,102,169,113,114,170,171,172,173,174,175,176,177,101],"processes token impersonate detect","token","processes","attacks","windows","escalation","techniques","privilege-escalation","seimpersonate","token-impersonation","printspoofer","exploitation","potato","impersonation","via",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":184,"publishedAt":44},"01M71HAABSB4Z6QFSXEG00R4RK","processes-thread-injection-detect","Detect Windows thread injection techniques including CreateRemoteThread, QueueUserAPC, NtCreateThreadEx, and thread hijacking via process memory analysis.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fprocesses\u002Fthread\u002Finjection\u002Fdetect\u002FSKILL.md",[],[185,186,97,187,165,167,40,102,188,169,113,114,127,189,190,191,192,177,101,103],"thread","processes thread injection detect","injection","process-injection","api","apc-injection","thread-injection","nt-api",{"skillNo":194,"name":195,"nameZh":6,"description":196,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":197,"categories":198,"keywords":199,"publishedAt":44},"01M71HA7H311V5G14WMX58HQSS","processes-hollow-technique-detect","Detect process hollowing (RunPE) by identifying processes with mismatched image paths between PEB and VAD tree, or unmapped PE headers in memory.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fprocesses\u002Fhollow\u002Ftechnique\u002Fdetect\u002FSKILL.md",[],[200,97,165,201,40,102,202,203,113,114,204,205,206,207,208,209,101,103,210,211],"processes hollow technique detect","tree","memory-forensics","process-hollow","peb","runpe","image","pe-header","in memory","with","mismatched","headers"]