@elizaos/skills 2.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +126 -0
- package/package.json +53 -0
- package/skills/1password/SKILL.md +70 -0
- package/skills/1password/references/cli-examples.md +29 -0
- package/skills/1password/references/get-started.md +17 -0
- package/skills/apple-notes/SKILL.md +77 -0
- package/skills/apple-reminders/SKILL.md +96 -0
- package/skills/bear-notes/SKILL.md +107 -0
- package/skills/bird/SKILL.md +224 -0
- package/skills/blogwatcher/SKILL.md +69 -0
- package/skills/blucli/SKILL.md +47 -0
- package/skills/bluebubbles/SKILL.md +131 -0
- package/skills/camsnap/SKILL.md +45 -0
- package/skills/canvas/SKILL.md +203 -0
- package/skills/clawhub/SKILL.md +77 -0
- package/skills/coding-agent/SKILL.md +284 -0
- package/skills/discord/SKILL.md +578 -0
- package/skills/eightctl/SKILL.md +50 -0
- package/skills/food-order/SKILL.md +48 -0
- package/skills/gemini/SKILL.md +43 -0
- package/skills/gifgrep/SKILL.md +79 -0
- package/skills/github/SKILL.md +77 -0
- package/skills/gog/SKILL.md +116 -0
- package/skills/goplaces/SKILL.md +52 -0
- package/skills/healthcheck/SKILL.md +245 -0
- package/skills/himalaya/SKILL.md +257 -0
- package/skills/himalaya/references/configuration.md +184 -0
- package/skills/himalaya/references/message-composition.md +199 -0
- package/skills/imsg/SKILL.md +74 -0
- package/skills/local-places/SERVER_README.md +101 -0
- package/skills/local-places/SKILL.md +102 -0
- package/skills/local-places/pyproject.toml +21 -0
- package/skills/local-places/src/local_places/__init__.py +2 -0
- package/skills/local-places/src/local_places/google_places.py +314 -0
- package/skills/local-places/src/local_places/main.py +65 -0
- package/skills/local-places/src/local_places/schemas.py +107 -0
- package/skills/mcporter/SKILL.md +61 -0
- package/skills/model-usage/SKILL.md +69 -0
- package/skills/model-usage/references/codexbar-cli.md +33 -0
- package/skills/model-usage/scripts/model_usage.py +310 -0
- package/skills/nano-banana-pro/SKILL.md +58 -0
- package/skills/nano-banana-pro/scripts/generate_image.py +184 -0
- package/skills/nano-pdf/SKILL.md +38 -0
- package/skills/notion/SKILL.md +172 -0
- package/skills/obsidian/SKILL.md +81 -0
- package/skills/openai-image-gen/SKILL.md +89 -0
- package/skills/openai-image-gen/scripts/gen.py +240 -0
- package/skills/openai-whisper/SKILL.md +38 -0
- package/skills/openai-whisper-api/SKILL.md +52 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
- package/skills/openhue/SKILL.md +51 -0
- package/skills/oracle/SKILL.md +125 -0
- package/skills/ordercli/SKILL.md +78 -0
- package/skills/peekaboo/SKILL.md +190 -0
- package/skills/sag/SKILL.md +87 -0
- package/skills/security-ask-questions-if-underspecified/.claude-plugin/plugin.json +10 -0
- package/skills/security-ask-questions-if-underspecified/README.md +24 -0
- package/skills/security-ask-questions-if-underspecified/skills/ask-questions-if-underspecified/SKILL.md +85 -0
- package/skills/security-audit-context-building/.claude-plugin/plugin.json +10 -0
- package/skills/security-audit-context-building/README.md +58 -0
- package/skills/security-audit-context-building/commands/audit-context.md +21 -0
- package/skills/security-audit-context-building/skills/audit-context-building/SKILL.md +297 -0
- package/skills/security-audit-context-building/skills/audit-context-building/resources/COMPLETENESS_CHECKLIST.md +47 -0
- package/skills/security-audit-context-building/skills/audit-context-building/resources/FUNCTION_MICRO_ANALYSIS_EXAMPLE.md +355 -0
- package/skills/security-audit-context-building/skills/audit-context-building/resources/OUTPUT_REQUIREMENTS.md +71 -0
- package/skills/security-building-secure-contracts/.claude-plugin/plugin.json +10 -0
- package/skills/security-building-secure-contracts/README.md +241 -0
- package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/SKILL.md +284 -0
- package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +405 -0
- package/skills/security-building-secure-contracts/skills/audit-prep-assistant/SKILL.md +409 -0
- package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/SKILL.md +329 -0
- package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +722 -0
- package/skills/security-building-secure-contracts/skills/code-maturity-assessor/SKILL.md +218 -0
- package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/ASSESSMENT_CRITERIA.md +355 -0
- package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/EXAMPLE_REPORT.md +248 -0
- package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/REPORT_FORMAT.md +33 -0
- package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/SKILL.md +334 -0
- package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +740 -0
- package/skills/security-building-secure-contracts/skills/guidelines-advisor/SKILL.md +252 -0
- package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/ASSESSMENT_AREAS.md +329 -0
- package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/DELIVERABLES.md +118 -0
- package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/EXAMPLE_REPORT.md +298 -0
- package/skills/security-building-secure-contracts/skills/secure-workflow-guide/SKILL.md +161 -0
- package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/EXAMPLE_REPORT.md +279 -0
- package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/WORKFLOW_STEPS.md +132 -0
- package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/SKILL.md +389 -0
- package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +669 -0
- package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/SKILL.md +298 -0
- package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +791 -0
- package/skills/security-building-secure-contracts/skills/token-integration-analyzer/SKILL.md +362 -0
- package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/ASSESSMENT_CATEGORIES.md +571 -0
- package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/REPORT_TEMPLATES.md +141 -0
- package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/SKILL.md +388 -0
- package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +595 -0
- package/skills/security-burpsuite-project-parser/.claude-plugin/plugin.json +10 -0
- package/skills/security-burpsuite-project-parser/README.md +103 -0
- package/skills/security-burpsuite-project-parser/commands/burp-search.md +18 -0
- package/skills/security-burpsuite-project-parser/skills/SKILL.md +358 -0
- package/skills/security-burpsuite-project-parser/skills/scripts/burp-search.sh +99 -0
- package/skills/security-claude-in-chrome-troubleshooting/.claude-plugin/plugin.json +8 -0
- package/skills/security-claude-in-chrome-troubleshooting/README.md +31 -0
- package/skills/security-claude-in-chrome-troubleshooting/skills/claude-in-chrome-troubleshooting/SKILL.md +251 -0
- package/skills/security-constant-time-analysis/.claude-plugin/plugin.json +9 -0
- package/skills/security-constant-time-analysis/README.md +381 -0
- package/skills/security-constant-time-analysis/commands/ct-check.md +20 -0
- package/skills/security-constant-time-analysis/ct_analyzer/__init__.py +49 -0
- package/skills/security-constant-time-analysis/ct_analyzer/analyzer.py +1284 -0
- package/skills/security-constant-time-analysis/ct_analyzer/script_analyzers.py +3081 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/__init__.py +1 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_analyzer.py +1397 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/bn_excerpt.js +205 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_constant_time.c +181 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.c +74 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.go +78 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.rs +92 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.cs +174 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.java +161 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.kt +181 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.php +140 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.py +252 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.rb +188 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.swift +199 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.ts +154 -0
- package/skills/security-constant-time-analysis/pyproject.toml +52 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/README.md +90 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/SKILL.md +219 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/compiled.md +129 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/javascript.md +136 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/kotlin.md +252 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/php.md +172 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/python.md +179 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/ruby.md +198 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/swift.md +288 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/vm-compiled.md +354 -0
- package/skills/security-constant-time-analysis/uv.lock +8 -0
- package/skills/security-culture-index/.claude-plugin/plugin.json +8 -0
- package/skills/security-culture-index/README.md +79 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/SKILL.md +293 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/references/anti-patterns.md +255 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/references/conversation-starters.md +408 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/references/interview-trait-signals.md +253 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/references/motivators.md +158 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/references/patterns-archetypes.md +147 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/references/primary-traits.md +307 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/references/secondary-traits.md +228 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/references/team-composition.md +148 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/check_deps.py +108 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/__init__.py +20 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/constants.py +122 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/extract.py +187 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/models.py +16 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/opencv_extractor.py +520 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/extract_pdf.py +237 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/pyproject.toml +18 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/burnout-report.md +113 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/comparison-report.md +103 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/hiring-profile.md +127 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/individual-report.md +85 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/predicted-profile.md +165 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/team-report.md +109 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/analyze-team.md +188 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/coach-manager.md +267 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/compare-profiles.md +188 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/define-hiring-profile.md +220 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/detect-burnout.md +206 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/extract-from-pdf.md +121 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/interpret-individual.md +183 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/interview-debrief.md +234 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/mediate-conflict.md +306 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/plan-onboarding.md +322 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/predict-from-interview.md +250 -0
- package/skills/security-differential-review/.claude-plugin/plugin.json +10 -0
- package/skills/security-differential-review/README.md +109 -0
- package/skills/security-differential-review/commands/diff-review.md +21 -0
- package/skills/security-differential-review/skills/differential-review/SKILL.md +220 -0
- package/skills/security-differential-review/skills/differential-review/adversarial.md +203 -0
- package/skills/security-differential-review/skills/differential-review/methodology.md +234 -0
- package/skills/security-differential-review/skills/differential-review/patterns.md +300 -0
- package/skills/security-differential-review/skills/differential-review/reporting.md +369 -0
- package/skills/security-dwarf-expert/.claude-plugin/plugin.json +10 -0
- package/skills/security-dwarf-expert/README.md +38 -0
- package/skills/security-dwarf-expert/skills/dwarf-expert/SKILL.md +93 -0
- package/skills/security-dwarf-expert/skills/dwarf-expert/reference/coding.md +31 -0
- package/skills/security-dwarf-expert/skills/dwarf-expert/reference/dwarfdump.md +50 -0
- package/skills/security-dwarf-expert/skills/dwarf-expert/reference/readelf.md +8 -0
- package/skills/security-entry-point-analyzer/.claude-plugin/plugin.json +10 -0
- package/skills/security-entry-point-analyzer/README.md +74 -0
- package/skills/security-entry-point-analyzer/commands/entry-points.md +18 -0
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/SKILL.md +251 -0
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/cosmwasm.md +182 -0
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-aptos.md +107 -0
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-sui.md +87 -0
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solana.md +155 -0
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solidity.md +135 -0
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/ton.md +185 -0
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/vyper.md +141 -0
- package/skills/security-firebase-apk-scanner/.claude-plugin/plugin.json +10 -0
- package/skills/security-firebase-apk-scanner/README.md +85 -0
- package/skills/security-firebase-apk-scanner/commands/scan-apk.md +18 -0
- package/skills/security-firebase-apk-scanner/scanner.sh +1408 -0
- package/skills/security-firebase-apk-scanner/skills/firebase-apk-scanner/SKILL.md +197 -0
- package/skills/security-firebase-apk-scanner/skills/firebase-apk-scanner/references/vulnerabilities.md +803 -0
- package/skills/security-fix-review/.claude-plugin/plugin.json +13 -0
- package/skills/security-fix-review/README.md +118 -0
- package/skills/security-fix-review/commands/fix-review.md +24 -0
- package/skills/security-fix-review/skills/fix-review/SKILL.md +264 -0
- package/skills/security-fix-review/skills/fix-review/references/bug-detection.md +408 -0
- package/skills/security-fix-review/skills/fix-review/references/finding-matching.md +298 -0
- package/skills/security-fix-review/skills/fix-review/references/report-parsing.md +398 -0
- package/skills/security-insecure-defaults/.claude-plugin/plugin.json +10 -0
- package/skills/security-insecure-defaults/README.md +45 -0
- package/skills/security-insecure-defaults/skills/insecure-defaults/SKILL.md +117 -0
- package/skills/security-insecure-defaults/skills/insecure-defaults/references/examples.md +409 -0
- package/skills/security-modern-python/.claude-plugin/plugin.json +10 -0
- package/skills/security-modern-python/README.md +58 -0
- package/skills/security-modern-python/hooks/hooks.json +16 -0
- package/skills/security-modern-python/hooks/intercept-legacy-python.bats +388 -0
- package/skills/security-modern-python/hooks/intercept-legacy-python.sh +109 -0
- package/skills/security-modern-python/hooks/test_helper.bash +75 -0
- package/skills/security-modern-python/skills/modern-python/SKILL.md +333 -0
- package/skills/security-modern-python/skills/modern-python/references/dependabot.md +43 -0
- package/skills/security-modern-python/skills/modern-python/references/migration-checklist.md +141 -0
- package/skills/security-modern-python/skills/modern-python/references/pep723-scripts.md +259 -0
- package/skills/security-modern-python/skills/modern-python/references/prek.md +211 -0
- package/skills/security-modern-python/skills/modern-python/references/pyproject.md +254 -0
- package/skills/security-modern-python/skills/modern-python/references/ruff-config.md +240 -0
- package/skills/security-modern-python/skills/modern-python/references/security-setup.md +255 -0
- package/skills/security-modern-python/skills/modern-python/references/testing.md +284 -0
- package/skills/security-modern-python/skills/modern-python/references/uv-commands.md +200 -0
- package/skills/security-modern-python/skills/modern-python/templates/dependabot.yml +36 -0
- package/skills/security-modern-python/skills/modern-python/templates/pre-commit-config.yaml +66 -0
- package/skills/security-property-based-testing/.claude-plugin/plugin.json +9 -0
- package/skills/security-property-based-testing/README.md +47 -0
- package/skills/security-property-based-testing/skills/property-based-testing/README.md +88 -0
- package/skills/security-property-based-testing/skills/property-based-testing/SKILL.md +109 -0
- package/skills/security-property-based-testing/skills/property-based-testing/references/design.md +191 -0
- package/skills/security-property-based-testing/skills/property-based-testing/references/generating.md +200 -0
- package/skills/security-property-based-testing/skills/property-based-testing/references/libraries.md +130 -0
- package/skills/security-property-based-testing/skills/property-based-testing/references/refactoring.md +181 -0
- package/skills/security-property-based-testing/skills/property-based-testing/references/reviewing.md +209 -0
- package/skills/security-property-based-testing/skills/property-based-testing/references/strategies.md +124 -0
- package/skills/semgrep-rule-creator/.claude-plugin/plugin.json +8 -0
- package/skills/semgrep-rule-creator/README.md +43 -0
- package/skills/semgrep-rule-creator/commands/semgrep-rule.md +26 -0
- package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/SKILL.md +168 -0
- package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/quick-reference.md +203 -0
- package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/workflow.md +240 -0
- package/skills/semgrep-rule-variant-creator/.claude-plugin/plugin.json +9 -0
- package/skills/semgrep-rule-variant-creator/README.md +86 -0
- package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/SKILL.md +205 -0
- package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/applicability-analysis.md +250 -0
- package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/language-syntax-guide.md +324 -0
- package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/workflow.md +518 -0
- package/skills/session-logs/SKILL.md +115 -0
- package/skills/sharp-edges/.claude-plugin/plugin.json +10 -0
- package/skills/sharp-edges/README.md +48 -0
- package/skills/sharp-edges/skills/sharp-edges/SKILL.md +292 -0
- package/skills/sharp-edges/skills/sharp-edges/references/auth-patterns.md +252 -0
- package/skills/sharp-edges/skills/sharp-edges/references/case-studies.md +274 -0
- package/skills/sharp-edges/skills/sharp-edges/references/config-patterns.md +333 -0
- package/skills/sharp-edges/skills/sharp-edges/references/crypto-apis.md +190 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-c.md +205 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-csharp.md +285 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-go.md +270 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-java.md +263 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-javascript.md +269 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-kotlin.md +265 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-php.md +245 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-python.md +274 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-ruby.md +273 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-rust.md +272 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-swift.md +287 -0
- package/skills/sharp-edges/skills/sharp-edges/references/language-specific.md +588 -0
- package/skills/sherpa-onnx-tts/SKILL.md +103 -0
- package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
- package/skills/skill-creator/SKILL.md +370 -0
- package/skills/skill-creator/license.txt +202 -0
- package/skills/skill-creator/scripts/init_skill.py +378 -0
- package/skills/skill-creator/scripts/package_skill.py +111 -0
- package/skills/skill-creator/scripts/quick_validate.py +101 -0
- package/skills/slack/SKILL.md +144 -0
- package/skills/songsee/SKILL.md +49 -0
- package/skills/sonoscli/SKILL.md +46 -0
- package/skills/spec-to-code-compliance/.claude-plugin/plugin.json +10 -0
- package/skills/spec-to-code-compliance/README.md +67 -0
- package/skills/spec-to-code-compliance/commands/spec-compliance.md +22 -0
- package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/SKILL.md +349 -0
- package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/COMPLETENESS_CHECKLIST.md +69 -0
- package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/IR_EXAMPLES.md +417 -0
- package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/OUTPUT_REQUIREMENTS.md +105 -0
- package/skills/spotify-player/SKILL.md +64 -0
- package/skills/static-analysis/.claude-plugin/plugin.json +8 -0
- package/skills/static-analysis/README.md +59 -0
- package/skills/static-analysis/skills/codeql/SKILL.md +315 -0
- package/skills/static-analysis/skills/sarif-parsing/SKILL.md +479 -0
- package/skills/static-analysis/skills/sarif-parsing/resources/jq-queries.md +162 -0
- package/skills/static-analysis/skills/sarif-parsing/resources/sarif_helpers.py +331 -0
- package/skills/static-analysis/skills/semgrep/SKILL.md +337 -0
- package/skills/summarize/SKILL.md +87 -0
- package/skills/testing-handbook-skills/.claude-plugin/plugin.json +8 -0
- package/skills/testing-handbook-skills/README.md +241 -0
- package/skills/testing-handbook-skills/scripts/pyproject.toml +8 -0
- package/skills/testing-handbook-skills/scripts/validate-skills.py +657 -0
- package/skills/testing-handbook-skills/skills/address-sanitizer/SKILL.md +341 -0
- package/skills/testing-handbook-skills/skills/aflpp/SKILL.md +640 -0
- package/skills/testing-handbook-skills/skills/atheris/SKILL.md +515 -0
- package/skills/testing-handbook-skills/skills/cargo-fuzz/SKILL.md +454 -0
- package/skills/testing-handbook-skills/skills/codeql/SKILL.md +549 -0
- package/skills/testing-handbook-skills/skills/constant-time-testing/SKILL.md +507 -0
- package/skills/testing-handbook-skills/skills/coverage-analysis/SKILL.md +607 -0
- package/skills/testing-handbook-skills/skills/fuzzing-dictionary/SKILL.md +297 -0
- package/skills/testing-handbook-skills/skills/fuzzing-obstacles/SKILL.md +426 -0
- package/skills/testing-handbook-skills/skills/harness-writing/SKILL.md +614 -0
- package/skills/testing-handbook-skills/skills/libafl/SKILL.md +625 -0
- package/skills/testing-handbook-skills/skills/libfuzzer/SKILL.md +795 -0
- package/skills/testing-handbook-skills/skills/ossfuzz/SKILL.md +426 -0
- package/skills/testing-handbook-skills/skills/ruzzy/SKILL.md +443 -0
- package/skills/testing-handbook-skills/skills/semgrep/SKILL.md +601 -0
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/SKILL.md +372 -0
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/agent-prompt.md +280 -0
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/discovery.md +452 -0
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/domain-skill.md +504 -0
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/fuzzer-skill.md +454 -0
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/technique-skill.md +527 -0
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/tool-skill.md +366 -0
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/testing.md +482 -0
- package/skills/testing-handbook-skills/skills/wycheproof/SKILL.md +533 -0
- package/skills/things-mac/SKILL.md +86 -0
- package/skills/tmux/SKILL.md +135 -0
- package/skills/tmux/scripts/find-sessions.sh +112 -0
- package/skills/tmux/scripts/wait-for-text.sh +83 -0
- package/skills/trello/SKILL.md +95 -0
- package/skills/variant-analysis/.claude-plugin/plugin.json +8 -0
- package/skills/variant-analysis/README.md +41 -0
- package/skills/variant-analysis/commands/variants.md +23 -0
- package/skills/variant-analysis/skills/variant-analysis/METHODOLOGY.md +327 -0
- package/skills/variant-analysis/skills/variant-analysis/SKILL.md +142 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/codeql/cpp.ql +119 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/codeql/go.ql +69 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/codeql/java.ql +71 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/codeql/javascript.ql +63 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/codeql/python.ql +80 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/cpp.yaml +98 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/go.yaml +63 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/java.yaml +61 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/javascript.yaml +60 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/python.yaml +72 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/variant-report-template.md +75 -0
- package/skills/video-frames/SKILL.md +46 -0
- package/skills/video-frames/scripts/frame.sh +81 -0
- package/skills/voice-call/SKILL.md +45 -0
- package/skills/wacli/SKILL.md +72 -0
- package/skills/weather/SKILL.md +54 -0
- package/skills/yara-authoring/.claude-plugin/plugin.json +9 -0
- package/skills/yara-authoring/README.md +131 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/SKILL.md +645 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_Mac_ProtonRAT_Jan25.yar +99 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_NPM_SupplyChain_Jan25.yar +170 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_Win_Remcos_Jan25.yar +103 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_CRX_SuspiciousPermissions.yar +134 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_JS_Obfuscation_Jan25.yar +185 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/references/crx-module.md +214 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/references/dex-module.md +383 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/references/performance.md +333 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/references/strings.md +433 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/references/style-guide.md +257 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/references/testing.md +399 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/scripts/atom_analyzer.py +526 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/scripts/pyproject.toml +25 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/scripts/yara_lint.py +631 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/workflows/rule-development.md +493 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Real YARA Rule: macOS Proton RAT Detection
|
|
3
|
+
|
|
4
|
+
This rule is adapted from Airbnb's BinaryAlert open-source YARA rules.
|
|
5
|
+
It demonstrates best practices for macOS malware detection:
|
|
6
|
+
- Mach-O magic bytes validation (including universal binaries)
|
|
7
|
+
- Multi-category string grouping ($a* for libraries, $b* for behaviors)
|
|
8
|
+
- Cross-category matching requirement
|
|
9
|
+
|
|
10
|
+
Original source: https://github.com/airbnb/binaryalert
|
|
11
|
+
Attribution: @mimeframe / Airbnb Security
|
|
12
|
+
Reference: https://objective-see.org/blog/blog_0x1D.html
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
private rule MachO
|
|
16
|
+
{
|
|
17
|
+
meta:
|
|
18
|
+
description = "Detects all Mach-O binary formats including 32-bit, 64-bit, and universal binaries"
|
|
19
|
+
author = "Airbnb BinaryAlert"
|
|
20
|
+
reference = "https://github.com/airbnb/binaryalert"
|
|
21
|
+
date = "2017-01-01"
|
|
22
|
+
|
|
23
|
+
condition:
|
|
24
|
+
// 32-bit Mach-O (little/big endian)
|
|
25
|
+
uint32(0) == 0xfeedface or uint32(0) == 0xcefaedfe or
|
|
26
|
+
// 64-bit Mach-O (little/big endian)
|
|
27
|
+
uint32(0) == 0xfeedfacf or uint32(0) == 0xcffaedfe or
|
|
28
|
+
// Universal binary / fat binary (little/big endian)
|
|
29
|
+
uint32(0) == 0xcafebabe or uint32(0) == 0xbebafeca
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
rule MAL_Mac_ProtonRAT_Generic
|
|
33
|
+
{
|
|
34
|
+
meta:
|
|
35
|
+
description = "Detects macOS Proton RAT via WebSocket library and SSH tunnel strings"
|
|
36
|
+
author = "@mimeframe (Airbnb Security, adapted)"
|
|
37
|
+
reference = "https://objective-see.org/blog/blog_0x1D.html"
|
|
38
|
+
date = "2017-05-04"
|
|
39
|
+
modified = "2025-01-30"
|
|
40
|
+
score = 80
|
|
41
|
+
|
|
42
|
+
strings:
|
|
43
|
+
// Category A: Library indicators
|
|
44
|
+
// SocketRocket is a WebSocket library - legitimate but rare in malware context
|
|
45
|
+
$a1 = "SRWebSocket" nocase ascii wide
|
|
46
|
+
$a2 = "SocketRocket" nocase ascii wide
|
|
47
|
+
|
|
48
|
+
// Category B: SSH tunnel behavioral indicators
|
|
49
|
+
// From joeroback/SSHTunnel - distinctive error/status messages
|
|
50
|
+
$b1 = "SSH tunnel not launched" nocase ascii wide
|
|
51
|
+
$b2 = "SSH tunnel still running" nocase ascii wide
|
|
52
|
+
$b3 = "SSH tunnel already launched" nocase ascii wide
|
|
53
|
+
$b4 = "Entering interactive session." nocase ascii wide
|
|
54
|
+
|
|
55
|
+
condition:
|
|
56
|
+
// File type validation
|
|
57
|
+
MachO and
|
|
58
|
+
filesize < 20MB and
|
|
59
|
+
|
|
60
|
+
// Require indicators from BOTH categories
|
|
61
|
+
// This reduces FPs: SocketRocket alone is legitimate
|
|
62
|
+
// SSH tunneling alone is legitimate
|
|
63
|
+
// BOTH together is suspicious for a GUI app
|
|
64
|
+
any of ($a*) and any of ($b*)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
rule MAL_Mac_ProtonRAT_Keylogger
|
|
68
|
+
{
|
|
69
|
+
meta:
|
|
70
|
+
description = "Detects macOS Proton RAT keylogger functionality via CoreGraphics event tap APIs"
|
|
71
|
+
author = "Trail of Bits (based on Objective-See research)"
|
|
72
|
+
reference = "https://objective-see.org/blog/blog_0x1D.html"
|
|
73
|
+
date = "2025-01-30"
|
|
74
|
+
score = 85
|
|
75
|
+
|
|
76
|
+
strings:
|
|
77
|
+
// Keylogger API usage (CoreGraphics event tap)
|
|
78
|
+
$key1 = "CGEventTapCreate" ascii
|
|
79
|
+
$key2 = "kCGEventKeyDown" ascii
|
|
80
|
+
$key3 = "kCGEventKeyUp" ascii
|
|
81
|
+
|
|
82
|
+
// Credential theft indicators
|
|
83
|
+
$cred1 = "security find-generic-password" ascii
|
|
84
|
+
$cred2 = "keychain" ascii nocase
|
|
85
|
+
|
|
86
|
+
// Persistence paths
|
|
87
|
+
$persist1 = "Library/LaunchAgents" ascii
|
|
88
|
+
$persist2 = "com.apple" ascii // Masquerading as Apple
|
|
89
|
+
|
|
90
|
+
condition:
|
|
91
|
+
MachO and
|
|
92
|
+
filesize < 20MB and
|
|
93
|
+
|
|
94
|
+
// Need keylogger functionality
|
|
95
|
+
2 of ($key*) and
|
|
96
|
+
|
|
97
|
+
// Plus credential or persistence indicators
|
|
98
|
+
(any of ($cred*) or any of ($persist*))
|
|
99
|
+
}
|
package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_NPM_SupplyChain_Jan25.yar
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Real YARA Rules: npm Supply Chain Attack Detection
|
|
3
|
+
|
|
4
|
+
These rules detect patterns from documented npm supply chain attacks.
|
|
5
|
+
They demonstrate best practices for JavaScript/package detection:
|
|
6
|
+
- No magic bytes (text files)
|
|
7
|
+
- Combining behavioral patterns to reduce false positives
|
|
8
|
+
- Targeting specific attack artifacts, not generic JavaScript
|
|
9
|
+
|
|
10
|
+
Sources:
|
|
11
|
+
- chalk/debug compromise (Sept 2025): Stairwell Threat Research
|
|
12
|
+
- os-info-checker-es6: Veracode Security Research
|
|
13
|
+
- event-stream/flatmap-stream: npm security advisory
|
|
14
|
+
|
|
15
|
+
Attribution: Stairwell Threat Research, Veracode, npm Security
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
rule MAL_NPM_ChalkDebug_Sept25
|
|
19
|
+
{
|
|
20
|
+
meta:
|
|
21
|
+
description = "Detects malicious wallet-drainer code from chalk/debug npm supply-chain compromise"
|
|
22
|
+
author = "Stairwell Threat Research (adapted)"
|
|
23
|
+
reference = "https://stairwell.com/resources/how-to-detect-npm-package-manager-supply-chain-attacks-with-yara/"
|
|
24
|
+
date = "2025-09-11"
|
|
25
|
+
modified = "2025-01-30"
|
|
26
|
+
score = 95
|
|
27
|
+
|
|
28
|
+
strings:
|
|
29
|
+
// Unique function names from the malicious payload
|
|
30
|
+
$s1 = "runmask" ascii
|
|
31
|
+
$s2 = "checkethereumw" ascii
|
|
32
|
+
|
|
33
|
+
// Ethereum function selector for approve(address,uint256)
|
|
34
|
+
// This ERC-20 method grants token spending permission
|
|
35
|
+
$function_selector = "0x095ea7b3" ascii
|
|
36
|
+
|
|
37
|
+
condition:
|
|
38
|
+
filesize < 5MB and
|
|
39
|
+
all of them
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
rule MAL_NPM_ChalkDebug_ERC20Selectors
|
|
43
|
+
{
|
|
44
|
+
meta:
|
|
45
|
+
description = "Detects malicious npm packages targeting ERC-20 token operations"
|
|
46
|
+
author = "Trail of Bits (based on Stairwell research)"
|
|
47
|
+
reference = "https://github.com/chalk/chalk/issues/656"
|
|
48
|
+
date = "2025-01-30"
|
|
49
|
+
score = 80
|
|
50
|
+
|
|
51
|
+
strings:
|
|
52
|
+
// ERC-20 function selectors (4-byte Keccak hashes)
|
|
53
|
+
// These appear in wallet-draining malware
|
|
54
|
+
$erc20_transfer = { 70 a0 82 31 } // transfer(address,uint256)
|
|
55
|
+
$erc20_approve = { 09 5e a7 b3 } // approve(address,uint256)
|
|
56
|
+
$erc20_transferFrom = { 23 b8 72 dd } // transferFrom(address,address,uint256)
|
|
57
|
+
|
|
58
|
+
// Context: must be in a JavaScript/npm context
|
|
59
|
+
$npm_context1 = "package.json" ascii
|
|
60
|
+
$npm_context2 = "node_modules" ascii
|
|
61
|
+
$js_context = "module.exports" ascii
|
|
62
|
+
|
|
63
|
+
condition:
|
|
64
|
+
filesize < 2MB and
|
|
65
|
+
// Need multiple ERC-20 selectors (legitimate code rarely has multiple)
|
|
66
|
+
2 of ($erc20_*) and
|
|
67
|
+
// Confirm npm/JS context
|
|
68
|
+
any of ($npm_context*, $js_context)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
rule MAL_NPM_ZeroWidthSteganography
|
|
72
|
+
{
|
|
73
|
+
meta:
|
|
74
|
+
description = "Detects hidden code using zero-width Unicode characters (os-info-checker-es6 technique)"
|
|
75
|
+
author = "Trail of Bits (based on Veracode research)"
|
|
76
|
+
reference = "https://www.veracode.com/blog/security-news/npm-package-uses-unicode-invisible-characters-hide-backdoor-code"
|
|
77
|
+
date = "2025-01-30"
|
|
78
|
+
score = 75
|
|
79
|
+
|
|
80
|
+
strings:
|
|
81
|
+
// Zero-width characters used to hide payloads
|
|
82
|
+
// These encode binary data as invisible Unicode
|
|
83
|
+
$zw_sequence = { E2 80 8B E2 80 8C E2 80 8D } // ZWSP + ZWNJ + ZWJ
|
|
84
|
+
$zw_double = { E2 80 8B E2 80 8B } // Double zero-width space
|
|
85
|
+
$zw_mixed = { E2 80 8C E2 80 8D } // ZWNJ + ZWJ pair
|
|
86
|
+
|
|
87
|
+
// Typical decoding pattern
|
|
88
|
+
$eval_atob = /eval\s*\(\s*atob\s*\(/
|
|
89
|
+
|
|
90
|
+
condition:
|
|
91
|
+
filesize < 1MB and
|
|
92
|
+
// Need significant zero-width char density
|
|
93
|
+
(#zw_sequence > 3 or #zw_double > 5 or #zw_mixed > 5) and
|
|
94
|
+
// Plus execution mechanism
|
|
95
|
+
$eval_atob
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
rule MAL_NPM_EventStream_Pattern
|
|
99
|
+
{
|
|
100
|
+
meta:
|
|
101
|
+
description = "Detects patterns similar to event-stream/flatmap-stream backdoor"
|
|
102
|
+
author = "Trail of Bits (based on npm security advisory)"
|
|
103
|
+
reference = "https://github.com/dominictarr/event-stream/issues/116"
|
|
104
|
+
date = "2025-01-30"
|
|
105
|
+
score = 70
|
|
106
|
+
|
|
107
|
+
strings:
|
|
108
|
+
// The attack targeted Copay Bitcoin wallet
|
|
109
|
+
$target1 = "copay" ascii nocase
|
|
110
|
+
$target2 = "bitpay" ascii nocase
|
|
111
|
+
$target3 = "bitcoin" ascii nocase
|
|
112
|
+
|
|
113
|
+
// Malicious dependency injection
|
|
114
|
+
$flatmap = "flatmap-stream" ascii
|
|
115
|
+
$pump = "pump" ascii
|
|
116
|
+
|
|
117
|
+
// Encrypted payload indicators
|
|
118
|
+
$aes = "createDecipher" ascii
|
|
119
|
+
$buffer_from = /Buffer\.from\s*\([^)]+,\s*['"]hex['"]\)/
|
|
120
|
+
|
|
121
|
+
condition:
|
|
122
|
+
filesize < 500KB and
|
|
123
|
+
// Bitcoin wallet targeting
|
|
124
|
+
any of ($target*) and
|
|
125
|
+
// Crypto/decode patterns
|
|
126
|
+
($aes or $buffer_from) and
|
|
127
|
+
// One of the attack-specific patterns
|
|
128
|
+
($flatmap or #pump > 2)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
rule SUSP_NPM_PostinstallExfil
|
|
132
|
+
{
|
|
133
|
+
meta:
|
|
134
|
+
description = "Detects suspicious npm packages with postinstall hooks accessing credentials and network"
|
|
135
|
+
author = "Trail of Bits"
|
|
136
|
+
reference = "https://blog.phylum.io/npm-supply-chain-attack-patterns/"
|
|
137
|
+
date = "2025-01-30"
|
|
138
|
+
score = 60
|
|
139
|
+
|
|
140
|
+
strings:
|
|
141
|
+
// Package.json install hooks
|
|
142
|
+
$hook1 = /"postinstall"\s*:\s*"[^"]+"/
|
|
143
|
+
$hook2 = /"preinstall"\s*:\s*"[^"]+"/
|
|
144
|
+
|
|
145
|
+
// Credential access patterns
|
|
146
|
+
$cred1 = /process\.env\.NPM_TOKEN/i
|
|
147
|
+
$cred2 = /process\.env\.GITHUB_TOKEN/i
|
|
148
|
+
$cred3 = /process\.env\.AWS_/
|
|
149
|
+
|
|
150
|
+
// Network exfiltration
|
|
151
|
+
$net1 = /fetch\s*\(\s*['"`]https?:\/\//
|
|
152
|
+
$net2 = /axios\.(post|put)\s*\(/
|
|
153
|
+
$net3 = /webhook/i
|
|
154
|
+
|
|
155
|
+
// False positive exclusions
|
|
156
|
+
$fp1 = "webpack" ascii
|
|
157
|
+
$fp2 = "electron-builder" ascii
|
|
158
|
+
$fp3 = "typescript" ascii
|
|
159
|
+
|
|
160
|
+
condition:
|
|
161
|
+
filesize < 5MB and
|
|
162
|
+
// Has install hook
|
|
163
|
+
any of ($hook*) and
|
|
164
|
+
// Accesses credentials
|
|
165
|
+
any of ($cred*) and
|
|
166
|
+
// Has network capability
|
|
167
|
+
any of ($net*) and
|
|
168
|
+
// Not a known build tool
|
|
169
|
+
not 2 of ($fp*)
|
|
170
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Real YARA Rule: Windows Remcos RAT Detection
|
|
3
|
+
|
|
4
|
+
This rule is adapted from Elastic Security's production rules for
|
|
5
|
+
detecting Remcos RAT. It demonstrates best practices for PE malware:
|
|
6
|
+
- Multiple rule versions targeting different indicators
|
|
7
|
+
- Proper metadata with attribution and references
|
|
8
|
+
- String selection based on unique behavioral markers
|
|
9
|
+
- Graduated string requirements (2 of, 3 of, 4 of)
|
|
10
|
+
|
|
11
|
+
Original source: https://github.com/elastic/protections-artifacts
|
|
12
|
+
License: Elastic License v2
|
|
13
|
+
Attribution: Elastic Security
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
rule MAL_Win_Remcos_Watchdog
|
|
17
|
+
{
|
|
18
|
+
meta:
|
|
19
|
+
description = "Detects Remcos RAT via unique watchdog mutex name and restart status strings"
|
|
20
|
+
author = "Elastic Security (adapted)"
|
|
21
|
+
reference = "https://www.elastic.co/security-labs/exploring-the-ref2731-intrusion-set"
|
|
22
|
+
date = "2021-06-10"
|
|
23
|
+
modified = "2025-01-30"
|
|
24
|
+
score = 90
|
|
25
|
+
|
|
26
|
+
strings:
|
|
27
|
+
// Unique watchdog-related strings
|
|
28
|
+
$a1 = "Remcos restarted by watchdog!" ascii fullword
|
|
29
|
+
$a2 = "Mutex_RemWatchdog" ascii fullword
|
|
30
|
+
|
|
31
|
+
// Version/logging format strings
|
|
32
|
+
$a3 = "%02i:%02i:%02i:%03i" ascii
|
|
33
|
+
$a4 = "* Remcos v" ascii fullword
|
|
34
|
+
|
|
35
|
+
condition:
|
|
36
|
+
// Filesize and magic bytes first (instant checks)
|
|
37
|
+
filesize < 5MB and
|
|
38
|
+
uint16(0) == 0x5A4D and
|
|
39
|
+
|
|
40
|
+
// Require 2 of these unique markers
|
|
41
|
+
2 of them
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
rule MAL_Win_Remcos_Features
|
|
45
|
+
{
|
|
46
|
+
meta:
|
|
47
|
+
description = "Detects Remcos RAT via unique feature directory names and configuration file artifacts"
|
|
48
|
+
author = "Elastic Security (adapted)"
|
|
49
|
+
reference = "https://www.elastic.co/security-labs/exploring-the-ref2731-intrusion-set"
|
|
50
|
+
date = "2023-06-23"
|
|
51
|
+
modified = "2025-01-30"
|
|
52
|
+
score = 85
|
|
53
|
+
|
|
54
|
+
strings:
|
|
55
|
+
// Service/feature identifiers
|
|
56
|
+
$a1 = "ServRem" ascii fullword
|
|
57
|
+
$a2 = "Screenshots" ascii fullword
|
|
58
|
+
$a3 = "MicRecords" ascii fullword
|
|
59
|
+
|
|
60
|
+
// Binary/config names
|
|
61
|
+
$a4 = "remcos.exe" wide nocase fullword
|
|
62
|
+
$a5 = "Remcos" wide fullword
|
|
63
|
+
$a6 = "logs.dat" wide fullword
|
|
64
|
+
|
|
65
|
+
condition:
|
|
66
|
+
filesize < 5MB and
|
|
67
|
+
uint16(0) == 0x5A4D and
|
|
68
|
+
|
|
69
|
+
// Need 3 because individual strings are more common
|
|
70
|
+
3 of them
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
rule MAL_Win_Remcos_Agent
|
|
74
|
+
{
|
|
75
|
+
meta:
|
|
76
|
+
description = "Detects Remcos RAT agent initialization messages and credential theft status strings"
|
|
77
|
+
author = "Elastic Security (adapted)"
|
|
78
|
+
reference = "https://github.com/elastic/protections-artifacts"
|
|
79
|
+
date = "2025-01-30"
|
|
80
|
+
score = 95
|
|
81
|
+
|
|
82
|
+
strings:
|
|
83
|
+
// Agent initialization and C2 communication
|
|
84
|
+
$a1 = "Remcos Agent initialized (" ascii fullword
|
|
85
|
+
$a2 = "Remcos v" ascii fullword
|
|
86
|
+
$a3 = "Uploading file to Controller: " ascii fullword
|
|
87
|
+
|
|
88
|
+
// Notification and logging artifacts
|
|
89
|
+
$a4 = "alarm.wav" ascii fullword
|
|
90
|
+
$a5 = "[%04i/%02i/%02i %02i:%02i:%02i " wide fullword
|
|
91
|
+
$a6 = "time_%04i%02i%02i_%02i%02i%02i" wide fullword
|
|
92
|
+
|
|
93
|
+
// Browser credential theft indicators
|
|
94
|
+
$a7 = "[Cleared browsers logins and cookies.]" ascii fullword
|
|
95
|
+
$a8 = "[Chrome StoredLogins found, cleared!]" ascii fullword
|
|
96
|
+
|
|
97
|
+
condition:
|
|
98
|
+
filesize < 10MB and
|
|
99
|
+
uint16(0) == 0x5A4D and
|
|
100
|
+
|
|
101
|
+
// Require 4 because some strings could appear elsewhere
|
|
102
|
+
4 of them
|
|
103
|
+
}
|
package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_CRX_SuspiciousPermissions.yar
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Example YARA-X Rule: Chrome Extension Analysis
|
|
3
|
+
|
|
4
|
+
This rule demonstrates the YARA-X crx module for detecting suspicious
|
|
5
|
+
Chrome extensions. Key features shown:
|
|
6
|
+
- `import "crx"` for module access
|
|
7
|
+
- `crx.is_crx` for file type validation
|
|
8
|
+
- Permission iteration with `for any perm in crx.permissions`
|
|
9
|
+
- `crx.permhash()` for threat hunting
|
|
10
|
+
- Red flag permission combinations
|
|
11
|
+
|
|
12
|
+
Requires YARA-X v1.5.0+ (crx module), v1.11.0+ (permhash)
|
|
13
|
+
|
|
14
|
+
Note: This is an educational example. Real rules should be tuned
|
|
15
|
+
based on your specific threat model and false positive tolerance.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import "crx"
|
|
19
|
+
|
|
20
|
+
rule SUSP_CRX_HighRiskPermissionCombo
|
|
21
|
+
{
|
|
22
|
+
meta:
|
|
23
|
+
description = "Detects Chrome extensions with dangerous permission combinations that enable data exfiltration"
|
|
24
|
+
author = "YARA Skill Example <yara-authoring@example.com>"
|
|
25
|
+
reference = "https://developer.chrome.com/docs/extensions/reference/permissions-list"
|
|
26
|
+
date = "2025-01-29"
|
|
27
|
+
score = 70
|
|
28
|
+
|
|
29
|
+
condition:
|
|
30
|
+
// Validate file type first - crx module only works on CRX files
|
|
31
|
+
crx.is_crx and
|
|
32
|
+
|
|
33
|
+
// Red flag combination: native messaging + broad host access
|
|
34
|
+
// Allows extension to communicate with local executables
|
|
35
|
+
// while accessing data from many websites
|
|
36
|
+
(
|
|
37
|
+
for any perm in crx.permissions : (
|
|
38
|
+
perm == "nativeMessaging"
|
|
39
|
+
)
|
|
40
|
+
) and
|
|
41
|
+
(
|
|
42
|
+
for any perm in crx.permissions : (
|
|
43
|
+
perm == "<all_urls>" or
|
|
44
|
+
perm == "*://*/*" or
|
|
45
|
+
perm == "http://*/*" or
|
|
46
|
+
perm == "https://*/*"
|
|
47
|
+
)
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
rule SUSP_CRX_DebuggerPermission
|
|
52
|
+
{
|
|
53
|
+
meta:
|
|
54
|
+
description = "Detects Chrome extensions requesting debugger permission - can modify any page and intercept traffic"
|
|
55
|
+
author = "YARA Skill Example <yara-authoring@example.com>"
|
|
56
|
+
reference = "https://developer.chrome.com/docs/extensions/reference/api/debugger"
|
|
57
|
+
date = "2025-01-29"
|
|
58
|
+
score = 80
|
|
59
|
+
|
|
60
|
+
condition:
|
|
61
|
+
crx.is_crx and
|
|
62
|
+
|
|
63
|
+
// The debugger permission is extremely powerful:
|
|
64
|
+
// - Attach to any tab
|
|
65
|
+
// - Intercept/modify network requests
|
|
66
|
+
// - Execute scripts in page context
|
|
67
|
+
// - Access cookies and storage
|
|
68
|
+
// Legitimate uses exist (DevTools extensions) but rare
|
|
69
|
+
for any perm in crx.permissions : (
|
|
70
|
+
perm == "debugger"
|
|
71
|
+
)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
rule SUSP_CRX_DataExfilPotential
|
|
75
|
+
{
|
|
76
|
+
meta:
|
|
77
|
+
description = "Detects Chrome extensions with permissions enabling credential/data theft"
|
|
78
|
+
author = "YARA Skill Example <yara-authoring@example.com>"
|
|
79
|
+
reference = "https://example.com/crx-threat-research"
|
|
80
|
+
date = "2025-01-29"
|
|
81
|
+
score = 60
|
|
82
|
+
|
|
83
|
+
strings:
|
|
84
|
+
// Look for exfiltration patterns in extension code
|
|
85
|
+
// These appear in background scripts or content scripts
|
|
86
|
+
$fetch_post = /fetch\s*\([^)]+method\s*:\s*['"]POST['"]/
|
|
87
|
+
$xhr_send = /\.send\s*\(\s*JSON\.stringify/
|
|
88
|
+
$ws_send = /WebSocket[^;]+\.send\s*\(/
|
|
89
|
+
|
|
90
|
+
// Credential access patterns
|
|
91
|
+
$password_field = /document\.querySelector[^)]+type\s*=\s*['"]password['"]/
|
|
92
|
+
$form_data = /new\s+FormData\s*\(\s*document\./
|
|
93
|
+
|
|
94
|
+
condition:
|
|
95
|
+
crx.is_crx and
|
|
96
|
+
|
|
97
|
+
// Has storage access (for caching stolen data)
|
|
98
|
+
for any perm in crx.permissions : (
|
|
99
|
+
perm == "storage" or
|
|
100
|
+
perm == "unlimitedStorage"
|
|
101
|
+
) and
|
|
102
|
+
|
|
103
|
+
// Has broad page access
|
|
104
|
+
for any perm in crx.permissions : (
|
|
105
|
+
perm == "<all_urls>" or
|
|
106
|
+
perm == "activeTab" or
|
|
107
|
+
perm == "tabs"
|
|
108
|
+
) and
|
|
109
|
+
|
|
110
|
+
// Shows data collection + exfiltration behavior
|
|
111
|
+
(1 of ($fetch_post, $xhr_send, $ws_send)) and
|
|
112
|
+
(1 of ($password_field, $form_data))
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
rule SUSP_CRX_PermhashCluster
|
|
116
|
+
{
|
|
117
|
+
meta:
|
|
118
|
+
description = "Detects extensions matching known malicious permission profile hash cluster"
|
|
119
|
+
author = "YARA Skill Example <yara-authoring@example.com>"
|
|
120
|
+
reference = "https://example.com/crx-permhash-research"
|
|
121
|
+
date = "2025-01-29"
|
|
122
|
+
score = 50
|
|
123
|
+
|
|
124
|
+
condition:
|
|
125
|
+
crx.is_crx and
|
|
126
|
+
|
|
127
|
+
// permhash() generates a hash of the extension's permissions
|
|
128
|
+
// Useful for clustering extensions with identical capability profiles
|
|
129
|
+
// These are fictional hashes for demonstration
|
|
130
|
+
(
|
|
131
|
+
crx.permhash() == "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4" or
|
|
132
|
+
crx.permhash() == "f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3"
|
|
133
|
+
)
|
|
134
|
+
}
|
package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_JS_Obfuscation_Jan25.yar
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Real YARA Rules: JavaScript Obfuscation Detection
|
|
3
|
+
|
|
4
|
+
These rules detect common JavaScript obfuscation patterns used by malware.
|
|
5
|
+
They demonstrate best practices for JavaScript/browser malware:
|
|
6
|
+
- Targeting obfuscator-specific signatures
|
|
7
|
+
- Using occurrence counts for density-based detection
|
|
8
|
+
- Combining multiple weak indicators into strong detection
|
|
9
|
+
|
|
10
|
+
Sources:
|
|
11
|
+
- imp0rtp3/js-yara-rules: obfuscator.io patterns
|
|
12
|
+
- Nils Kuhnert: SocGholish patterns
|
|
13
|
+
- Josh Trombley: SocGholish inject patterns
|
|
14
|
+
|
|
15
|
+
Attribution: @imp0rtp3, Nils Kuhnert, Josh Trombley
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
rule SUSP_JS_Obfuscator_IO
|
|
19
|
+
{
|
|
20
|
+
meta:
|
|
21
|
+
description = "Detects JavaScript obfuscated by obfuscator.io (common in malware)"
|
|
22
|
+
author = "@imp0rtp3 (adapted)"
|
|
23
|
+
reference = "https://github.com/imp0rtp3/js-yara-rules"
|
|
24
|
+
date = "2021-01-01"
|
|
25
|
+
modified = "2025-01-30"
|
|
26
|
+
score = 60
|
|
27
|
+
|
|
28
|
+
strings:
|
|
29
|
+
// Beginning of obfuscated script - variable naming pattern
|
|
30
|
+
$start1 = "var a0_0x" ascii
|
|
31
|
+
$start2 = /var _0x[a-f0-9]{4}/ ascii
|
|
32
|
+
|
|
33
|
+
// Obfuscator.io specific function call patterns
|
|
34
|
+
$pattern1 = /a0_0x([a-f0-9]{2}){2,4}\('?0x[0-9a-f]{1,3}'?\)/
|
|
35
|
+
$pattern2 = /_0x([a-f0-9]{2}){2,4}\('?0x[0-9a-f]{1,3}'?\)/
|
|
36
|
+
$pattern3 = /_0x([a-f0-9]{2}){2,4}\['push'\]\(_0x([a-f0-9]{2}){2,4}\['shift'\]\(\)\)/
|
|
37
|
+
|
|
38
|
+
// Common obfuscator.io code patterns
|
|
39
|
+
$code1 = "))),function(){try{var _0x" ascii
|
|
40
|
+
$code2 = "['atob']=function(" ascii
|
|
41
|
+
$code3 = ")['replace'](/=+$/,'');var" ascii
|
|
42
|
+
$code4 = "return!![]" ascii
|
|
43
|
+
$code5 = "while(!![])" ascii
|
|
44
|
+
|
|
45
|
+
condition:
|
|
46
|
+
filesize < 1MB and
|
|
47
|
+
(
|
|
48
|
+
// Script starts with obfuscator pattern
|
|
49
|
+
$start1 at 0 or
|
|
50
|
+
$start2 at 0 or
|
|
51
|
+
|
|
52
|
+
// High density of obfuscated function calls
|
|
53
|
+
(#pattern1 + #pattern2) > (filesize \ 200) or
|
|
54
|
+
#pattern3 > 1 or
|
|
55
|
+
|
|
56
|
+
// Multiple obfuscator code patterns
|
|
57
|
+
3 of ($code*)
|
|
58
|
+
)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
rule MAL_JS_SocGholish_Dropper
|
|
62
|
+
{
|
|
63
|
+
meta:
|
|
64
|
+
description = "Detects SocGholish fake update JavaScript dropper via ActiveX and bracket notation patterns"
|
|
65
|
+
author = "Nils Kuhnert (adapted)"
|
|
66
|
+
reference = "https://github.com/imp0rtp3/js-yara-rules"
|
|
67
|
+
date = "2021-03-29"
|
|
68
|
+
modified = "2025-01-30"
|
|
69
|
+
hash1 = "7ccbdcde5a9b30f8b2b866a5ca173063dec7bc92034e7cf10e3eebff017f3c23"
|
|
70
|
+
score = 85
|
|
71
|
+
|
|
72
|
+
strings:
|
|
73
|
+
// Must start with try block (SocGholish signature)
|
|
74
|
+
// Note: Short string, but position-anchored in condition
|
|
75
|
+
$try_block = "try{" ascii
|
|
76
|
+
|
|
77
|
+
// ActiveX object creation (Windows-specific)
|
|
78
|
+
$ax1 = "new ActiveXObject('Scripting.FileSystemObject');" ascii
|
|
79
|
+
$ax2 = "new ActiveXObject('MSXML2.XMLHTTP')" ascii
|
|
80
|
+
|
|
81
|
+
// Bracket notation to evade detection
|
|
82
|
+
$brack1 = "['DeleteFile']" ascii
|
|
83
|
+
$brack2 = "['WScript']['ScriptFullName']" ascii
|
|
84
|
+
$brack3 = "['WScript']['Sleep'](1000)" ascii
|
|
85
|
+
$brack4 = "this['eval']" ascii
|
|
86
|
+
$brack5 = "String['fromCharCode']" ascii
|
|
87
|
+
|
|
88
|
+
// Magic numbers used in decoding
|
|
89
|
+
$magic1 = "2), 16)," ascii
|
|
90
|
+
$magic2 = "= 103," ascii
|
|
91
|
+
$magic3 = "'00000000'" ascii
|
|
92
|
+
|
|
93
|
+
condition:
|
|
94
|
+
// SocGholish starts with "try{" block
|
|
95
|
+
$try_block in (0..10) and
|
|
96
|
+
|
|
97
|
+
// Typical size range for SocGholish dropper
|
|
98
|
+
filesize > 3KB and filesize < 5KB and
|
|
99
|
+
|
|
100
|
+
// Need most of these patterns
|
|
101
|
+
8 of ($ax*, $brack*, $magic*)
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
rule SUSP_JS_Inject_ScriptLoader
|
|
105
|
+
{
|
|
106
|
+
meta:
|
|
107
|
+
description = "Detects JavaScript injection patterns that load external scripts"
|
|
108
|
+
author = "Josh Trombley (adapted)"
|
|
109
|
+
reference = "https://github.com/imp0rtp3/js-yara-rules"
|
|
110
|
+
date = "2021-09-02"
|
|
111
|
+
modified = "2025-01-30"
|
|
112
|
+
score = 55
|
|
113
|
+
|
|
114
|
+
strings:
|
|
115
|
+
// Dynamic script element creation
|
|
116
|
+
$create = "document.createElement('script')" ascii
|
|
117
|
+
$type = "type = 'text/javascript'" ascii nocase
|
|
118
|
+
|
|
119
|
+
// DOM injection
|
|
120
|
+
$get_scripts = "document.getElementsByTagName('script')" ascii
|
|
121
|
+
$insert = ".parentNode.insertBefore(" ascii
|
|
122
|
+
|
|
123
|
+
// Decoding patterns
|
|
124
|
+
$atob = "=window.atob(" ascii
|
|
125
|
+
$regex = "new RegExp(" ascii
|
|
126
|
+
|
|
127
|
+
condition:
|
|
128
|
+
filesize < 500KB and
|
|
129
|
+
all of them
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
rule SUSP_JS_Base64Encoded_Payload
|
|
133
|
+
{
|
|
134
|
+
meta:
|
|
135
|
+
description = "Detects JavaScript with base64-encoded payloads commonly used in injection attacks"
|
|
136
|
+
author = "Josh Trombley (adapted)"
|
|
137
|
+
reference = "https://github.com/imp0rtp3/js-yara-rules"
|
|
138
|
+
date = "2021-09-02"
|
|
139
|
+
modified = "2025-01-30"
|
|
140
|
+
score = 50
|
|
141
|
+
|
|
142
|
+
strings:
|
|
143
|
+
// Base64 strings commonly found in SocGholish injections
|
|
144
|
+
// These decode to browser detection/injection strings
|
|
145
|
+
$b64_referrer = "cmVmZXJyZXI=" ascii // "referrer"
|
|
146
|
+
$b64_useragent = "dXNlckFnZW50" ascii // "userAgent"
|
|
147
|
+
$b64_localStorage = "bG9jYWxTdG9yYWdl" ascii // "localStorage"
|
|
148
|
+
$b64_windows = "V2luZG93cw==" ascii // "Windows"
|
|
149
|
+
$b64_href = "aHJlZg==" ascii // "href"
|
|
150
|
+
$b64_android = "QW5kcm9pZA==" ascii // "Android"
|
|
151
|
+
|
|
152
|
+
condition:
|
|
153
|
+
filesize < 500KB and
|
|
154
|
+
4 of them
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
rule SUSP_JS_EvalDecode_Chain
|
|
158
|
+
{
|
|
159
|
+
meta:
|
|
160
|
+
description = "Detects eval + decode chains commonly used in JavaScript malware"
|
|
161
|
+
author = "Trail of Bits"
|
|
162
|
+
reference = "https://blog.malwarebytes.com/threat-analysis/2020/10/kraken-attack-uses-eval-to-execute-javascript/"
|
|
163
|
+
date = "2025-01-30"
|
|
164
|
+
score = 65
|
|
165
|
+
|
|
166
|
+
strings:
|
|
167
|
+
// eval + atob (base64 decode)
|
|
168
|
+
$eval_atob = /eval\s*\(\s*atob\s*\(/ nocase
|
|
169
|
+
|
|
170
|
+
// eval + fromCharCode
|
|
171
|
+
$eval_charcode = /eval\s*\(\s*String\.fromCharCode/ nocase
|
|
172
|
+
|
|
173
|
+
// eval + unescape
|
|
174
|
+
$eval_unescape = /eval\s*\(\s*unescape\s*\(/ nocase
|
|
175
|
+
|
|
176
|
+
// Function constructor (alternative to eval)
|
|
177
|
+
$func_constructor = /Function\s*\(\s*['"]return/ nocase
|
|
178
|
+
|
|
179
|
+
// Multiple decode stages
|
|
180
|
+
$multi_decode = /atob\s*\([^)]+atob\s*\(/ nocase
|
|
181
|
+
|
|
182
|
+
condition:
|
|
183
|
+
filesize < 1MB and
|
|
184
|
+
2 of them
|
|
185
|
+
}
|