• 我们在哪一颗星上见过 ,以至如此相互思念 ;我们在哪一颗星上相互思念过,以至如此相互深爱
  • 我们在哪一颗星上分别 ,以至如此相互辉映 ;我们在哪一颗星上入睡 ,以至如此唤醒黎明
  • 认识世界 克服困难 洞悉所有 贴近生活 寻找珍爱 感受彼此

python模块:pycti

python知识点 云涯 1年前 (2023-06-15) 1120次浏览

PyCTI – OpenCTI Python库

PyCTI是OpenCTI平台的Python库,它允许开发者和安全研究人员与OpenCTI API进行交互。

https://opencti-client-for-python.readthedocs.io/en/latest/pycti/pycti.html

安装

要安装PyCTI,你可以使用pip:

pip install pycti

函数

classpycti.Indicator(opencti)

参数:opencti——实例OpenCTIApiClient

1. add_stix_cyber_observable(**kwargs)

向 Indicator 对象添加一个 Stix-Cyber​​-Observable 对象(基于)

参数

  • id – 指标的 id
  • 指示器——指示器对象
  • stix_cyber_observable_id – Stix-Observable 的 id

退货:Boolean 如果没有导入错误则为真

2. create(**kwargs)

创建一个指标对象

参数
  • name ( str ) – 指标的名称
  • pattern ( str ) – 固定指标模式
  • x_opencti_main_observable_type ( str ) – 可观察对象的类型
退货:  指标对象
返回类型:  指标

3. import_from_stix2( **kwargs)

从 STIX2 对象导入 Indicator 对象

参数
  • stixObject – Stix 对象指标
  • extras – 额外的字典
  • update ( bool ) – 在导入时设置更新标志
退货:   指标对象
返回类型:   指标

4. list( **kwargs)

列出指标对象

list 方法接受以下 kwargs:

参数
  • filters ( list ) –(可选)要应用的过滤器
  • search ( str ) – (可选)申请列表的搜索关键字
  • first ( int ) – (可选)返回后ID或开头的前 n 行(如果未设置)
  • after ( str ) – (可选)用于分页的第一行的 OpenCTI 对象 ID
  • orderBy ( str ) –(可选)要对响应进行排序的字段
  • orderMode ( bool ) –(可选)“ asc ”或“ desc ”
  • customAttributes ( list ) –(可选)要返回的属性键列表
  • getAll ( bool ) –(可选)切换以返回所有条目(小心在没有任何其他过滤器的情况下使用它)
  • withPagination ( bool ) – (可选)切换到使用分页
退货:   指标清单
返回类型:   列表

5. read( **kwargs)

读取 Indicator 对象

read 可以与已知的 OpenCTI 实体id一起使用,也可以使用有效的过滤器来搜索并返回单个 Indicator 实体或 None。

list 方法接受以下 kwargs。

注意:idfilters是必需的。

参数
  • id ( str ) – 威胁演员的 ID
  • filters ( list ) – 如果没有提供 id 则应用的过滤器
退货:   指标对象
返回类型:   指标

classpycti.Infrastructure(opencti)

OpenCTI 的主要基础设施类

参数:   opencti——实例OpenCTIApiClient

1. list( **kwargs)
列出基础设施对象
参数
filters ( list ) –(可选)要应用的过滤器
search ( str ) – (可选)申请列表的搜索关键字

first ( int ) – (可选)返回后ID或开头的前 n 行(如果未设置)

after ( str ) – (可选)用于分页的第一行的 OpenCTI 对象 ID

orderBy ( str ) –(可选)要对响应进行排序的字段

orderMode ( bool ) –(可选)“ asc ”或“ desc ”

customAttributes ( list ) –(可选)要返回的属性键列表

getAll ( bool ) –(可选)切换以返回所有条目(小心在没有任何其他过滤器的情况下使用它)

withPagination ( bool ) – (可选)切换到使用分页

 

2. read(( **kwargs)

读取基础设施对象

read 可以与已知的 OpenCTI 实体id一起使用,也可以使用有效的过滤器来搜索并返回单个基础设施实体或无。

注意:idfilters是必需的。

参数

  • id ( str ) – 威胁演员的 ID
  • filters ( list ) – 如果没有提供 id 则应用的过滤器

 

classpycti.OpenCTIApiClient(url, token, log_level=’info’, ssl_verify=False, proxies=None, json_logging=False, cert=None)

OpenCTI 的主要 API 客户端

参数
  • url (str) – OpenCTI API url
  • token (str) – OpenCTI API token
  • log_level (stroptional) – log level for the client
  • ssl_verify (booloptional) –
  • proxies –
  • json_logging (booloptional) – format the logs as json if set to True

 

1. fetch_opencti_file( fetch_uri , binary = False , serialize = False )

从 OpenCTI API 获取文件

参数
  • fetch_uri ( str ) – 下载要使用的 URI
  • binary ( bool optional ) – [描述], 默认为 False
Returns:返回文件内容作为文本或基于二进制的字节

pycti.OpenCTIApiConnector(api)

1. list( )

列出可用的连接器

return:返回带有连接器的字典
返回类型:dict

2. ping( connector_id , connector_state )

通过 id 和状态 ping 一个连接器

参数

  • connector_id ( str ) – 连接器 ID
  • connector_state ( Any) – 连接器的状态

退货:响应 pingConnector 数据字典

返回类型:字典

3. register(connector)

向 OpenCTI 注册连接器

参数:连接器OpenCTIConnector ) – OpenCTIConnector连接器对象

退货:响应 registerConnector 数据字典

返回类型:字典

4. unregister( _id )

使用 OpenCTI 注销连接器

参数:_id ( string ) – OpenCTIConnector连接器 ID
退货:响应 registerConnector 数据字典
返回类型:字典

pycti.OpenCTIConnector( connector_id , connector_name , connector_type , scope , auto , only_contextual )

OpenCTI 连接器的主类

参数

  • connector_id ( str ) – 连接器的 ID(有效的 uuid4)
  • connector_name ( str ) – 连接器的名称
  • connector_type ( str ) – 有效的 OpenCTI 连接器类型(参见ConnectorType
  • 范围str ) – 连接器范围

Raises:  ValueError – 如果连接器类型无效

1. to_input( )

在 API 查询中使用的连接器输入

退货:带有连接器数据的字典
返回类型:字典

class pycti.OpenCTIConnectorHelper(config)

用于 OpenCTI 连接器的 Python API

参数:   config ( Dict ) – 字典标准配置

 

使用

要使用PyCTI,你需要首先导入它:from pycti import OpenCTIApiClient

然后,你需要创建一个OpenCTIApiClient实例,该实例需要OpenCTI的URL和API密钥:

api_url = "https://your-opencti-url"

api_token = "your-api-token"

opencti_api_client= OpenCTIApiClient(api_url, api_token)

功能

连接测试

你可以使用ping()方法来测试你的连接,如果连接成功,它将返回{"status": "success"}

client.ping()

获取信息

你可以使用OpenCTIApiClient来获取OpenCTI中的各种信息。例如,获取所有的组织:

organizations = opencti_api_client.identity.list(types=['Organization'])
for organization in organizations:
print(organization['name'])

创建实体

你可以使用OpenCTIApiClient来创建各种实体,例如威胁演员、入侵集、恶意软件等。每种实体都有其对应的方法,例如create_threat_actor()create_intrusion_set()create_malware()等。

例如,要创建一个威胁演员,你可以这样做:

threat_actor = client.create_threat_actor(
name="Threat Actor Name",
description="Description of the threat actor",
alias=["alias1", "alias2"],
goal="Goal of the threat actor",
sophistication="Sophistication of the threat actor",
resource_level="Resource level of the threat actor",
primary_motivation="Primary motivation of the threat actor",
secondary_motivation="Secondary motivation of the threat actor",
personal_motivation="Personal motivation of the threat actor",
)

查询实体

你可以使用OpenCTIApiClient来查询各种实体。每种实体都有其对应的查询方法,例如get_threat_actor()get_intrusion_set()get_malware()等。

例如,要查询一个威胁演员,你可以这样做:

threat_actor = client.get_threat_actor("Threat Actor Name")

更新实体

你可以使用OpenCTIApiClient来更新各种实体。每种实体都有其对应的更新方法,例如update_threat_actor()update_intrusion_set()update_malware()等。

例如,要更新一个威胁演员,你可以这样做:

updated_threat_actor = client.update_threat_actor(
id=threat_actor["id"],
name="New Threat Actor Name",
description="New description of the threat actor",
)

删除实体

你可以使用OpenCTIApiClient来删除各种实体。每种实体都有其对应的删除方法,例如delete_threat_actor()delete_intrusion_set()delete_malware()等。

例如,要删除一个威胁演员,你可以这样做:

client.delete_th

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


云涯历险记 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python模块:pycti
喜欢 (0)