investigating-insider-threat-indicators

调查内部威胁(Insider Threat)指标,包括数据渗漏(Data Exfiltration)尝试、未授权访问模式、 策略违规和离职前行为,结合 SIEM 分析、DLP 告警和 HR 数据关联进行调查。 适用于 SOC 团队收到 HR 内部威胁转介、检测到员工异常数据移动, 或需要为潜在内部威胁建立调查时间线时。

9 stars

Best use case

investigating-insider-threat-indicators is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

调查内部威胁(Insider Threat)指标,包括数据渗漏(Data Exfiltration)尝试、未授权访问模式、 策略违规和离职前行为,结合 SIEM 分析、DLP 告警和 HR 数据关联进行调查。 适用于 SOC 团队收到 HR 内部威胁转介、检测到员工异常数据移动, 或需要为潜在内部威胁建立调查时间线时。

Teams using investigating-insider-threat-indicators should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/investigating-insider-threat-indicators/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/investigating-insider-threat-indicators/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/investigating-insider-threat-indicators/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How investigating-insider-threat-indicators Compares

Feature / Agentinvestigating-insider-threat-indicatorsStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

调查内部威胁(Insider Threat)指标,包括数据渗漏(Data Exfiltration)尝试、未授权访问模式、 策略违规和离职前行为,结合 SIEM 分析、DLP 告警和 HR 数据关联进行调查。 适用于 SOC 团队收到 HR 内部威胁转介、检测到员工异常数据移动, 或需要为潜在内部威胁建立调查时间线时。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 调查内部威胁指标

## 适用场景

以下情况使用本技能:
- HR 在离职员工的通知期内转介监控
- DLP 告警显示批量数据下载或传输到个人存储
- UEBA(用户和实体行为分析)检测到与同类员工基线显著偏离的异常访问模式
- 管理层报告员工在职责范围之外访问敏感数据

**不适用于**未获得适当法律授权的情况——内部威胁调查必须在监控开始前与 HR、法务和隐私团队协调。

## 前置条件

- 法律授权和记录调查理由的 HR 转介
- 配置了 DLP、终端、邮件、代理和认证日志源的 SIEM
- 数据丢失防护(DLP)系统(Microsoft Purview、Symantec、Forcepoint),含策略告警
- 终端监控能力(带 USB/可移动媒体日志的 EDR)
- 提供就业状态、通知日期和访问权限的 HR 数据源
- 用于证据保全的监管链程序

## 工作流程

### 步骤 1:确立调查范围和法律授权

开始任何监控前,确保获得适当授权:

```
内部威胁调查授权
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
案例 ID:          IT-2024-0089
调查对象:         [员工姓名] — [部门]
授权人:           [CISO / 总法律顾问]
转介来源:         HR — 员工提交辞职,两周通知期
理由:             员工可访问商业机密和客户 PII
范围:             邮件、文件访问、USB、云存储、打印
持续时间:         2024-03-15 至 2024-03-29(通知期)
隐私审查:         已完成——符合可接受使用策略
```

### 步骤 2:从 SIEM 构建活动时间线

查询调查对象的综合活动:

```spl
index=* (user="jsmith" OR src_user="jsmith" OR sender="jsmith@company.com"
         OR SubjectUserName="jsmith")
earliest="2024-03-01" latest=now
| eval event_category = case(
    sourcetype LIKE "%dlp%", "DLP",
    sourcetype LIKE "%proxy%", "Web 访问",
    sourcetype LIKE "%email%", "邮件",
    sourcetype LIKE "%WinEventLog%", "终端",
    sourcetype LIKE "%o365%", "云",
    sourcetype LIKE "%vpn%", "VPN",
    sourcetype LIKE "%badge%", "物理访问",
    1=1, sourcetype
  )
| stats count by event_category, sourcetype, _time
| timechart span=1d count by event_category
```

### 步骤 3:检测数据渗漏指标

**批量文件下载(SharePoint/OneDrive):**

```spl
index=o365 sourcetype="o365:management:activity" Operation IN ("FileDownloaded", "FileSynced")
UserId="jsmith@company.com" earliest=-30d
| stats count AS downloads, sum(eval(if(isnotnull(FileSize), FileSize, 0))) AS total_bytes,
        dc(SourceFileName) AS unique_files
  by UserId, SiteUrl, _time
| bin _time span=1d
| eval total_gb = round(total_bytes / 1073741824, 2)
| where downloads > 50 OR total_gb > 1
| sort - total_gb
```

**USB/可移动媒体使用:**

```spl
index=sysmon EventCode=1 Computer="WORKSTATION-JSMITH"
(CommandLine="*removable*" OR CommandLine="*usb*"
 OR Image="*\\xcopy*" OR Image="*\\robocopy*")
| table _time, Computer, User, Image, CommandLine
| append [
    search index=endpoint sourcetype="endpoint:device_connect"
    user="jsmith" device_type="removable"
    | table _time, user, device_name, device_serial, action
  ]
| sort _time
```

**基于邮件的渗漏:**

```spl
index=email sourcetype="o365:messageTrace"
SenderAddress="jsmith@company.com"
| eval is_external = if(match(RecipientAddress, "@company\.com$"), 0, 1)
| eval has_attachment = if(isnotnull(AttachmentName), 1, 0)
| stats count AS total_emails,
        sum(is_external) AS external_emails,
        sum(has_attachment) AS with_attachments,
        sum(eval(if(is_external=1 AND has_attachment=1, 1, 0))) AS external_with_attach,
        sum(Size) AS total_size_bytes
  by SenderAddress
| eval external_attach_pct = round(external_with_attach / total_emails * 100, 1)
| eval total_size_mb = round(total_size_bytes / 1048576, 1)
```

**云存储上传检测:**

```spl
index=proxy user="jsmith"
(dest IN ("*dropbox.com", "*drive.google.com", "*onedrive.live.com",
          "*box.com", "*wetransfer.com", "*mega.nz")
 OR category="cloud-storage")
http_method=POST
| stats count AS uploads, sum(bytes_out) AS total_uploaded
  by user, dest, category
| eval uploaded_mb = round(total_uploaded / 1048576, 1)
| sort - uploaded_mb
```

### 步骤 4:分析访问模式异常

**访问正常职责范围之外的敏感系统:**

```spl
index=auth user="jsmith" action=success earliest=-30d
| stats dc(app) AS unique_apps, values(app) AS apps_accessed by user
| join user type=left [
    | inputlookup role_app_mapping.csv
    | search role="Financial Analyst"
    | stats values(authorized_app) AS authorized_apps by role
    | eval user="jsmith"
  ]
| eval unauthorized = mvfilter(NOT match(apps_accessed, mvjoin(authorized_apps, "|")))
| where isnotnull(unauthorized)
| table user, unauthorized, authorized_apps
```

**下班时间和周末活动:**

```spl
index=* user="jsmith" earliest=-30d
| eval hour = tonumber(strftime(_time, "%H"))
| eval is_offhours = if(hour < 7 OR hour > 19, 1, 0)
| eval day = strftime(_time, "%A")
| eval is_weekend = if(day IN ("Saturday", "Sunday"), 1, 0)
| stats count AS total, sum(is_offhours) AS offhours, sum(is_weekend) AS weekend by user
| eval offhours_pct = round(offhours / total * 100, 1)
| eval weekend_pct = round(weekend / total * 100, 1)
```

### 步骤 5:与 HR 和物理安全数据关联

**将活动与辞职时间线进行比较:**

```spl
| makeresults
| eval user="jsmith",
       resignation_date="2024-03-15",
       last_day="2024-03-29",
       access_revocation="2024-03-29 17:00"
| join user [
    search index=* user="jsmith" earliest=-90d
    | bin _time span=1d
    | stats count AS daily_events, dc(sourcetype) AS data_sources by user, _time
  ]
| eval phase = case(
    _time < relative_time(now(), "-30d"), "正常(辞职前)",
    _time >= strptime(resignation_date, "%Y-%m-%d") AND _time <= strptime(last_day, "%Y-%m-%d"),
      "通知期",
    1=1, "过渡期"
  )
| chart avg(daily_events) AS avg_events by phase
```

**门禁/物理访问关联:**

```spl
index=badge_access employee_id="jsmith" earliest=-30d
| stats count AS badge_events, values(door_name) AS doors_accessed,
        earliest(_time) AS first_badge, latest(_time) AS last_badge by employee_id
| eval areas = mvcount(doors_accessed)
```

### 步骤 6:保全证据并记录发现

维护所有收集证据的监管链:

```python
import hashlib
import json
from datetime import datetime

evidence_log = {
    "case_id": "IT-2024-0089",
    "investigator": "soc_analyst_tier2",
    "collection_time": datetime.utcnow().isoformat(),
    "items": [
        {
            "item_id": "EV-001",
            "description": "Splunk 导出——所有用户活动 2024-03-01 至 2024-03-15",
            "file": "jsmith_activity_export.csv",
            "sha256": hashlib.sha256(open("jsmith_activity_export.csv", "rb").read()).hexdigest(),
            "collected_by": "analyst_doe",
            "collection_method": "Splunk 搜索导出"
        },
        {
            "item_id": "EV-002",
            "description": "DLP 告警详情——47 次策略违规",
            "file": "dlp_alerts_jsmith.json",
            "sha256": hashlib.sha256(open("dlp_alerts_jsmith.json", "rb").read()).hexdigest(),
            "collected_by": "analyst_doe",
            "collection_method": "Microsoft Purview 导出"
        }
    ]
}

with open(f"evidence_log_{evidence_log['case_id']}.json", "w") as f:
    json.dump(evidence_log, f, indent=2)
```

## 核心概念

| 术语 | 定义 |
|------|------|
| **内部威胁(Insider Threat)** | 拥有合法访问权限的个人出于未授权目的滥用该权限带来的风险 |
| **数据渗漏(Data Exfiltration)** | 通过邮件、USB、云或其他渠道将数据未经授权地传输到组织外部 |
| **DLP** | 数据丢失防护(Data Loss Prevention)——根据内容策略监控和阻止未授权数据传输的技术 |
| **通知期监控(Notice Period Monitoring)** | 在员工辞职到离职期间对其进行的强化监控 |
| **监管链(Chain of Custody)** | 确保取证完整性的文档化证据处理程序,用于潜在的法律诉讼 |
| **知悉必要原则违规(Need-to-Know Violation)** | 访问超出员工职责或当前任务所需的信息或系统 |

## 工具与系统

- **Microsoft Purview(前身为 DLP)**:数据分类和丢失防护平台,监控终端、邮件和云存储
- **Splunk UBA**:用户行为分析,通过基于 ML 的异常检测识别内部威胁模式
- **Forcepoint Insider Threat**:专用内部威胁检测平台,含行为指标和风险评分
- **DTEX InTERCEPT**:基于终端的内部威胁检测,专注于用户活动元数据收集
- **Code42 Incydr**:数据风险检测平台,专注于跨终端和云的文件渗漏监控

## 常见场景

- **离职员工**:在两周通知期内批量下载客户列表和产品路线图
- **不满员工**:在负面绩效评估后,员工访问其职责范围之外的高管薪酬数据
- **承包商越权**:外部顾问访问合同范围之外的系统,下载源代码
- **账号滥用**:员工将凭据共享给未授权第三方用于竞争情报收集
- **蓄意破坏指标**:IT 管理员在离职前创建后门账号并修改系统配置

## 输出格式

```
内部威胁调查报告 — IT-2024-0089
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
对象:        jsmith(金融分析师,财务部)
期间:        2024-03-01 至 2024-03-15
状态:        员工于 2024-03-15 辞职,最后工作日 2024-03-29

主要发现:
  [高]   从 SharePoint 下载 3,847 个文件(12.4 GB)——同类平均值的 10 倍
  [高]   通知期内连接 USB 设备 14 次(上月 0 次)
  [高]   向个人 Gmail 发送 187 封带附件邮件
  [中]   通知期内下班时间活动增加 340%
  [中]   访问 HR 薪酬数据库 3 次(超出职责范围)

时间线:
  3 月 01-14 日:正常活动基线(平均每天 150 个事件)
  3 月 15 日:提交辞职(活动激增至 890 个事件)
  3 月 16-17 日:周末访问——2,100 次 SharePoint 下载
  3 月 18 日:首次连接 USB 设备,触发 DLP 告警

已收集证据:  4 项(SHA-256 已验证,监管链已记录)
建议:         建议立即撤销访问权限
               证据包已准备好供法务审查
```

Related Skills

tracking-threat-actor-infrastructure

9
from killvxk/cybersecurity-skills-zh

威胁行为者基础设施追踪涉及使用被动 DNS、证书透明度日志、Shodan/Censys 扫描、WHOIS 分析和网络指纹技术,对对手控制的 C2 服务器、钓鱼域名和暂存服务器等资产进行监控、映射和持续追踪

profiling-threat-actor-groups

9
from killvxk/cybersecurity-skills-zh

通过聚合 TTP 文档、历史活动数据、工具指纹和来自多个情报源的归因指标,为 APT 组织、犯罪组织和黑客活动组织开发全面的威胁行为者画像。适用于就行业特定威胁向管理层汇报、更新威胁模型假设,或针对特定对手优先部署防御控制措施。当涉及 MITRE ATT&CK 组织、Mandiant APT 画像、CrowdStrike 对手命名或行业特定威胁简报时激活。

performing-threat-modeling-with-owasp-threat-dragon

9
from killvxk/cybersecurity-skills-zh

使用 OWASP Threat Dragon 创建数据流图,运用 STRIDE 和 LINDDUN 方法论识别威胁,并生成威胁模型报告用于安全设计审查。

performing-threat-landscape-assessment-for-sector

9
from killvxk/cybersecurity-skills-zh

通过分析威胁行为者定向攻击模式、常见攻击向量和行业特定漏洞,开展行业特定威胁态势评估,为组织风险管理提供决策依据

performing-threat-intelligence-sharing-with-misp

9
from killvxk/cybersecurity-skills-zh

使用 PyMISP 在 MISP 平台上创建、丰富和共享威胁情报事件,包括 IOC 管理、情报源集成、STIX 导出及社区共享工作流

performing-threat-hunting-with-yara-rules

9
from killvxk/cybersecurity-skills-zh

使用 YARA 模式匹配规则在文件系统和内存转储中狩猎恶意软件、可疑文件和入侵指标。 涵盖规则编写、yara-python 扫描以及与威胁情报源的集成。

performing-threat-hunting-with-elastic-siem

9
from killvxk/cybersecurity-skills-zh

使用 KQL/EQL 查询、检测规则和 Timeline 调查在 Elastic Security SIEM 中执行主动威胁狩猎, 识别绕过自动检测的威胁。适用于 SOC 团队针对特定 ATT&CK 技术进行狩猎、调查异常行为, 或使用 Elasticsearch 和 Kibana Security 验证检测覆盖缺口。

performing-threat-emulation-with-atomic-red-team

9
from killvxk/cybersecurity-skills-zh

使用 atomic-operator Python 框架执行 Atomic Red Team 测试,进行 MITRE ATT&CK 技术验证。 从 YAML 原子测试加载测试定义、运行攻击模拟并验证检测覆盖率。适用于测试 SIEM 检测规则、 验证 EDR 覆盖率或开展紫队演练。

performing-insider-threat-investigation

9
from killvxk/cybersecurity-skills-zh

调查内部威胁事件,涉及滥用授权访问权限窃取数据、破坏系统或违反安全策略的员工、承包商或受信任合作伙伴。 结合数字取证、用户行为分析以及 HR/法务协调,构建基于证据的案例。适用于内部威胁调查、 员工数据盗窃、权限滥用、用户行为异常或内部威胁检测等请求场景。

performing-dark-web-monitoring-for-threats

9
from killvxk/cybersecurity-skills-zh

暗网威胁监控涉及系统性扫描 Tor 隐藏服务、地下论坛、粘贴站点和暗网市场,以识别针对组织的威胁,包括泄露凭据、数据泄露、威胁行为者讨论、漏洞利用工具和预谋攻击。

investigating-ransomware-attack-artifacts

9
from killvxk/cybersecurity-skills-zh

识别、收集和分析勒索软件攻击制品,以确定变种、初始访问向量、加密范围和恢复选项。

investigating-phishing-email-incident

9
from killvxk/cybersecurity-skills-zh

调查钓鱼(Phishing)邮件事件,从初始用户举报开始,经过邮件头分析、URL/附件引爆、 受影响用户识别和遏制行动,使用 Splunk、Microsoft Defender 和沙箱分析平台等 SOC 工具。 适用于收到的钓鱼邮件举报需要进行完整事件调查以确定范围和影响时。