[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71FC9FET4DRFVPFNF470HR1":3,"skill-same:01M71FC9FET4DRFVPFNF470HR1":59},{"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":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":14,"repositoryHtmlUrl":35,"repositoryHomepageUrl":6,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":37,"updatedAt":38,"install":39,"resources":52},"01M71FC9FET4DRFVPFNF470HR1","net-capture-zeek-dnstunnel",null,"-| | T1071.004 | Application Layer Protocol: DNS | | T1048.","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\u002Fnet-capture-zeek-dnstunnel\u002FSKILL.md",[],[19,20,21,22,23,24,25,26],"Zeek","capture","net capture zeek dnstunnel","cybersecurity","protocol","dns","application","layer","2026-11-10 10:12:30",false,"---\nname: net-capture-zeek-dnstunnel\ndescription: \"-| | T1071.004 | Application Layer Protocol: DNS | | T1048.\"\ndomain: cybersecurity\n---\n\n-|\n| T1071.004 | Application Layer Protocol: DNS |\n| T1048.003 | Exfiltration Over Alternative Protocol: DNS |\n| T1572 | Protocol Tunneling |\n| Shannon Entropy | Measure of randomness in subdomain strings |\n| Zeek dns.log | DNS query\u002Fresponse metadata |\n| RITA | Automated DNS tunneling detection from Zeek logs |\n| iodine | IPv4-over-DNS tunneling tool |\n| dnscat2 | DNS-based command-and-control tool |\n| DNSExfiltrator | Data exfiltration tool using DNS requests |\n\n## Detection Queries\n\n### Zeek Script -- DNS Tunnel Detection\n```zeek\n@load base\u002Fprotocols\u002Fdns\nmodule DNSTunnel;\n\nexport {\n    redef enum Notice::Type += { DNSTunnel::Long_DNS_Query };\n    const query_length_threshold = 50 &redef;\n    const query_count_threshold = 100 &redef;\n}\n\nevent dns_request(c: connection, msg: dns_msg, query: string, qtype: count, qclass: count) {\n    if ( |query| > query_length_threshold ) {\n        NOTICE([$note=DNSTunnel::Long_DNS_Query,\n                $msg=fmt(\"Long DNS query detected: %s (%d chars)\", query, |query|),\n                $conn=c]);\n    }\n}\n```\n\n### Splunk -- DNS Tunneling Indicators from Zeek\n```spl\nindex=zeek sourcetype=bro_dns\n| rex field=query \"(?\u003Csubdomain>[^.]+)\\.(?\u003Cbasedomain>[^.]+\\.[^.]+)$\"\n| stats count dc(subdomain) as unique_subs avg(len(query)) as avg_len max(len(query)) as max_len by src basedomain\n| where count > 100 AND (unique_subs > 50 OR avg_len > 40)\n| sort -unique_subs\n```\n\n### Splunk -- High Entropy Subdomain Detection\n```spl\nindex=zeek sourcetype=bro_dns\n| rex field=query \"^(?\u003Csubdomain>[^.]+)\"\n| where len(subdomain) > 20\n| eval char_count=len(subdomain)\n| stats count dc(query) as unique_queries avg(char_count) as avg_sub_len by src query_type_name basedomain\n| where unique_queries > 30 AND avg_sub_len > 25\n| sort -unique_queries\n```\n\n### RITA Analysis\n```bash\nrita import \u002Fpath\u002Fto\u002Fzeek\u002Flogs dataset_name\nrita show-dns-fqdn-ips-long dataset_name\nrita show-exploded-dns dataset_name\nrita show-dns-tunneling dataset_name --csv > dns_tunnel_results.csv\n```\n\n## Common Scenarios\n\n1. **dnscat2 C2**: Encodes command-and-control traffic in DNS CNAME\u002FTXT queries with Base64-encoded subdomain labels. Produces high query volumes with long, high-entropy subdomains.\n2. **iodine IPv4 Tunnel**: Creates a virtual network interface tunneling all IP traffic through DNS. Generates massive DNS query volumes with NULL record types.\n3. **Data Exfiltration via DNS**: Sensitive data encoded in subdomain labels (e.g., `aGVsbG8gd29ybGQ.exfil.attacker.com`), sent as A or TXT queries. Each query carries ~63 bytes of data.\n4. **DNS-over-HTTPS Tunneling**: Bypasses traditional DNS monitoring by sending DNS queries over HTTPS to public resolvers (8.8.8.8, 1.1.1.1), requiring TLS inspection for detection.\n5. **Cobalt Strike DNS Beacon**: Uses DNS A\u002FTXT records for C2 communication with configurable subdomain encoding schemes.\n\n## Output Format\n\n```\nHunt ID: TH-DNSTUNNEL-[DATE]-[SEQ]\nSource IP: [Internal IP]\nSource Host: [Hostname]\nTarget Domain: [Base domain]\nQuery Count: [Total queries in window]\nUnique Subdomains: [Count]\nAvg Query Length: [Characters]\nMax Query Length: [Characters]\nSubdomain Entropy: [Bits per character]\nPrimary Record Type: [A\u002FTXT\u002FCNAME\u002FNULL]\nData Volume Estimate: [Bytes exfiltrated]\nRisk Level: [Critical\u002FHigh\u002FMedium\u002FLow]\n```\n","-|\n| T1071.004 | Application Layer Protocol: DNS |\n| T1048.003 | Exfiltration Over Alternative Protocol: DNS |\n| T1572 | Protocol Tunneling |\n| Shannon Entropy | Measure of randomness in subdomain strings |\n| Zeek dns.log | DNS query\u002Fresponse metadata |\n| RITA | Automated DNS tunneling detection from Zeek logs |\n| iodine | IPv4-over-DNS tunneling tool |\n| dnscat2 | DNS-based command-and-control tool |\n| DNSExfiltrator | Data exfiltration tool using DNS requests |\n\n## Detection Queries\n\n### Zeek Script -- DNS Tunnel Detection\n```zeek\n@load base\u002Fprotocols\u002Fdns\nmodule DNSTunnel;\n\nexport {\n    redef enum Notice::Type += { DNSTunnel::Long_DNS_Query };\n    const query_length_threshold = 50 &redef;\n    const query_count_threshold = 100 &redef;\n}\n\nevent dns_request(c: connection, msg: dns_msg, query: string, qtype: count, qclass: count) {\n    if ( |query| > query_length_threshold ) {\n        NOTICE([$note=DNSTunnel::Long_DNS_Query,\n                $msg=fmt(\"Long DNS query detected: %s (%d chars)\", query, |query|),\n                $conn=c]);\n    }\n}\n```\n\n### Splunk -- DNS Tunneling Indicators from Zeek\n```spl\nindex=zeek sourcetype=bro_dns\n| rex field=query \"(?\u003Csubdomain>[^.]+)\\.(?\u003Cbasedomain>[^.]+\\.[^.]+)$\"\n| stats count dc(subdomain) as unique_subs avg(len(query)) as avg_len max(len(query)) as max_len by src basedomain\n| where count > 100 AND (unique_subs > 50 OR avg_len > 40)\n| sort -unique_subs\n```\n\n### Splunk -- High Entropy Subdomain Detection\n```spl\nindex=zeek sourcetype=bro_dns\n| rex field=query \"^(?\u003Csubdomain>[^.]+)\"\n| where len(subdomain) > 20\n| eval char_count=len(subdomain)\n| stats count dc(query) as unique_queries avg(char_count) as avg_sub_len by src query_type_name basedomain\n| where unique_queries > 30 AND avg_sub_len > 25\n| sort -unique_queries\n```\n\n### RITA Analysis\n```bash\nrita import \u002Fpath\u002Fto\u002Fzeek\u002Flogs dataset_name\nrita show-dns-fqdn-ips-long dataset_name\nrita show-exploded-dns dataset_name\nrita show-dns-tunneling dataset_name --csv > dns_tunnel_results.csv\n```\n\n## Common Scenarios\n\n1. **dnscat2 C2**: Encodes command-and-control traffic in DNS CNAME\u002FTXT queries with Base64-encoded subdomain labels. Produces high query volumes with long, high-entropy subdomains.\n2. **iodine IPv4 Tunnel**: Creates a virtual network interface tunneling all IP traffic through DNS. Generates massive DNS query volumes with NULL record types.\n3. **Data Exfiltration via DNS**: Sensitive data encoded in subdomain labels (e.g., `aGVsbG8gd29ybGQ.exfil.attacker.com`), sent as A or TXT queries. Each query carries ~63 bytes of data.\n4. **DNS-over-HTTPS Tunneling**: Bypasses traditional DNS monitoring by sending DNS queries over HTTPS to public resolvers (8.8.8.8, 1.1.1.1), requiring TLS inspection for detection.\n5. **Cobalt Strike DNS Beacon**: Uses DNS A\u002FTXT records for C2 communication with configurable subdomain encoding schemes.\n\n## Output Format\n\n```\nHunt ID: TH-DNSTUNNEL-[DATE]-[SEQ]\nSource IP: [Internal IP]\nSource Host: [Hostname]\nTarget Domain: [Base domain]\nQuery Count: [Total queries in window]\nUnique Subdomains: [Count]\nAvg Query Length: [Characters]\nMax Query Length: [Characters]\nSubdomain Entropy: [Bits per character]\nPrimary Record Type: [A\u002FTXT\u002FCNAME\u002FNULL]\nData Volume Estimate: [Bytes exfiltrated]\nRisk Level: [Critical\u002FHigh\u002FMedium\u002FLow]\n```\n",{"name":5,"domain":22,"description":7},"main","a91f1293287ffa9f4f1b8f486cd6e835a1568c84","skills\u002Fnet-capture-zeek-dnstunnel","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace","https:\u002F\u002Fgithub.com\u002FDCx7C5","#Python","2026-09-01 11:21:00",{"source":8,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add DCx7C5\u002Fai-marketplace --skill net-capture-zeek-dnstunnel",{"tool":45,"command":46},"bunx","bunx skills add DCx7C5\u002Fai-marketplace --skill net-capture-zeek-dnstunnel",{"tool":48,"command":49},"pnpm","pnpm dlx skills add DCx7C5\u002Fai-marketplace --skill net-capture-zeek-dnstunnel","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fnet-capture-zeek-dnstunnel\u002FSKILL.md",true,[53],{"path":54,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":57,"sourceHtmlUrl":58},"index.json","REFERENCE","参考文档",536,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fnet-capture-zeek-dnstunnel\u002Findex.json",[60,85,108,130,152,168],{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":66,"publishedAt":27},"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",[],[67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,22,84],"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":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":27},"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",[],[92,67,93,70,94,95,96,22,97,98,99,100,101,102,72,103,104,105,106,107],"exploit","services wmi exec exploit","exec","remote","traffic","Bash","analysis","team","across","crackmapexec","native","command","lateral movement","read","lateral-movement","Impacket",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":27},"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",[],[115,116,117,118,119,120,22,97,121,98,122,123,72,105,124,125,126,127,128,129],"artifact","registry","registry artifact extract","extract","evidence-collection","artifact-analysis","collection","analyze","uncover","software","activity","digital-forensics","windows-registry","regripper","sonnet",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":27},"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",[],[68,137,138,139,140,141,142,73,143,22,84,144,145,146,147,148,149,150,151,72],"processes token impersonate detect","token","processes","attacks","windows","escalation","techniques","privilege-escalation","seimpersonate","token-impersonation","printspoofer","exploitation","potato","impersonation","via",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":27},"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",[],[159,160,68,161,139,141,162,73,163,143,22,84,98,164,165,166,167,151,72,74],"thread","processes thread injection detect","injection","memory","process-injection","api","apc-injection","thread-injection","nt-api",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":174,"publishedAt":27},"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",[],[175,68,139,176,162,73,177,178,22,84,179,180,181,182,183,184,72,74,185,186],"processes hollow technique detect","tree","memory-forensics","process-hollow","peb","runpe","image","pe-header","in memory","with","mismatched","headers"]