Create a TTP

A TTP — Tactics, Techniques, and Procedures — describes a cyber adversary's behavior.

TTPs borrow their name and definition from military jargon:

  • Tactics: “the employment and ordered arrangement of forces in relation to each other.”

  • Techniques: “non-prescriptive ways or methods used to perform missions, functions, or tasks.”

  • Procedures: “standard, detailed steps that prescribe how to perform specific tasks.”

(Definitions from: “Joint Publication 1-02, Department of Defense Dictionary of Military and Associated Terms, 8 November 2010 (as amended through 15 February 2016)”)

TTPs include details such as:

  • The steps the adversary performs to achieve their goal.

  • The equipment, gear, or tools they use.
    For example, software, hardware, USB sticks, forged ID badges, and so on.

  • Information on any parties they associate with, or the victims they target, as well as on any exploit targets they may leverage to achieve their goals.

  • How they act on, or react to the victim’s behavior to avoid detection or defeat.

  • The intended goals the adversary wants to achieve.

Create a TTP


Required fields are marked with an asterisk ( * ).

There are two ways of creating a TTP :

  • In the top navigation bar of a graph, click , and then TTP.

  • In the side navigation bar of the Dashboard, click , and then TTP.

If you create a TTP from a graph, double-click its icon to access its details page.

If you create a TTP from the Dashboard, its details page is displayed automatically.

Fill in the TTP's details as follows:

Define the general options

  1. In the Title field, assign the new TTP entity a short, clear, and descriptive name.

    The name you specify here appears on the entity detail pane, in the header section.

  2. In the Analysis field, enter non-structured information such as additional context, references, links, and so on.
    This is where you tell the story of the entity, and where you describe the entity with as much relevant detail as possible.

  3. In the Confidence field, assign an estimated level of confidence to assess the accuracy and trustworthiness of the entity information.

  4. From the Intended effects drop-down menu, select one or more entries, as applicable, to describe what you reasonably assume to be the goal the threat actor implementing the TTP strives to achieve.
    Intended effects range from personal advantage, to theft, to money laundering, fraud or extortion.
    They all damage the target victim or system.

Define the characteristics

This section breaks down the main components of the TTP in a structured, standardized, and consistent way.

  • Behavior: behavioral characteristics provide information on the practical procedures and processes in the the threat actor modus operandi.

  • Resources: resource characteristics provide information on the resources the threat actor uses, such as software or hardware equipments, gear, forged documents, as well as third-party associates.

  • Targeted victim: targeted victim characteristics provide information on the victim of the threat actor’s operation, such as targeted bank accounts, systems or other equipment, organizations, and individuals.

Under Characteristics, click Characteristic, and then select an option from the drop-down menu to display additional fields in the editor, where you can enter specific details about the selected item in a structured way.

Select Behavior, and then click Exploit to add details about a vulnerability/weakness related to the TTP.

  1. In the Title field, assign a clear and descriptive name for the exploit.
    This is the vulnerable, weak spot the threat actor uses as an entry point.
    Example: Open window.

  2. In the Description field, enter a short, free-form description to provide additional context or extra details.
    Example: Open window on the ground floor, completely unlocked

Select Behavior, and then click Malware to add details about one or more pieces of malware related to the TTP.

  1. In the Name field, enter the common/standard name for the malware.
    Press ENTER to display additional fields to add more names.
    Example: Mirai.

  2. From the Type drop-down menu, select one or more entries, as applicable, to describe the purpose or the function of the malware.
    Example: Bot — DDoS.

Select Behavior, and then click Attack pattern to add details about an attack pattern related to the TTP.

  1. In the CAPEC field, enter the CAPEC ID/CAPEC attack ID (Common Attack Pattern Enumeration and Classification) corresponding to the attack pattern you want to describe here.
    Ingested data is processed and saved as TTP entities.
    The STIX ID is based on the CAPEC ID and it is idempotent across uploads.
    The default naming convention of a standard CAPEC-ingested TTP starts with the following prefix: [CAPEC-${numeric reference}]
    Example: CAPEC-108 or 108.

  2. In the Title field, enter the official CAPEC name for the attack pattern, as listed on their web site .
    Example: Command Line Execution through SQL Injection.

  3. In the Description field, enter a short, free-form description to provide additional context or extra details.
    Example: Remember to sanitize SQL inputs.

Select Resources, and then click Infrastructure to add details about the basic necessary equipment and services related to the TTP.

  1. In the Title field, enter the name of the service, product, tool, or piece of equipment.
    Example: The really evil hacker forum of doom.

  2. In the Description field, enter a short, free-form description to provide additional context or extra details.
    Example: Forum used to recruit hack-for-hire individuals and groups.

  3. From the Types drop-down menu, select one or more entries, as applicable, to describe the purpose or the function of the piece of infrastructure.
    Example: Communications — Forum.

Select Resources, and then click Persona to add details about a party related to the TTP — it can be an individual, a group, an organization, a web site, a brand or product — that the threat actor uses as a decoy to impersonate other parties.

  1. In the Name field, enter the name of the individual, organization, service, product, and so on the threat actor uses as a persona.
    Example: Dread Pirate Roberts.

Select Resources, and then click Tools to add details about more specific software or hardware tools related to the TTP.

  1. Name field, enter the name of the service, product, tool, or piece of equipment.
    Example: Wireshark.

  2. From the Types drop-down menu, select one or more entries, as applicable, to describe the purpose or the function of the specific software or hardware tools.
    Example: Traffic scanner.

  3. In the Description field, enter a short, free-form description to provide additional context or extra details.
    Example: Network protocol analyzer.

  4. In the Hashes section, click Add or More to add hashes.

  5. From the Hash type drop-down menu, select the hash type whose value you are going to include.
    Example: MD5.

  6. In the Simple hash value field, enter the hash value corresponding to the specified hash type.
    Hash type and hash value pairs represent indicators of compromise related to the tool(s) the threat actor uses as part of their TTP.
    Example: 1340c4d7de06930cba7f37245aefa988.

  7. Click Add or More to insert new rows or input fields, as necessary, where you can enter additional hashes.

Select the Targeted victim option to add details about the individual, the organization, or the resources related to the TTP that the threat actor is hitting or trying to hit.


The Targeted victim editor is based on the CIQ standard and its specifications.
The Customer Information Quality specification aims at providing an open and standard data model to accurately and consistently describe a party such as an individual or an organization, as well as attributes like roles and relationships.

  1. In the Name field, specify the name of the targeted victim.
    Example: IBAN ${ludicrously_fat_bank_account_number}

  2. In the Specification section, and click Fields to define the type of victim under attack.
    You can describe affected individuals, organizations, and assets.

  3. From the drop-down menu select an option to define the type of targeted victim:

    • Account

    • Person

    • Organization

    • Electronic address

  4. From the Targeted systems drop-down menu, select one or more entries, as applicable, to describe the type of infrastructure, system or equipment affected by the threat actor’s TTP.
    Example: Enterprise Systems — Database Layer.

  5. From the Targeted information drop-down menu, select one or more entries, as applicable, to describe the type of information being handles or manipulated in the TTP.
    Example: Information Assets — Financial Data.

Account
  1. In the Account type field, define the type of financial/payment account.
    Example: bank, online

  2. In the Account status, field define the current status of the account.
    Example: active, blocked

  3. From the Account specification drop-down menu, select one or more options to add further details about the account in the input fields in a structured way.

  4. Click Add or More to insert a new empty row below the current one, which you can populate with additional details.

    Field

    Description

    Account ID

    The account number.

    Example: NL30INGB0123456789.

    Issuing Authority

    The financial institution that issues the account.

    Example: ABC Bank.

    Account Type

    The type of account.

    Example: debit or savings.

    Account Branch

    The local branch office or the retail location of the bank responsible for issuing the account.

    Example: Utrecht center.

    Issuing Country Name

    The name of country where the account was issued.

    Example: The Netherlands .

Person
  1. From the Person name drop-down menu, select one or more options to add further details about the person or individual in the input fields in a structured way.

  2. Click Add or More to insert a new empty row below the current one, which you can populate with additional details.

    Field

    Description

    Preceding Title

    Example: His, Her

    Title

    Example: Rogueness, Excellence, Pandit, Sheikh

    First Name

    Example: Peter

    Middle Name

    Example: Brandon

    Last Name

    Example: Quill

    OtherName Name

    Example: Guardian of the Galaxy

    Alias Name

    Example: Star-Lord

    Generation Identifier

    Example: Jr., Sr., The Younger, The Elder, XXVIII

    Degree

    Example: BSc Ethical Hacking

Organization
  1. From the Organization name drop-down menu, select one or more options to add further details about the organization in the input fields in a structured way.

  2. Click Add or More to insert a new empty row below the current one, which you can populate with additional details.

    Field

    Description

    Name Only

    The name the organization is commonly referred to.

    Example: Wey-Yu

    Type Only

    The entity definition of the organization.

    Example: Inc, LLC, Ltd

    Full Name

    The full name of the organization.

    Example: Weyland-Yutani Corporation, Inc.

Electronic address
  1. From the Electronic address drop-down menu, select one or more options to add email service providers and email addresses in the input fields in a structured way.
    The key corresponds to the service provider, for example Google, Yahoo, Skype, ICQ, and so on.
    The associated value needs to be a valid format for the selected service provider, for example:

Add observables


If you manually create an entity in the entity editor, and add observables with a type or value that matches the criteria of an existing observable ignore rule, these observables may not be accessible after saving the entity.

Observables are discrete pieces of information that represent properties, attributes, actions, and events.
They record a distinct piece of information, such as: an IP address, a hash, name of a country, name of a city, name of an organization, or the name of an individual; or an event such as the creation of a registry value, or a file deletion or modification.

They are atomic: the information they hold is complete and meaningful, but it cannot be split into smaller components without losing meaning and intelligence value.
They are factual: they record facts with no additional context or background.

You can relate observables with entities to provide context.
If observables are detected in a specific context, or if they are sighted within the organization, they become indicators and sightings, respectively.

To manually add an observable, do one of the following:

  • In a graph, click in the top navigation bar.

  • In the entity detail pane, click the menu icon , and from the drop-down menu select Edit.
    In the entity editor, under Observables, click Observables.

  • In the side navigation bar click the create icon > Observable.

  • In the top navigation bar click Intelligence > All intelligence > Browse, Production, or Discovery, or Exposure, click the Observables tab, and then (Create observable).

When you are in the Add observables view:

  1. From the Type drop-down menu, select the type of observable you are creating.

  2. From the drop-down menu, select the appropriate value to correctly describe the type of relationship between the parent entity and the embedded observable.

  3. In the Value(s) field, enter the values of the observable.
    If you enter multiple values, separate them with a comma (,).

  4. From the Maliciousness drop-down menu, select the maliciousness level.

  5. From the Source drop-down menu, select the data source associated with the observable.

  6. To store your changes, click Save; to discard them, click Cancel.

The observable editor opens, and you can start describing the new observable in the Add observable view:

  1. From the Type drop-down menu, select an observable type that describes the type of information you are storing in the observable.
    For example, a bank account number, a payment card number, an IP address, a domain name, a country or city name, and so on.

  2. From the Link name drop-down menu, select an option to define the type of relationship existing between the observable and the parent entity.

    Setting link names to define relationships adds intelligence value by describing how entities and observables are related.
    This information provides additional context, and it helps understand how a specific resource is used, or the purpose it serves for a potential attacker.
    For example, it can clarify that an observable describes a vulnerability or a weakness related to its parent entity.

    Therefore, observables with a Link name value are in general more relevant and more valuable than observables without a Link name value.

    Link name options vary, based on the relationship the observable has with the specific entity type it belongs to.
    These are the supported entity-observable relationship link names for the TTP entity:

    • Malicious infrastructure: the observable related to the TTP describes gear, equipment, tools, software, or hardware the threat actors use to implement their strategy.
      It can be anything instrumental to achieving the the threat actors' goals, from heavy machinery and physical tooling to servers and software products.

    • Targeted victim: the observable related to the TTP describes properties and characteristics of the victim the threat actors and their TTPs target.
      It can be the name of an individual or an organization, the industry sector the victim belongs to, and so on.

      After specifying the link name, you can move on to setting the observable value and its maliciousness confidence level.


    You can modify and update the link name value at any time to reflect changes in the entity-observable relationship:

    1. In the entity edit view, browse to the Observables section.

    2. If the section is populated with observables, each of them has a Link name column.

    3. Click the Link name drop-down menu for the observable whose relationship link name you want to update, and then select one of the available options.
      If the Link name drop-down menu has no options, the selected the entity-observable relationship is undefined.

  3. In the Value(s) field, enter the value of the observable.
    The value and its format should match the specified observable type (kind).
    If you specify multiple values, enter one value per line.
    If you enter multiple values on one line, use a comma (,) as a separator.
    Example: 75.23.125.231, ipwnu.biz, Kansas City, [email protected], Alvin Slocombe.

  4. From the Maliciousness drop-down menu, select a maliciousness confidence level to assess the likelihood the potential threat may or may not damage the organization.
    This option corresponds to the value that is set underConfidence in observable rules.

When you flag an observable with a maliciousness confidence level, it cannot transition back to being safe or irrelevant. It can only transition to a higher maliciousness confidence level.

You can use the specified observable values to set up automation processes, so that the potential threat that the entity represents can trigger an action in a security system or another device in the toolchain.

For example, if the observable Type is Email, the Link name is Parameter, and the Value(s) are [email protected], [email protected], and [email protected], you can create a rule in the email server to block all incoming messages from the honestpaul-superdeals.com email domain.

Add relationships

  1. In the Relationships view, click Relationship.

  2. From the drop-down menu select the option corresponding to the relationship you want to create.
    The following options are available:

    Option
    Incoming/Outgoing
    Description

    Associated campaigns

    Outgoing relationship

    Relates the campaign to the selected campaign(s) on the Search an entity dialog.

    Attributions

    Outgoing relationship

    Relates the campaign to the selected threat-actor(s) on the Search an entity dialog.

    Related incidents

    Outgoing relationship

    Relates the campaign to the selected incident(s) on the Search an entity dialog.

    Related TTPs

    Outgoing relationship

    Relates the campaign to the selected TTP(s) on the Search an entity dialog.

    Indicator Related campaigns

    Incoming relationship

    Relates the selected indicator(s) on the Search an entity dialog to the campaign.

    Report Campaigns

    Incoming relationship

    Relates the selected report(s) on the Search an entity dialog to the campaign.

    Threat actor Associated campaigns

    Incoming relationship

    Relates the selected threat-actor(s) on the Search an entity dialog to the campaign.

    Sighting Campaign

    Incoming relationship

    Relates the selected sighting(s) on the Search an entity dialog to the campaign.

  3. In the Search an entity dialog, click the checkbox(es) to select one or more entities that you can relate to the current one.

    You can refine search results by specifying a search string in the filter input field.
    Alternatively, click images/download/attachments/3604538/filter.PNG to select one or more quick filter options such as:

    • Entity

    • Source

    • TLP

    • Date

    • Datasets

  4. Click Select.

Select this option…

… to create this relationship for the TTP

Exploit targets

Outgoing relationship

Relates the TTP to the selected exploit target(s) on the Search an entity dialog.

Related TTPs

Outgoing relationship

Relates the TTP to the selected TTP(s) on the Search an entity dialog.

Campaign Related TTPs

Incoming relationship

Relates the selected campaign(s) on the Search an entity dialog to the TTP.

Indicator Indicated TTPs

Incoming relationship

Relates the selected indicator(s) on the Search an entity dialog to the TTP.

Incident Leveraged TTPs

Incoming relationship

Relates the selected incident(s) on the Search an entity dialog to the TTP.

Report TTPs

Incoming relationship

Relates the selected report(s) on the Search an entity dialog to the TTP.

Threat actor Observed TTPs

Incoming relationship

Relates the selected threat actor(s) on the Search an entity dialog to the TTP

Sighting TTP

Incoming relationship

Relates the selected sighting(s) on the Search an entity dialog to the TTP.

From the Relationship type, you can select the name of entity relationship you added.
You can also type in your own relationship name in the empty input field.

When you assign a relationship a predefined or a custom name, it is visible in the graph view.

The arrow orientation, either or , indicates that the relationship is either incoming — from the related entity to the current one — or outgoing — from the current entity to the related one.

  • To remove a relationship type name, go to the relationship type you want to remove, and click  .
    The relationship type name is removed.

  • To remove a relationship, go to the row of the relationship you want to remove, and click .
    The row and the corresponding relationship are removed.


You cannot undo these actions. They are irreversible.

Add metadata information

  1. In the Estimated observed time field, enter the date when the entity was first observed/detected.
    It corresponds to the date and time when the threat was detected, recorded, and reported for the first time.
    Usually, Estimated observed time can be either the same as Estimated threat start time, or it can mark a point in time after Estimated threat start time. It can also be after the Estimated threat end time if the threat ended before it was observed.

  2. In the Estimated threat start time field, enter the estimated date the threat activity started, based on observation, reports and other intelligence.
    It corresponds to the date and time when the threat was detected, recorded, and reported for the first time as an active/in-progress event.
    The Estimated threat start time can be either the same as Estimated observed time, or it can mark a point in time before Estimated observed time.

  3. If the threat is no longer active, go to the Estimated threat end time field, and enter the estimated end time of the threat activity, based on observation, reports, and other intelligence.

  4. Go to the Half life section.

    Half-life represents the amount of time it takes for a threat to lose half its intelligence value.
    It corresponds to the number of days it takes for the malicious potential of a threat to decay by 50%.

  5. Select the Use default value option to assign the entity the predefined half-life value.
    You can assign default half-life values to each entity type in the /etc/eclecticiq/platform_settings.py file.
    Integer values represent the number of days.
    settings.py (sourced from EIQ platform-backend)

    Author

    Rutger Prins

    Commit

    17a58f9f930d83ee862b731813ff472ea3994a37

    Timestamp

    February, 14, 2022 11:59 AM

    Full path

    eiq/platform/settings.py

    Title

    [SNYK] Upgrade packages and ignore issues with no upgrade path

    Description

    **Upgrade packages:**<br> `ipython==7.16.0` => `ipython==7.16.3` == no risk <br> `cairosvg==2.4.2`=> `cairosvg==2.5.2` == no risk <br> `jinja2==2.10.1` => `jinja2==2.11.3` == no risk<br> `pillow==7.2.0` => `pillow==8.3.2` == no risk <br> `pygments==2.6.1` => `pygments==2.7.4` == no risk <br> <br> **Snyk Ignore:** <br> _Removed issues that no longer affect our product._<br> Increase ignore time for following issues:<br> snyk:lic:pip:html2text:GPL-3.0 - can't be applied for 2.9<br> SNYK-PYTHON-PIP-609855 - can't upgrade PIP due to incompatibility with credential escaping<br> SNYK-PYTHON-PIP-1278135 - can't upgrade PIP due to incompatibility with credential escaping<br> SNYK-PYTHON-DATEPARSER-1063229 - no fix available<br> SNYK-PYTHON-CELERY-2314953 - fix can't be apply due to incompatibility with python 3.6<br> SNYK-PYTHON-PILLOW-2329135 - fix can't be apply due to incompatibility with python 3.6<br> SNYK-PYTHON-PILLOW-2331905 - fix can't be apply due to incompatibility with python 3.6<br> SNYK-PYTHON-PILLOW-2331907 - fix can't be apply due to incompatibility with python 3.6<br> SNYK-PYTHON-PILLOW-2331901 - fix can't be apply due to incompatibility with python 3.6<br> SNYK-PYTHON-PILLOW-2397241 - fix can't be apply due to incompatibility with python 3.6<br> SNYK-PYTHON-CRYPTOGRAPHY-1070544 - can't apply fix risk accepted SNYK-PYTHON-PYSAML2-1063038 - can't apply fix risk accepted SNYK-PYTHON-PYSAML2-1063039 - can't apply fix risk accepted See merge request engineering/platform-backend!6465

    # Default values
    HALF_LIFE = {
    "campaign": 1000,
    "course-of-action": 182,
    "eclecticiq-sighting": 182,
    "exploit-target": 182,
    "incident": 182,
    "indicator": 30,
    "report": 182,
    "threat-actor": 1000,
    "ttp": 720,
  6. Select the Override value option to override the default half-life value for the entity, and to set a custom one.
    Enter an integer to represent the number of days it takes the entity to lose half its intelligence value.

  7. In the Tags section, click Add tags to associate one or more tags with the entity .
    Tags enable structuring and categorizing entities based on criteria such as confidence and attack stage.
    Tags improve findability, and they offer quick reference pointers to place entities in a broader cyber threat context.

  8. Click Source, and select the source of the threat information you are using to create the new entity.
    The options available are the names of existing assigned user groups in the Intelligence Center.

  9. Go to the Source reliability section.
    Use this option to flag the entity with a predefined reliability value to help other users assess how trustworthy the entity data source is.

  10. Select the Inherit from source option to assign the entity the same reliability value as the corresponding original data source.

  11. Select the Custom override option to override the default source reliability value for the entity, and to set a custom one.
    From the drop-down menu select, select an option to flag the entity data source reliability level.

  12. Values in this menu have the same meaning as the first character in the two-character Admiralty System code.
    Example: B - Usually reliable

Add information source details

  1. In the Description field, provide context and details to qualify the information source.
    For example, enter a job role, or the function of an institution.

  2. In the Identity field, enter the name of the information source.
    For example, an individual’s name or the official name of an entity such as an organization or government agency.

  3. From the Roles drop-down menu, select one or more options to define how the information source contributed to the information in the report.

  4. In the References field, enter a URL pointing to relevant reference information on the report, if available.
    The field takes only URLs as input. Enter one URL per field.

    • To confirm the current input and to display a new input field, press ENTER.

    • To remove an input field from this section, click the corresponding .

Define sharing and usage

  1. From the TLP drop-down menu, select the TLP color code you want to use to filter enrichment data.
    You can choose to override the TLP color by selecting Not set in the Override TLP drop-down menu.
    TLP provides an intuitive reference to assess how sensitive information is, focusing in particular on how serious it is, and whom it should or should not be shared with.

  2. In the Terms of use field, enter any legal notes about fair use of the information about the entity.

Define a workflow

  1. Select the Add to dataset checkbox to include the campaign to one or more existing datasets.
    From the drop-down menu select the target datasets you want to add the entity to.

  2. Select the Manually enrich checkbox to manually enrich the entity with the enricher sources you select from the Enrichers to apply drop-down menu.

Save and publish

To store your changes, click Save; to discard them, click Cancel.
To access additional save options, click the down arrow on the Save button:

  • Click Save draft to store your changes without publishing the entity.

  • Click Publish to release the new version of the entity that includes your changes.

  • Click Cancel to discard the changes.

Save a draft

Drafts are available in the entity editor under Draft entities.

Two additional options are available when saving an entity as a draft:

  • Click Save draft and new if you are creating a new entity and have not saved it before. This option saves the current populated form as a draft without publishing it to the Intelligence Center, and creates and opens a new draft form in the editor.

  • Click Save draft and duplicate to the current populated form as a draft without publishing it to the Intelligence Center, and create and opens a prepopulated copy of the draft entity in the editor to speed up the creation of a new entity of the same type.

Publish an entity

Published entities are saved to the Intelligence Center.
When the new entity is indexed, it is available in the Intelligence Center, in the entity editor under Published.
Published entities associated with a workspace or included in a dataset are available also through the corresponding workspace and dataset.

Two additional options are available when publishing an entity:

  • Click Publish and new if you are creating a new entity and you have not published it before. This option saves the current populated form, publishes it to the Intelligence Center, and creates and opens a new form in the editor.

  • Click Publish and duplicate to save the current populated form, publish it to the Intelligence Center, and create and open a prepopulated copy of the newly published entity in the editor to speed up the creation of a new entity of the same type.

See also