开源威胁情报系统
1.opencti
OpenCTI is an open source platform allowing organizations to manage their cyber threat intelligence knowledge and observables. It has been created in order to structure, store, organize and visualize technical and non-technical information about cyber threats.
OpenCTI(Open Cyber Threat Intelligence Platform)是一个开源的网络威胁情报平台,旨在帮助组织集中化地收集、存储、组织、共享和可视化网络威胁情报数据。它基于图数据库模型,支持STIX 2(结构化威胁信息表达格式),并与多个情报源无缝集成。
1.1安装
opencti的安装方式分为手动安装和docker安装,其安装方法在官方网站已介绍十分全面,本文只记录相关踩坑部分。
mkdir -p /opt/opencti
cd /opt/opencti && git clone https://github.com/OpenCTI-Platform/docker.git platform
cd /opt/opencti && git clone https://github.com/OpenCTI-Platform/connectors.git connectors
注意事项:
- 使用docker安装需下载相关镜像,配置科学上网连接docker仓库
- 使用docker安装方式需要将rabbimtmq的端口映射至宿主机,同时需要在connecters中增加extra_hosts参数,rabbitmq:host-gateway
- 安装uuid,针对每一个connector使用uuid生成唯一的id
1.2概念
-
Observable(可观察对象): 网络或系统中可以直接观测到的技术性数据元素
例子:
- IP 地址:192.168.1.100
- 域名:malicious.com
- URL:http://evil.com/download.exe
- 文件哈希:e99a18c428cb38d5f260853678922e03
特点:可直接从日志、流量、终端数据中发现,是原始数据,不一定有情报意义
-
Indicator(攻击指标): 对威胁行为的预测性表述,基于Observable建立,有情报上下文
STIX2.1标准
例子:这个IP是APT28在2023年用来进行C2的服务器,如果发现该哈希文件,代表该机器可能被感染
内容通常包括:
- 一个匹配规则(STIX Pattern,例如:[ipv4-addr:value = ‘192.168.1.100’])
- 置信度(confidence)
- 有效时间段(valid_from, valid_until)
- 关联的威胁情报上下文(Threat Actor、Campaign、TTPs 等)
-
Artifacts:是指与威胁活动相关的原始数据或物理对象。这些对象通常代表了与攻击事件相关的实际文件、内存转储、镜像、日志文件等原始数据。
定义:在STIX2.1中,Artifact对象可以用于表示与某个特定事件或行为相关的原始数据或文件。
用途:Artifacts主要用于提供给安全分析人员或调查人员更深层次的原始数据,帮助他们了解威胁的实际样本或证据。它们可以用于存储病毒样本、木马文件、恶意脚本、内存快照等。
-
Infrastructure(基础设施),描述对攻击者来说关键的、可复用的技术资源或服务的对象
用途:这些资源被用来支持攻击活动,如C2(命令与控制)服务器、钓鱼网站、恶意DNS服务、匿名通信服务、加密货币矿池等,Infrastructure不一定是攻击的工具本身,而是攻击过程中用来支撑、传递或隐藏攻击行为的系统或服务
-
Sighting(目击),表示某个情报实体在现实世界中被观察到的证据
用途:不产生新的情报,而是对已有情报的支持或补充上下文
1.3api使用
使用的pycti版本需要和opencti平台版本保持一致,否则可能会存在bug
git clone https://github.com/OpenCTI-Platform/client-python.git
git checkout 6.5.9
sudo pip install . --proxy=http://127.0.0.1:2080
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pprint
from pycti import OpenCTIApiClient
API_ENDPOINT = "http://10.10.0.106:8080"
TOKEN = "715348f5-446b-4d30-bd09-3aa5154e5319"
def main():
api_client = OpenCTIApiClient(API_ENDPOINT, TOKEN)
iocs = api_client.indicator.list(
filters={
"mode": "and",
"filters": [
{
"key": "pattern",
"values": ["[ipv4-addr:value = '145.249.247.146']"],
"operator": "eq",
}
],
"filterGroups": [],
},
first=1000,
getAll=True,
)
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(iocs)
if __name__ == "__main__":
main()
2.misp
MISP(Open Source Threat Intelligence and Sharing Platform) software facilitates the exchange and sharing of threat intelligence, Indicators of Compromise (IoCs) about targeted malware and attacks, financial fraud or any intelligence within your community
MISP最初由比利时国防部的计算机应急响应团队(CIRCL)开发,目的是帮助政府和行业组织共享恶意软件指标(如IP地址、域名、哈希值等),以提升威胁检测能力。2011年,MISP作为内部工具开发,2012年首次公开发布,采用PHP+MySQL架构,支持基本的IoC(Indicators of Compromise)共享。随后引入开源社区,增加了对STIX的支持,引入事件(Events)和属性(Attributes)模型,支持Taxonomies(分类法)和Galaxies(星系),提供标准化威胁分类。现在misp可以快速与安全事件响应平台TheHive集成,也可以方便的将MISP的指标导入SIRP以作进一步分析
2.1安装
misp的安装方法有很多种,这里我们使用最简单的docker安装方式
git clone https://github.com/MISP/misp-docker.git
cp template.env .env # 定制化的修改.env文件
docker compose up -d
2.2概念
其实misp的相关使用方法及概念,在misp的标准文档中以后详细的说明,这里记录一下在使用misp时遇到的一些威胁情报中涉及的术语与名词
-
TLP信息共享分类标准
在威胁情报领域,TLP(Traffic Light Protocol)是一种广泛使用的信息共享分类标准,用于明确标注情报的传播范围和安全级别,确保敏感信息不被滥用或泄露。由CERT/CC(计算机应急响应组协调中心)制定,现由FIRST(国际安全事件响应团队论坛)维护,最新版本为TLP 2.0。
它用四种颜色标签定义情报的共享范围:
标签 含义 允许的共享范围 RED 仅限直接接收方使用 仅限指定个人小组,如会议中的参与者,禁止转发记录 AMBER 限于组织内部信任的合作伙伴 接收方组织内部成员,需签署保密协议(NDA)的合作伙伴 GREEN 可共享至社区,特定范围内 行业联盟、ISAC(信息共享与分析中心),不可公开到互联网 CLEAR 无限制可公开传播 允许公开发布(如博客、社交媒体),但仍需标注来源 -
TTPs(Tactics, Techniques, and Procedures)
TTPs是描述攻击者行为的标准化模型,Tactics(战术)描述攻击者的目的(比如,初始访问,权限提升),Techniques(技术)说明攻击发生的具体手段(比如,用钓鱼邮件来拿到访问权限),Procedures(程序)表达攻击者在实际中使用技术的具体做法(比如发一封带有恶意宏的 Word 文档邮件)。
TTPs本质上是用专业、标准化的语言,把一场攻击“抽象成可以程序化理解和响应的模型,这些都是安全框架设计者思维,切莫陷入攻击者真实思维(我要盗取xxx的财务,数据,身份)

-
Kill Chain(网络杀伤链模型)
由洛克希德·马丁公司提出,源自传统战争中的"目标打击流程",其线性阶段模型描述攻击从开始到完成的完整生命周期。杀伤链主要描述攻击全貌,其受众主要是公司高管,杀伤链是"攻击故事线",适合宏观分析。杀伤链模型共包含以下7个阶段:
- 侦察(Reconnaissance)
- 武器化(Weaponization)
- 投递(Delivery)
- 利用(Exploitation)
- 安装(Installation)
- 指挥与控制(C2)
- 目标行动(Actions on Objectives)
-
MITRE ATT&CK
ATT&CK(Adversarial Tactics, Techniques, and Common Knowledge)是MITRE开发的威胁行为模型,专注于描述攻击者在入侵过程中的战术Tactics和技术Techniques,其作用主要是帮助防御者系统化分析攻击模式,提升检测和响应能力,帮助安全团队理解攻击者的行为模式,构建更有效的检测机制。MITRE ATT&CK本质上是TTPs模型的增强和工程化实现,是一种网络安全知识库。

ATT&CK框架分为三大部分,企业,移动,ICS矩阵,每个矩阵又包含战术(攻击者的目标,如初始访问、执行、持久化等),技术(实现战术的具体方法),子技术(更细粒度的技术实现)

-
金字塔模型(Pyramid of Pain)
金字塔模型由威胁情报专家David J. Bianco提出,是一个用于描述不同类型威胁指标在防御工作中价值高低的理论概念模型(不是评分模型)。它充当了威胁指标的"价值过滤器",帮助安全工程师合理分配防御资源,优先拦截最能打击攻击者、让攻击者痛苦最大的方法与特征。其实金字塔模型应用的很重要的一种形式是对告警信息的分类分级,对响应策略的配置

场景:
检测到一台主机出现:
Powershell启动了一个非常规的Base64编码脚本
后续出现了Cobalt Strike beacon的流量特征
同时这台机器访问了一个已知恶意IP
系统处理逻辑:
Step 1:TTP特征检测到(脚本+beacon行为) → 标记Critical优先级,立即终止进程隔离主机 Step 2:Tools特征验证(识别出是Cobalt Strike) → 加强证据链,生成详细告警
Step 3:IP IOC检测到(已知恶意IP)→ 作为额外辅助情报记录,佐证攻击活动
2.3api使用
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pprint
from pymisp import PyMISP
API_ENDPOINT = "http://10.10.0.107"
TOKEN = "StMhTXPnmErXDGrWMfddlhzdsHkkrhkUSDNyDKUQ"
def main():
misp = PyMISP(API_ENDPOINT, TOKEN)
iocs = misp.search("attributes", value="145.249.247.146")
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(iocs)
if __name__ == "__main__":
main()