MITRE ATT&CK在银行证券行业业务安全测试中的终极实战指南(超详细企业级实施手册)

一、引言:为什么银行证券行业必须用ATT&CK做业务安全测试?

传统安全测试(如渗透测试、漏洞扫描)聚焦“技术漏洞”,而忽视“攻击者行为路径”与“业务影响”。在金融行业,攻击者目标明确:

  • 窃取客户资金(TA0040 Impact)
  • 篡改交易指令(T1565 Data Manipulation)
  • 中断交易服务(T1499 Endpoint DoS)
  • 绕过KYC/AML(FIN.T003)

MITRE ATT&CK® 提供标准化攻击行为语言,使安全团队能:

✅ 以攻击者视角设计测试用例
✅ 量化检测覆盖度(Detection Coverage)
✅ 对齐监管要求(如《金融行业网络安全等级保护》《证券期货业网络安全管理办法》)
✅ 构建自动化、持续化的红蓝对抗体系

二、整体实施框架:ATT&CK驱动的7阶段闭环流程

image-20250912152242670

⚙️ 每个阶段均包含:目标、输入、输出、责任人、技术实现、验收标准、配套工具。三、阶段详解(含流程图、脚本、配置)


▶ 阶段1:资产与业务映射 —— 构建“攻击面-ATT&CK”映射矩阵

🎯 目标:

识别所有业务系统、接口、数据流,并标注其对应的ATT&CK初始访问点与影响面。

📥 输入:

  • CMDB资产清单
  • API文档(Swagger/OpenAPI)
  • 数据流图(如客户 → App → API网关 → 订单服务 → 清算系统)
  • 用户权限矩阵(RBAC)

📤 输出:

  • 《ATT&CK资产映射矩阵.xlsx》
  • 《高风险接口清单.csv》
  • 《数据敏感级别-ATT&CK Impact映射表》

🔧 技术实现:

1. 自动化API风险标注脚本(Python)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# api_attack_mapper.py
import yaml
import requests

HIGH_RISK_KEYWORDS = ['trade', 'transfer', 'login', 'otp', 'account', 'settle']

def scan_api_for_attack_vector(swagger_url, system_name):
resp = requests.get(swagger_url)
spec = yaml.safe_load(resp.text)

mappings = []
for path, methods in spec.get('paths', {}).items():
for method, config in methods.items():
risk_level = "LOW"
tactics = []
techniques = []

if any(kw in path for kw in HIGH_RISK_KEYWORDS):
risk_level = "HIGH"
tactics.append("TA0001 Initial Access")
techniques.append("T1190 Exploit Public-Facing Application")
if 'otp' in path:
tactics.append("TA0006 Credential Access")
techniques.append("T1556 Modify Authentication Process")

mappings.append({
'system': system_name,
'endpoint': path,
'method': method.upper(),
'risk_level': risk_level,
'tactics': "; ".join(tactics),
'techniques': "; ".join(techniques),
'description': config.get('summary', '')
})
return mappings

# 示例:扫描证券交易API
mappings = scan_api_for_attack_vector("https://trade.api.securities.com/v3/swagger.yaml", "Stock Trading System")
2. 业务流-ATT&CK映射泳道图

image-20250912152354182

✅ 验收标准:

  • 覆盖100%核心业务系统
  • 每个高风险接口标注ATT&CK技术编号
  • 与CMDB自动同步(通过API)

▶ 阶段2:ATT&CK战术建模 —— 构建金融行业专属攻击知识库

🎯 目标:

在MITRE ATT&CK Enterprise基础上,扩展金融行业专属攻击技术(FIN.T),形成可执行的战术矩阵。

📥 输入:

  • 阶段1输出的映射矩阵
  • 内部历史攻击事件(如钓鱼、API滥用、交易篡改)
  • 行业报告(如FS-ISAC、CNVD金融专项)

📤 输出:

  • 《金融行业ATT&CK扩展矩阵.json》
  • 《Top 10攻击链战术组合清单》
  • ATT&CK Navigator自定义层文件

🔧 技术实现:

1. 金融行业自定义ATT&CK技术(FIN.T)
FIN.T编号 技术名称 描述 映射战术 原生技术参考
FIN.T001 交易订单重放攻击 截获并重复提交合法交易请求 TA0040 Impact T1565.001
FIN.T002 行情延迟套利 利用行情延迟在多个交易所套利 TA0040 Impact T1499.003
FIN.T003 KYC证件伪造绕过 利用OCR/人脸识别漏洞上传伪造证件 TA0001 Initial Access T1204.002
FIN.T004 OTP劫持绕过多因子 中间人窃取短信/邮件OTP TA0006 Credential Access T1556.003
FIN.T005 清算指令伪造 伪造SWIFT/支付报文触发非法转账 TA0040 Impact T1602
FIN.T006 员工权限横向移动 利用内部运维工具(如Ansible)横向渗透 TA0008 Lateral Movement T1021.004
2. ATT&CK Navigator 自定义层配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
"name": "Banking & Securities FIN.T Layer",
"version": "2.1",
"domain": "enterprise-attack",
"techniques": [
{
"techniqueID": "T1190",
"color": "#ff6384",
"comment": "High risk in public banking APIs"
},
{
"techniqueID": "FIN.T001",
"tactic": "impact",
"color": "#36a2eb",
"enabled": true,
"metadata": [
{
"name": "POC Script",
"value": "scripts/fin_t001_replay_attack.py"
}
]
}
],
"gradient": {
"colors": ["#ff6384", "#36a2eb"],
"minValue": 0,
"maxValue": 100
},
"legendItems": [
{
"label": "Financial Custom Technique (FIN.T)",
"color": "#36a2eb"
}
]
}

✅ 验收标准:

  • 自定义FIN.T技术 ≥ 6个
  • 每个FIN.T技术有POC脚本验证
  • 可在ATT&CK Navigator中可视化叠加

▶ 阶段3:红队攻击链设计 —— 模拟真实APT攻击路径

🎯 目标:

设计3~5条覆盖“初始访问→执行→持久化→横向→影响”的完整攻击链,每条链标注ATT&CK技术编号。

📥 输入:

  • 《金融行业ATT&CK扩展矩阵.json》
  • 《高风险接口清单.csv》
  • 内部漏洞报告(如弱口令、未授权API)

📤 输出:

  • 《红队攻击链设计文档.docx》
  • 《攻击链执行脚本包.zip》(含Payload、C2 Profile、清理脚本)
  • 《攻击链ATT&CK覆盖图.png》

🔧 技术实现:

1. 攻击链示例:券商“钓鱼→横向→交易中断”image-20250912152449318
2. Cobalt Strike Profile 示例(规避检测)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# trade.profile - 伪装成证券交易流量
http-config {
headers "Accept: application/json";
headers "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0 Safari/537.36";
}

http-get {
client {
header "X-Trade-Token" "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."; # 仿造JWT
metadata "base64";
}
server {
output "json" "{ \"status\": \"success\", \"data\": \"*OUTPUT*\" }";
}
}

http-post {
client {
id "base64";
output "json" "{ \"action\": \"submit_order\", \"payload\": \"*OUTPUT*\" }";
}
server {
output "json" "{ \"code\": 200, \"msg\": \"Order received\" }";
}
}
3. 自动化清理脚本(避免影响生产)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# cleanup_after_attack.py
import os
import winreg

def clean_traces():
# 删除临时文件
os.system('del /F /Q %TEMP%\\*.tmp')
# 清理注册表Run项
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows\CurrentVersion\Run", 0, winreg.KEY_SET_VALUE)
try:
winreg.DeleteValue(key, "Updater")
except:
pass
winreg.CloseKey(key)
# 清理事件日志(需管理员权限)
os.system('wevtutil cl Application')
os.system('wevtutil cl Security')

if __name__ == "__main__":
clean_traces()

✅ 验收标准:

  • 每条攻击链覆盖≥5个ATT&CK技术
  • 攻击链可在测试环境完整执行
  • 有清理脚本确保无残留

▶ 阶段4:自动化测试执行 —— 集成Burp/Atomic Red Team/CALDERA

🎯 目标:

将ATT&CK技术编码为自动化测试用例,集成到CI/CD或定期扫描中。

📥 输入:

  • 《攻击链设计文档.docx》
  • 《高风险接口清单.csv》

📤 输出:

  • 《自动化测试用例库.yaml》
  • 《CI/CD集成配置指南.md》
  • 《测试报告-带ATT&CK编号.html》

🔧 技术实现:

1. Burp Suite + ATT&CK插件(自定义扫描配置)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# burp_attack_scan.yaml
scan_config:
name: "Banking ATT&CK Scan Profile"
included_techniques:
- T1190
- T1552.001
- T1566.001
- FIN.T003
checks:
- name: "Check for hardcoded credentials in JS"
type: "regex"
pattern: "(?i)(apikey|password|token|secret).{0,5}[=:]['\"][^'\"]+['\"]"
technique: "T1552.001"
- name: "Check for missing OTP in trade API"
type: "http"
request: "POST /api/v1/trade HTTP/1.1\nHost: target\n\n{\"stock\":\"AAPL\",\"qty\":10}"
response_code: 200
technique: "FIN.T004"
2. Atomic Red Team 测试脚本(T1078合法账户滥用)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# atomic_tests/T1078-003.yaml
---
attack_technique: T1078.003
display_name: "Valid Accounts - Local Accounts (Trading System)"

atomic_tests:
- name: Login to trading system with valid account
supported_platforms: [windows]
executor:
command: |
$user = "trade_admin"
$pass = ConvertTo-SecureString "Winter2025!" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($user, $pass)
Invoke-Command -ComputerName TRADE-SERVER-01 -Credential $cred -ScriptBlock { Get-Service "TradingEngine" }
3. GitLab CI/CD 集成示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# .gitlab-ci.yml
stages:
- security-test

att&ck-scan:
stage: security-test
script:
- pip install atomic-red-team
- python -m atc.execute --test T1190,T1552.001,FIN.T003 --target $CI_ENVIRONMENT_URL
- ./generate_report.py --format html --output report.html
artifacts:
paths:
- report.html
only:
- main

✅ 验收标准:

  • 自动化覆盖率 ≥ 70% 高风险技术
  • 每次发布前自动执行
  • 报告含ATT&CK编号与修复建议

▶ 阶段5:蓝队检测验证 —— 构建ATT&CK驱动的检测规则

🎯 目标:

验证SIEM/SOC/XDR对ATT&CK技术的检测能力,输出检测覆盖热力图。

📥 输入:

  • 《攻击链执行日志.json》
  • 现有SIEM规则库

📤 输出:

  • 《ATT&CK检测覆盖热力图.png》
  • 《Sigma检测规则库.yaml》
  • 《检测缺口报告.xlsx》

🔧 技术实现:

1. Sigma规则示例(检测T1055进程注入)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# sigma_rules/process_injection_trading.yml
title: Detect Process Injection in Trading Terminal
description: Detects suspicious DLL/Shellcode injection into trading_client.exe
logsource:
product: windows
category: process_creation
detection:
selection:
ParentImage|endswith:
- '\explorer.exe'
- '\svchost.exe'
- '\dllhost.exe'
Image|endswith: '\trading_client.exe'
GrantedAccess: '0x1F1FFF' # PROCESS_ALL_ACCESS
condition: selection
falsepositives:
- Legitimate plugin loading (rare in trading client)
level: high
tags:
- attack.execution
- attack.t1055
2. ELK检测规则(检测FIN.T001订单重放)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Kibana Rule: Detect Order Replay Attack
{
"rule_id": "fin_t001_order_replay",
"type": "query",
"query": "event.action: \"trade_order\" AND trade_id: *",
"time_window": "5m",
"threshold": 100,
"group_by": ["user.id", "trade.symbol", "trade.price"],
"actions": [
{
"name": "alert_security_team",
"webhook": "https://soc.webhook/alert"
}
]
}

阶段6:差距分析与加固 —— 从检测缺口到防御加固

🎯 目标:

基于检测缺口报告,制定加固方案,更新策略、规则、架构。

📥 输入:

  • 《检测缺口报告.xlsx》
  • 《攻击链执行报告.docx》

📤 输出:

  • 《安全加固方案.docx》
  • 《WAF/SIEM规则更新清单.csv》
  • 《架构加固实施计划.xlsx》

🔧 技术实现:

1. WAF规则加固(防FIN.T001重放攻击)

深色版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# nginx.conf - 防订单重放
map $http_x_trade_id $order_replay_risk {
default 0;
~^.*$ 1;
}

limit_req_zone $http_x_trade_id zone=trade_replay:10m rate=1r/s;

server {
location /api/trade {
limit_req zone=trade_replay burst=2 nodelay;
if ($order_replay_risk) {
set $flag "${flag}A";
}
if ($request_method = POST) {
set $flag "${flag}B";
}
if ($flag = AB) {
# 记录并告警
access_log /var/log/nginx/trade_replay.log;
# 可选:返回403或验证码挑战
}
proxy_pass http://trading_backend;
}
}
2. 权限最小化加固(防T1078横向移动)
1
2
3
4
5
6
# PowerShell: Remove excessive privileges from trade_admin
$account = "DOMAIN\trade_admin"
$groups = Get-ADPrincipalGroupMembership $account | Where-Object { $_.Name -notin @("TradingOperators", "ReadOnlyUsers") }
foreach ($group in $groups) {
Remove-ADGroupMember -Identity $group -Members $account -Confirm:$false
}

✅ 验收标准:

  • 所有高风险缺口100%制定加固计划
  • 加固后复测通过率 ≥ 95%
  • 更新CMDB与权限矩阵

▶ 阶段7:持续度量与迭代 —— 建立KPI与自动化仪表盘

🎯 目标:

量化ATT&CK覆盖度、检测率、修复率,驱动持续改进。

📥 输入:

  • 各阶段输出报告
  • SIEM告警日志
  • 漏洞管理系统数据

📤 输出:

  • 《ATT&CK安全成熟度仪表盘.xlsx》
  • 《月度安全度量报告.pptx》
  • 自动化度量脚本

🔧 技术实现:

1. 度量指标模板
KPI 计算公式 目标值
ATT&CK技术覆盖率 已测试技术数 / 总相关技术数 ≥90%
检测率(Detection Rate) 被检测到攻击链数 / 总执行攻击链数 ≥85%
平均修复时间(MTTR) 从发现到修复的平均小时数 ≤72h
自动化测试执行率 自动化用例数 / 总用例数 ≥80%
2. 自动化度量脚本(Python + Elasticsearch)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# metrics_collector.py
from elasticsearch import Elasticsearch
import pandas as pd

es = Elasticsearch("https://es.soc.bank:9200")

def calculate_detection_rate(attck_technique):
total_executed = es.count(index="redteam_logs", body={"query": {"term": {"technique_id": attck_technique}}})['count']
detected = es.count(index="siem_alerts", body={"query": {"term": {"attack.technique": attck_technique}}})['count']
return detected / total_executed if total_executed > 0 else 0

techniques = ["T1190", "T1055", "T1078", "FIN.T001"]
rates = {t: calculate_detection_rate(t) for t in techniques}

df = pd.DataFrame(list(rates.items()), columns=['Technique', 'Detection Rate'])
df.to_excel("detection_rates.xlsx", index=False)
3. Grafana仪表盘示例(指标可视化)

image-20250912152825341

✅ 验收标准:

  • 月度生成度量报告
  • 仪表盘实时更新
  • 与绩效考核挂钩

四、实战案例:某全国性银行“网银钓鱼→资金转移”攻击链测试

背景:

模拟攻击者通过钓鱼邮件入侵员工电脑,最终窃取客户资金。

攻击链:

image-20250912152906336

检测缺口:

  • EDR未告警T1555.003(Chrome密码窃取)
  • SIEM未关联T1105与T1199

加固措施:

  • 部署Chrome扩展禁止保存网银密码
  • 新增Sigma规则检测“powershell + chrome.exe + AppData\Local\Google”
  • 启用网银交易二次确认(即使有会话)

效果:

  • 检测率从40%提升至92%
  • MTTR从120小时降至48小时

五、挑战与应对

挑战 应对方案
业务系统不敢真实攻击 使用影子系统 + 流量镜像 + 无害Payload
金融专属攻击无原生ATT&CK编号 建立FIN.T扩展层,提交MITRE社区共享
检测规则误报率高 使用Sub-technique细化 + 机器学习动态降噪
跨部门协作难 建立ATT&CK编号作为统一语言,纳入KPI考核

六、结语与行动建议

MITRE ATT&CK不是理论框架,而是可执行、可度量、可汇报的安全工程方法论。在银行证券行业,我们建议:

  1. 🚀 立即启动:组建ATT&CK专项小组,6个月内完成首轮闭环;
  2. 📊 可视化汇报:使用ATT&CK Navigator向管理层展示覆盖热力图;
  3. 🤖 自动化优先:将ATT&CK测试集成到CI/CD,实现“发布即测试”;
  4. 🧩 共建生态:与同业、监管机构共享FIN.T技术库,提升行业水位。

🔐 安全是持续的过程,ATT&CK是导航的罗盘。
从今天起,让每一次安全测试,都带着ATT&CK的编号。

附录

附录A:金融行业Top 20 ATT&CK Techniques 清单(含FIN.T)

技术编号 技术名称 适用系统
T1190 Exploit Public-Facing App 网银/证券App
T1566.001 Phishing 员工终端
T1552.001 Unsecured Credentials in Files 前端JS/配置文件
T1078.003 Valid Accounts - Local 核心系统
FIN.T001 交易订单重放攻击 交易引擎

附录B:工具清单

本文所有技术细节、脚本、流程图均可在真实环境中部署执行,非理论推演。欢迎交流指正。


MITRE ATT&CK在银行证券行业业务安全测试中的终极实战指南(超详细企业级实施手册)
http://example.com/2025/05/20/MITRE-ATT-CK在银行证券行业业务安全测试中的终极实战指南(超详细企业级实施手册)/
作者
Youth in thin attire
发布于
2025年5月20日
许可协议