mcpField
A
analyzing-malware-persistence-with-autoruns

analyzing-malware-persistence-with-autoruns

github.com/mukul975安全35.2k358 次安装8 周前更新
代码仓库

关于 analyzing-malware-persistence-with-autoruns

这是一项使用 Sysinternals Autoruns 和 Autorunsc 调查 Windows 恶意软件持久化的技能。内容涵盖扫描自启动位置、筛查签名条目、对比干净基线及检查文件信誉。

主要功能

  1. 01扫描 Windows 自启动位置
  2. 02标记未签名及可疑条目
  3. 03与基线结果进行比较
  4. 04通过 VirusTotal 检查哈希
  5. 05离线分析磁盘镜像

适用场景

  1. 01在事件响应中调查持久化
  2. 02发现新增的自启动机制
  3. 03验证针对持久化技术的监控覆盖

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill analyzing-malware-persistence-with-autoruns

安装后在 Claude Code 中输入/analyzing-malware-persistence-with-autoruns确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
assets/
template.md
references/
api-reference.md
standards.md
workflows.md
scripts/
agent.py

详细介绍

使用 Autoruns 分析恶意软件持久化

概述

Sysinternals Autoruns 可从 Windows 上数百个自动启动扩展点(ASEP)提取数据,扫描 18 个以上的类别,包括 Run/RunOnce 项、服务、计划任务、驱动程序、Winlogon 项、LSA 提供程序、打印监视器、WMI 订阅和 AppInit DLL。数字签名验证可筛除由 Microsoft 签名的项。比较功能通过基线差异识别新增的持久化机制。VirusTotal 集成可检查哈希信誉。使用 -z 标志进行离线分析,可检查取证磁盘映像。

适用场景

  • 调查需要使用 Autoruns 分析恶意软件持久化的安全事件时
  • 为此领域构建检测规则或威胁搜寻查询时
  • SOC 分析师需要针对这类分析制定结构化流程时
  • 验证针对相关攻击技术的安全监控覆盖范围时

前提条件

  • Sysinternals Autoruns(GUI)和 Autorunsc(CLI)
  • 目标系统上的管理员权限
  • 用于自动化分析的 Python 3.9+
  • 用于信誉检查的 VirusTotal API 密钥
  • 用于比较的干净基线导出文件

工作流

步骤 1:自动扫描持久化机制
#!/usr/bin/env python3
"""Automate Autoruns-based persistence analysis."""
import subprocess
import csv
import json
import sys


def scan_and_analyze(autorunsc_path="autorunsc64.exe", csv_path="scan.csv"):
    cmd = [autorunsc_path, "-a", "*", "-c", "-h", "-s", "-nobanner", "*"]
    result = subprocess.run(cmd, capture_output=True, text=True, timeout=600)
    with open(csv_path, 'w') as f:
        f.write(result.stdout)
    return parse_and_flag(csv_path)


def parse_and_flag(csv_path):
    suspicious = []
    with open(csv_path, 'r', errors='replace') as f:
        for row in csv.DictReader(f):
            reasons = []
            signer = row.get("Signer", "")
            if not signer or signer == "(Not verified)":
                reasons.append("Unsigned binary")
            if not row.get("Description") and not row.get("Company"):
                reasons.append("Missing metadata")
            path = row.get("Image Path", "").lower()
            for sp in ["\temp\\", "\appdata\local\temp", "\users\public\\"]:
                if sp in path:
                    reasons.append(f"Suspicious path")
            launch = row.get("Launch String", "").lower()
            for kw in ["powershell", "cmd /c", "wscript", "mshta", "regsvr32"]:
                if kw in launch:
                    reasons.append(f"LOLBin: {kw}")
            if reasons:
                row["reasons"] = reasons
                suspicious.append(row)
    return suspicious


if __name__ == "__main__":
    if len(sys.argv) > 1:
        results = parse_and_flag(sys.argv[1])
        print(f"[!] {len(results)} suspicious entries")
        for r in results:
            print(f"  {r.get('Entry','')} - {r.get('Image Path','')}")
            for reason in r.get('reasons', []):
                print(f"    - {reason}")

验证标准

  • 已扫描并编目所有 ASEP 类别
  • 已标记未签名的项以供调查
  • 已突出显示可疑路径和 LOLBin 启动字符串
  • 基线比较可识别新的持久化机制

参考资料

评论

支持 Markdown