Skip to main content

Gitter Chat Travis CI Build Status PyPi Version Python Versions

Threat Response API Module

Python API Module for Threat Response APIs.

Installation

  • Local
pip install --upgrade .
pip show threatresponse
  • GitHub
pip install --upgrade git+https://github.com/CiscoSecurity/tr-05-api-module.git[@branch_name_or_release_version]
pip show threatresponse
  • PyPi
pip install --upgrade threatresponse[==release_version]
pip show threatresponse

Usage

from threatresponse import ThreatResponse

client = ThreatResponse(
    client_id='<YOUR TR CLIENT ID>',  # required
    client_password='<YOUR TR CLIENT PASSWORD>',  # required
    region='<YOUR TR REGION>',  # optional
    logger=<SOME LOGGER INSTANCE>,  # optional
    proxy='<SOME PROXY URL>',  # optional
    environment='<SPECIFIC ENVIRONMENT>' # optional
)
  • client_id and client_password credentials must be taken from an existing API client for accessing the Cisco Threat Response APIs. The official documentation on how to create such a client can be found here. Make sure to properly set some scopes which will grant the client different (ideally minimum) privileges.
  • region must be one of: '' or 'us' (default), 'eu', 'apjc'. Other regions are not supported yet.
  • logger must be an (already configured) instance of the built-in logging.Logger class (or one of its descendants).
  • timeout must be a number (int or float) meaning the default amount of time (in seconds) to wait for the server to send data before giving up and raising an exception. Can be overwritten by explicitly specifying timeout on each call to any endpoint.
  • proxy must be a URL in the format: http[s]://[username[:password]@]host[:port].
  • environment must be a dict in the format: { 'visibility': 'https://www.example.com', 'private_intel': 'https://www.example.come', 'global_intel': 'https://www.example.com', } By default will be used: { 'visibility': 'https://visibility{region}.amp.cisco.com', 'private_intel': 'https://private.intel{region}.amp.cisco.com', 'global_intel': 'https://intel{region}.amp.cisco.com', }

Concrete Usage

  • Inspect

Inspect allows to find an observable in a concrete string.

response = client.inspect.inspect({'content': 'example.com'})
  • Observe

Observe returns summary for an observable.

response = client.enrich.observe.observables(
    [{'type': 'sha256', 'value': '8A32950CD96C5EF88F9DCBB66A08F59A7E8D8E5FECCDE9E115FBAA46D9AF88F9'}]
)
  • Deliberate

Deliberate returns judgments based on added modules.

response = client.enrich.deliberate.observables(
    [{'type': 'sha256', 'value': '8A32950CD96C5EF88F9DCBB66A08F59A7E8D8E5FECCDE9E115FBAA46D9AF88F9'}]
)

Commands

For your convenience, we have made some predefined commands that you can use.

  • Verdicts

Verdicts returns verdicts from all modules if the modules are configured. Accepts multiple observables.

response = client.commands.verdict(
    'string with observables ("8A32950CD96C5EF88F9DCBB66A08F59A7E8D8E5FECCDE9E115FBAA46D9AF88F9, cisco.com")'
)
  • Targets

Targets returns all available targets if the modules are configured. Accepts multiple observables.

response = client.commands.targets(
    'string with observables ("8A32950CD96C5EF88F9DCBB66A08F59A7E8D8E5FECCDE9E115FBAA46D9AF88F9, cisco.com")'
)

Available Endpoints

Switch between .private_intel and .global_intel if necessary.

Actor

actor = client.private_intel.actor

Available methods:

  • actor.post()
  • actor.get()
  • actor.put()
  • actor.delete()
  • actor.external_id()
  • actor.search.get()
  • actor.search.delete()
  • actor.search.count()
  • actor.metric.histogram()
  • actor.metric.topn()
  • actor.metric.cardinality()

Asset

asset = client.private_intel.asset

Available methods:

  • asset.post()
  • asset.get()
  • asset.put()
  • asset.delete()
  • asset.external_id()
  • asset.search.get()
  • asset.search.delete()
  • asset.search.count()
  • asset.metric.histogram()
  • asset.metric.topn()
  • asset.metric.cardinality()

Asset mapping

asset_mapping = client.private_intel.asset_mapping

Available methods:

  • asset_mapping.post()
  • asset_mapping.get()
  • asset_mapping.put()
  • asset_mapping.delete()
  • asset_mapping.expire()
  • asset_mapping.external_id()
  • asset_mapping.search.get()
  • asset_mapping.search.delete()
  • asset_mapping.search.count()
  • asset_mapping.metric.histogram()
  • asset_mapping.metric.topn()
  • asset_mapping.metric.cardinality()

Asset properties

asset_properties = client.private_intel.asset_properties

Available methods:

  • asset_properties.post()
  • asset_properties.get()
  • asset_properties.put()
  • asset_properties.delete()
  • asset_properties.expire()
  • asset_properties.external_id()
  • asset_properties.search.get()
  • asset_properties.search.delete()
  • asset_properties.search.count()
  • asset_properties.metric.histogram()
  • asset_properties.metric.topn()
  • asset_properties.metric.cardinality()

Attack Pattern

attack_pattern = client.private_intel.attack_pattern

Available methods:

  • attack_pattern.post()
  • attack_pattern.get()
  • attack_pattern.put()
  • attack_pattern.delete()
  • attack_pattern.external_id()
  • attack_pattern.search.get()
  • attack_pattern.search.delete()
  • attack_pattern.search.count()
  • attack_pattern.metric.histogram()
  • attack_pattern.metric.topn()
  • attack_pattern.metric.cardinality()

Bulk

bulk = client.private_intel.bulk

Available methods:

  • bulk.post()
  • bulk.get()

Bundle

bundle = client.private_intel.bundle

Available methods:

  • bundle.export.post()
  • bundle.export.get()
  • bundle.import_.post()

Campaign

campaign = client.private_intel.campaign

Available methods:

  • campaign.post()
  • campaign.get()
  • campaign.put()
  • campaign.delete()
  • campaign.external_id()
  • campaign.search.get()
  • campaign.search.delete()
  • campaign.search.count()
  • campaign.metric.histogram()
  • campaign.metric.topn()
  • campaign.metric.cardinality()

Casebook

casebook = client.private_intel.casebook

Available methods:

  • casebook.post()
  • casebook.get()
  • casebook.put()
  • casebook.delete()
  • casebook.external_id()
  • casebook.observables()
  • casebook.texts()
  • casebook.bundle()
  • casebook.patch()
  • casebook.search.get()
  • casebook.search.delete()
  • casebook.search.count()
  • casebook.metric.histogram()
  • casebook.metric.topn()
  • casebook.metric.cardinality()

COA

coa = client.private_intel.coa

Available methods:

  • coa.post()
  • coa.get()
  • coa.put()
  • coa.delete()
  • coa.external_id()
  • coa.search.get()
  • coa.search.delete()
  • coa.search.count()
  • coa.metric.histogram()
  • coa.metric.topn()
  • coa.metric.cardinality()

DataTable

data_table = client.private_intel.data_table

Available methods:

  • data_table.post()
  • data_table.get()
  • data_table.delete()
  • data_table.external_id()

Enrich

enrich = client.enrich

Available methods:

  • enrich.health()
  • enrich.health(_id)
  • enrich.deliberate.observables()
  • enrich.deliberate.sighting()
  • enrich.deliberate.sighting_ref()
  • enrich.observe.observables()
  • enrich.observe.sighting()
  • enrich.observe.sighting_ref()
  • enrich.refer.observables()
  • enrich.refer.sighting()
  • enrich.refer.sighting_ref()

Event

event = client.private_intel.event

Available methods:

  • event.history()
  • event.get()
  • event.delete()
  • event.search.get()
  • event.search.delete()
  • event.search.count()

Feed

feed = client.private_intel.feed

Available methods:

  • feed.view.txt()
  • feed.view()
  • feed.post()
  • feed.put()
  • feed.get()
  • feed.delete()
  • feed.external_id()
  • feed.search.get()
  • feed.search.delete()
  • feed.search.count()

Feedback

feedback = client.private_intel.feedback

Available methods:

  • feedback.post()
  • feedback.get()
  • feedback.delete()
  • feedback.external_id()
  • feedback.get(_id)

GraphQL

graph = client.private_intel.graphql

Available methods:

  • graphql.post()

Identity Assertion

identity_assertion = client.private_intel.identity_assertion

Available methods:

  • identity_assertion.post()
  • identity_assertion.get()
  • identity_assertion.put()
  • identity_assertion.delete()
  • identity_assertion.external_id()
  • identity_assertion.search.get()
  • identity_assertion.search.delete()
  • identity_assertion.search.count()
  • identity_assertion.metric.histogram()
  • identity_assertion.metric.topn()
  • identity_assertion.metric.cardinality()

Incident

incident = client.private_intel.incident

Available methods:

  • incident.post()
  • incident.get()
  • incident.put()
  • incident.delete()
  • incident.external_id()
  • incident.link()
  • incident.status()
  • incident.sightings.incidents()
  • incident.patch()
  • incident.search.get()
  • incident.search.delete()
  • incident.search.count()
  • incident.metric.histogram()
  • incident.metric.topn()
  • incident.metric.cardinality()

Indicator

indicator = client.private_intel.indicator

Available methods:

  • indicator.post()
  • indicator.get()
  • indicator.put()
  • indicator.delete()
  • indicator.external_id()
  • indicator.judgements.indicators()
  • indicator.sightings.indicators()
  • indicator.search.get()
  • indicator.search.delete()
  • indicator.search.count()
  • indicator.metric.histogram()
  • indicator.metric.topn()
  • indicator.metric.cardinality()

Inspect

inspect = client.inspect

Available methods:

  • inspect.inspect()

Int

int = client.int

Available methods:

  • int.integration.get(_id)
  • int.integration.patch(_id)
  • int.integration.delete(_id)
  • int.integration.get()
  • int.integration.post()
  • int.module_instance.get(_id)
  • int.module_instance.patch(_id)
  • int.module_instance.delete(_id)
  • int.module_instance.get()
  • int.module_instance.post()
  • int.module_type.get(_id)
  • int.module_type.patch(_id)
  • int.module_type.delete(_id)
  • int.module_type.get()
  • int.module_type.post()
  • int.module_type_patch.get()
  • int.module_type_patch.post()
  • int.module_type_patch.get(_id)
  • int.module_type_patch.put(_id)
  • int.module_type_patch.delete(_id)
  • int.module_type_patch.action_preview(_id)

Investigation

investigation = client.private_intel.investigation

Available methods:

  • investigation.post()
  • investigation.get()
  • investigation.put()
  • investigation.delete()
  • investigation.external_id()
  • investigation.search.get()
  • investigation.search.delete()
  • investigation.search.count()
  • investigation.metric.histogram()
  • investigation.metric.topn()
  • investigation.metric.cardinality()

Judgment

judgment = client.private_intel.judgment

Available methods:

  • judgment.post()
  • judgment.get()
  • judgment.put()
  • judgment.delete()
  • judgment.expire()
  • judgment.external_id()
  • judgment.judgments()
  • judgment.search.get()
  • judgment.search.delete()
  • judgment.search.count()
  • judgment.metric.histogram()
  • judgment.metric.topn()
  • judgment.metric.cardinality()

Malware

malware = client.private_intel.malware

Available methods:

  • malware.post()
  • malware.get()
  • malware.put()
  • malware.delete()
  • malware.external_id()
  • malware.search.get()
  • malware.search.delete()
  • malware.search.count()
  • malware.metric.histogram()
  • malware.metric.topn()
  • malware.metric.cardinality()

Metrics

metrics = client.private_intel.metrics

Available methods:

  • metrics.get()

Profile

profile = client.profile

Available methods:

  • profile.whoami()
  • profile.org.get()
  • profile.org.post()

Properties

properties = client.private_intel.properties

Available methods:

  • properties.get()

Relationship

relationship = client.private_intel.relationship

Available methods:

  • relationship.post()
  • relationship.get()
  • relationship.put()
  • relationship.delete()
  • relationship.external_id()
  • relationship.search.get()
  • relationship.search.delete()
  • relationship.search.count()
  • relationship.metric.histogram()
  • relationship.metric.topn()
  • relationship.metric.cardinality()

Response

response = client.response

Available methods:

  • response.respond.observables()
  • response.respond.sighting()
  • response.respond.trigger()

Sighting

sighting = client.private_intel.sighting

Available methods:

  • sighting.post()
  • sighting.get()
  • sighting.put()
  • sighting.delete()
  • sighting.external_id()
  • sighting.sightings()
  • sighting.search.get()
  • sighting.search.delete()
  • sighting.search.count()
  • sighting.metric.histogram()
  • sighting.metric.topn()
  • sighting.metric.cardinality()

SSE Device

sse_device = client.sse_device

Available methods:

  • sse_device.get_all()
  • sse_device.get_by_id()
  • sse_device.post()
  • sse_device.patch()
  • sse_device.token()
  • sse_device.re_token()
  • sse_device.api_proxy()
  • sse_device.delete()

SSE Tenant

sse_tenant = client.sse_tenant

Available methods:

  • sse_tenant.get_token()

Target record

target_record = client.private_intel.target_record

Available methods:

  • target_record.post()
  • target_record.get()
  • target_record.put()
  • target_record.delete()
  • target_record.external_id()
  • target_record.search.get()
  • target_record.search.delete()
  • target_record.search.count()
  • target_record.metric.histogram()
  • target_record.metric.topn()
  • target_record.metric.cardinality()

Status

status = client.private_intel.status

Available methods:

  • status.get()

Tool

tool = client.private_intel.tool

Available methods:

  • tool.post()
  • tool.get()
  • tool.put()
  • tool.delete()
  • tool.external_id()
  • tool.search.get()
  • tool.search.delete()
  • tool.search.count()
  • tool.metric.histogram()
  • tool.metric.topn()
  • tool.metric.cardinality()

User Management

user_mgmt = client.user_mgmt

Available methods:

  • user_mgmt.users.get()
  • user_mgmt.users.post()
  • user_mgmt.batch.users()
  • user_mgmt.search.users()

Verdict

verdict = client.private_intel.verdict

Available methods:

  • verdict.get()

Version

version = client.private_intel.version

Available methods:

  • version.get()

Vulnerability

vulnerability = client.private_intel.vulnerability

Available methods:

  • vulnerability.cpe_match_strings()
  • vulnerability.post()
  • vulnerability.get()
  • vulnerability.put()
  • vulnerability.delete()
  • vulnerability.external_id()
  • vulnerability.search.get()
  • vulnerability.search.delete()
  • vulnerability.search.count()
  • vulnerability.metric.histogram()
  • vulnerability.metric.topn()
  • vulnerability.metric.cardinality()

Weakness

weakness = client.private_intel.weakness

Available methods:

  • weakness.post()
  • weakness.get()
  • weakness.put()
  • weakness.delete()
  • weakness.external_id()
  • weakness.search.get()
  • weakness.search.delete()
  • weakness.search.count()
  • weakness.metric.histogram()
  • weakness.metric.topn()
  • weakness.metric.cardinality()

Metadata

Release files for threatresponse 0.15.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for threatresponse 0.15.0
File Size Uploaded
threatresponse-0.15.0.tar.gz 21.8 kB Details

Release files / threatresponse-0.15.0.tar.gz

Download URL threatresponse-0.15.0.tar.gz
Size 21.8 kB
Tags Source
SHA-256 checksum
How to use checksums
f5ebb8ffb7d9a482a7a67d40131090bc9f76f952b95d0074231ca3485287bd45
BLAKE2b-256 checksum
How to use checksums
bf20b61aa46121882efba03a979c7ffc6c88996c32523c9c0f712f1ce659d359
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

Release history Release notifications | RSS feed

This release

0.15.0 This release

1 release file

0.14.0

1 release file

0.13.0

1 release file

0.11.0

1 release file

0.10.0

1 release file

0.9.1

1 release file

0.9.0

1 release file

0.8.0

1 release file

0.7.3

1 release file

0.7.2

1 release file

0.7.1

1 release file

0.7.0

1 release file

0.6.0

1 release file

0.5.0

1 release file

0.4.0

1 release file

0.3.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page