[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71C63THMAAA26MBN3PXB87Q":3,"skill-same:01M71C63THMAAA26MBN3PXB87Q":58},{"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":18,"publishedAt":26,"linkOnly":27,"markdownContent":28,"markdownBody":29,"frontMatter":30,"refName":31,"commitSha":32,"skillDirectory":33,"forksCount":14,"repositoryHtmlUrl":34,"repositoryHomepageUrl":6,"ownerHtmlUrl":35,"ownerBlogUrl":6,"ownerDescription":36,"updatedAt":37,"install":38,"resources":51},"01M71C63THMAAA26MBN3PXB87Q","cloud-containers-scanning-distroless",null,"Cloud Containers Scanning Distroless.","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\u002Fcloud-containers-scanning-distroless\u002FSKILL.md",[],[19,20,21,22,23,24,25],"containers","cloud","distroless","scanning","cloud containers","cloud containers scanning distroless","cybersecurity","2026-11-10 10:12:30",false,"---\nname: cloud-containers-scanning-distroless\ndescription: \"Cloud Containers Scanning Distroless.\"\ndomain: cybersecurity\n---\n\n--|\n| Shell (bash\u002Fsh) | Yes | Yes | No |\n| Package manager | apt | apk | No |\n| coreutils | Full | BusyBox | No |\n| curl\u002Fwget | Yes | Yes | No |\n| User management | Yes | Yes | No |\n| Known CVEs (typical) | 50-200+ | 5-20 | 0-5 |\n| Image size (base) | ~77MB | ~7MB | ~2-20MB |\n\n### Security Implications\n\n- **No shell**: Attackers cannot exec into containers to run commands\n- **No package manager**: Cannot install additional tools or malware\n- **No coreutils**: No `cat`, `ls`, `find`, `curl` for reconnaissance\n- **Minimal CVEs**: Fewer packages means fewer vulnerabilities to patch\n- **Non-root by default**: `:nonroot` tag runs as UID 65534\n\n## Debugging Distroless Containers\n\nSince distroless has no shell, use these techniques for debugging:\n\n### Debug Image Variant\n\n```dockerfile\n# Use debug variant in non-production environments only\nFROM gcr.io\u002Fdistroless\u002Fbase-debian12:debug\n# Includes busybox shell at \u002Fbusybox\u002Fsh\n```\n\n```bash\n# Exec into debug variant\nkubectl exec -it pod-name -- \u002Fbusybox\u002Fsh\n```\n\n### Ephemeral Debug Containers (Kubernetes 1.25+)\n\n```bash\n# Attach a debug container with full tooling\nkubectl debug -it pod-name --image=busybox:1.36 --target=app-container\n```\n\n### Crane\u002FDive for Image Inspection\n\n```bash\n# Inspect image layers without running\ncrane export gcr.io\u002Fdistroless\u002Fstatic-debian12 - | tar -tf - | head -50\n\n# Analyze image layers\ndive gcr.io\u002Fdistroless\u002Fstatic-debian12\n```\n\n## Image Scanning Results\n\nTypical vulnerability comparison using Trivy:\n\n```bash\n# Scan Ubuntu-based image\ntrivy image myapp:ubuntu\n# Result: 47 vulnerabilities (3 CRITICAL, 12 HIGH)\n\n# Scan Distroless-based image\ntrivy image myapp:distroless\n# Result: 2 vulnerabilities (0 CRITICAL, 0 HIGH)\n```\n\n## References\n\n- [GoogleContainerTools\u002Fdistroless GitHub](https:\u002F\u002Fgithub.com\u002FGoogleContainerTools\u002Fdistroless)\n- [Distroless Images - Docker Documentation](https:\u002F\u002Fdocs.docker.com\u002Fdhi\u002Fcore-concepts\u002Fdistroless\u002F)\n- [Alpine, Distroless, or Scratch? - Google Cloud](https:\u002F\u002Fmedium.com\u002Fgoogle-cloud\u002Falpine-distroless-or-scratch-caac35250e0b)\n- [Docker Hardened Images](https:\u002F\u002Fwww.infoq.com\u002Fnews\u002F2025\u002F12\u002Fdocker-hardened-images\u002F)\n","--|\n| Shell (bash\u002Fsh) | Yes | Yes | No |\n| Package manager | apt | apk | No |\n| coreutils | Full | BusyBox | No |\n| curl\u002Fwget | Yes | Yes | No |\n| User management | Yes | Yes | No |\n| Known CVEs (typical) | 50-200+ | 5-20 | 0-5 |\n| Image size (base) | ~77MB | ~7MB | ~2-20MB |\n\n### Security Implications\n\n- **No shell**: Attackers cannot exec into containers to run commands\n- **No package manager**: Cannot install additional tools or malware\n- **No coreutils**: No `cat`, `ls`, `find`, `curl` for reconnaissance\n- **Minimal CVEs**: Fewer packages means fewer vulnerabilities to patch\n- **Non-root by default**: `:nonroot` tag runs as UID 65534\n\n## Debugging Distroless Containers\n\nSince distroless has no shell, use these techniques for debugging:\n\n### Debug Image Variant\n\n```dockerfile\n# Use debug variant in non-production environments only\nFROM gcr.io\u002Fdistroless\u002Fbase-debian12:debug\n# Includes busybox shell at \u002Fbusybox\u002Fsh\n```\n\n```bash\n# Exec into debug variant\nkubectl exec -it pod-name -- \u002Fbusybox\u002Fsh\n```\n\n### Ephemeral Debug Containers (Kubernetes 1.25+)\n\n```bash\n# Attach a debug container with full tooling\nkubectl debug -it pod-name --image=busybox:1.36 --target=app-container\n```\n\n### Crane\u002FDive for Image Inspection\n\n```bash\n# Inspect image layers without running\ncrane export gcr.io\u002Fdistroless\u002Fstatic-debian12 - | tar -tf - | head -50\n\n# Analyze image layers\ndive gcr.io\u002Fdistroless\u002Fstatic-debian12\n```\n\n## Image Scanning Results\n\nTypical vulnerability comparison using Trivy:\n\n```bash\n# Scan Ubuntu-based image\ntrivy image myapp:ubuntu\n# Result: 47 vulnerabilities (3 CRITICAL, 12 HIGH)\n\n# Scan Distroless-based image\ntrivy image myapp:distroless\n# Result: 2 vulnerabilities (0 CRITICAL, 0 HIGH)\n```\n\n## References\n\n- [GoogleContainerTools\u002Fdistroless GitHub](https:\u002F\u002Fgithub.com\u002FGoogleContainerTools\u002Fdistroless)\n- [Distroless Images - Docker Documentation](https:\u002F\u002Fdocs.docker.com\u002Fdhi\u002Fcore-concepts\u002Fdistroless\u002F)\n- [Alpine, Distroless, or Scratch? - Google Cloud](https:\u002F\u002Fmedium.com\u002Fgoogle-cloud\u002Falpine-distroless-or-scratch-caac35250e0b)\n- [Docker Hardened Images](https:\u002F\u002Fwww.infoq.com\u002Fnews\u002F2025\u002F12\u002Fdocker-hardened-images\u002F)\n",{"name":5,"domain":25,"description":7},"main","a91f1293287ffa9f4f1b8f486cd6e835a1568c84","skills\u002Fcloud-containers-scanning-distroless","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace","https:\u002F\u002Fgithub.com\u002FDCx7C5","#Python","2026-09-01 11:21:00",{"source":8,"skillName":5,"commands":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add DCx7C5\u002Fai-marketplace --skill cloud-containers-scanning-distroless",{"tool":44,"command":45},"bunx","bunx skills add DCx7C5\u002Fai-marketplace --skill cloud-containers-scanning-distroless",{"tool":47,"command":48},"pnpm","pnpm dlx skills add DCx7C5\u002Fai-marketplace --skill cloud-containers-scanning-distroless","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fcloud-containers-scanning-distroless\u002FSKILL.md",true,[52],{"path":53,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":56,"sourceHtmlUrl":57},"index.json","REFERENCE","参考文档",544,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fcloud-containers-scanning-distroless\u002Findex.json",[59,84,107,129,151,167],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":26},"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",[],[66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,25,83],"services","detect","services wmi persistence detect","wmi","persistence","de","cm","process","activescript","event","subscriptions","commandline-consumer","repository","subscription","event-subscription","t1546.003","forensics","process-forensics",{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":26},"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",[],[91,66,92,69,93,94,95,25,96,97,98,99,100,101,71,102,103,104,105,106],"exploit","services wmi exec exploit","exec","remote","traffic","Bash","analysis","team","across","crackmapexec","native","command","lateral movement","read","lateral-movement","Impacket",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":26},"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",[],[114,115,116,117,118,119,25,96,120,97,121,122,71,104,123,124,125,126,127,128],"artifact","registry","registry artifact extract","extract","evidence-collection","artifact-analysis","collection","analyze","uncover","software","activity","digital-forensics","windows-registry","regripper","sonnet",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":26},"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",[],[67,136,137,138,139,140,141,72,142,25,83,143,144,145,146,147,148,149,150,71],"processes token impersonate detect","token","processes","attacks","windows","escalation","techniques","privilege-escalation","seimpersonate","token-impersonation","printspoofer","exploitation","potato","impersonation","via",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":26},"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",[],[158,159,67,160,138,140,161,72,162,142,25,83,97,163,164,165,166,150,71,73],"thread","processes thread injection detect","injection","memory","process-injection","api","apc-injection","thread-injection","nt-api",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":173,"publishedAt":26},"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",[],[174,67,138,175,161,72,176,177,25,83,178,179,180,181,182,183,71,73,184,185],"processes hollow technique detect","tree","memory-forensics","process-hollow","peb","runpe","image","pe-header","in memory","with","mismatched","headers"]