This document is intended to capture use cases, and also document how to execute them for users.
curl http://ctiahost/ctia/ip/192.168.1.1/verdict
or
curl http://ctiahost/ctia/domain/badhost.com/verdict
curl http://ctiahost/ctia/ip/192.168.1.1/judgements
- all new verdicts for a given observable type in this hour, or day?
- all verdicts currently active for a given observable type?
- limit to N items
- needs to be paginated
You must first know the indicator ID. Here is an example looking it up by title.
curl http://ctiahost/ctia/indicator/title/document-direct-ip-traffic
Post the sighting with the indicator ID.
curl -XPOST -d'{"observable_relation":{"source":{"type":"sha256","value":"abc"},"relation":"Sent_To","relation":{"type":"ip","value":"10.0.0.1"},...}' http://ctiahost/ctia/indicator/ID/sighting
For each jugement object returned by:
curl http://ctiahost/ctia/ip/192.168.1.1/indicators
Extract the IDs from the 'indicated_TTP.ttp_id' fields and
curl http://ctiahost/ctia/ttp/ID
For each jugement object returned by:
curl http://ctiahost/ctia/ip/192.168.1.1/indicators
Extract the IDs from the 'related_campaigns.campaign_id' fields and
curl http://ctiahost/ctia/campaigns/ID
For each indicator object returned by:
curl http://ctiahost/ctia/ip/192.168.1.1/indicators
Extract the IDs from the 'suggested_COA.COA__id' fields and
curl http://ctiahost/ctia/coa/ID
Determine the ID of the incident's indicator(s). For example, if you know the title:
curl http://ctiahost/ctia/indicator/title/document-direct-ip-traffic
Or search for the indicator:
curl http://ctiahost/ctia/indicator/_search?title=ip # URL TBD
Import the incident, providing the indicator ID.
curl -XPOST -d'{"valid_time":{...},"confidence":"High","description":"an indicent","suggest_COA":{...},"related_indicators":[{"indicator_id":"indicator-123"}]}' http://ctiahost/ctia/incident
Also import each sighting
curl -XPOST -d'{"description":"...","timestamp":"...","indicator":{"indicator_id":"indicator-123"}}' http://ctiahost/ctia/sighting
Determine the phase of the kill chain the incident's indicator(s) belong to.
The later the phase of the kill chain the more critical the incident is and needs to be addressed on priority
Examples: An email-id known to be sending spam emails could be mapped under "Reconaissance" User visiting a URL known to be serving malicious advertisements could be mapped under "Delivery" A registery deleted known to done by malware file could be mapped under "Exploit" A suspicious file visiting an unknown IP address could be mapped under "Command and Control" A dropbox link known to be used for uploading exfiltrated files could be "Action on Objectives"
TBA
For each entry in the feed, based on the source of the feed, and it's content, choose a "origin" value such as "Bob's Threat Intel" and a reason such as "Known RAT IP"
curl -XPOST -d'{"disposition": 2, "observable": {...}' http://ctiahost/ctia/judgement
curl -XPOST -d'{"title":"..."}' http://ctiahost/ctia/indicator
Extract the indicator ID from the created Indicator, and then import your observables with that indicator id. Set the origin and reason as you would when creating a Judgement without an indicator.
curl -XPOST -d'{"disposition": 2, "indicator": ID, "observable": {...}}' http://ctiahost/ctia/judgement
Create "clean" judgments for your whitelist IP addresses (disposition number 1)
curl -XPOST -d'{"observable":{"type":"ip","value":"..."},"disposition_number":1}' http://ctiahost/ctia/judgement
Create feedback for the indicator. Note that IDs are actually URLs, so the ID specifically identifies the item.
curl -XPOST -d'{"entity_id":"indicator-123","feedback":-1}' http://ctiahost/ctia/feedback
Determine appropriate priority Determine appropriate source identifier Determine what URLs I want to make available as source and reason URIs
Post a catalog of indicators and TTPs
Post judgements as we make them, and link them to the indicators
- determine confidence and severity
- restrict only to very high confidence
curl -XPOST -d'{"specifications":[{"type":"Snort","snort_sig":"..."}]}' http://ciahost/ctia/indicator
curl -XPOST -d'{"specifications":[{"type":"OpenIOC","SOIC":"..."}]}' http://ciahost/ctia/indicator
An integrator is a software developer or system deployer who wants to run an instance of the CTIA within their own infrastructure, or embedded in an device or service. We assume familiarity with Java, and common practices in that community. While CTIA is implemented in Clojure, the intent is that all extension points have well defined Interfaces that Java, or other JVM languages, can implement.
An analyst may be gathering information around an actor or campaign and would like to add the observations as a judgement in order to populate an indicator or incident. This is 'interesting' or 'informational' but not necessarily suspicious. For example: An actor may use a specific public ip lookup site to check location, etc... This domain seen in conjunction with host indicators may indicate compromise. It may also simply be information added to TTPs or a Campaign.