Coder Social home page Coder Social logo

center-for-threat-informed-defense / tram Goto Github PK

View Code? Open in Web Editor NEW
425.0 425.0 92.0 51.46 MB

TRAM is an open-source platform designed to advance research into automating the mapping of cyber threat intelligence reports to MITRE ATT&CK®.

Home Page: https://ctid.mitre-engenuity.org/our-work/tram/

License: Apache License 2.0

Python 6.72% CSS 0.01% JavaScript 1.03% HTML 6.57% Dockerfile 0.28% Shell 0.11% Makefile 0.20% Jupyter Notebook 85.07%
ctid cyber-threat-intelligence cybersecurity mitre-attack threat-informed-defense

tram's People

Contributors

2xyo avatar bvohaska avatar dependabot[bot] avatar dvoegeli avatar emmanvg avatar hitenkoku avatar jamesbrine-tesserent avatar jlasky2 avatar jonathanbaker avatar kdraslan avatar m3mike avatar mamendoza1 avatar markdavidson avatar markeaimark avatar mehaase avatar nschwane avatar rossj-en avatar youngrm9854 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  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

tram's Issues

ML Pipeline: Retrain ML Model based on TRAM data

As a user, I want to retrain the TRAM model based on reports users have annotated, so that the ML model's accuracy can be improved.

Acceptance Criteria:

  1. manage.py pipeline train or similar command that retrains the model and saves it to disk

Integrate TRAM with ATT&CK GUI Editor

As a user, I want TRAM and ATT&CK GUI Editor (perhaps ATT&CK Workbench) integrated, so that I can have single-pane-of-glass for my work experience.

Acceptance Criteria:

  • TBD

Report Summary

As a user, I want a report summary, so that I can see consolidated information about a report before it is closed and archived.

Acceptance Criteria:

  1. A new summary section (Design TBD) on the Analyze page (Pictured below)

image

Display Mapped Technique Counts

As a User, I want to know where TRAM has and hasn't proposed a technique, so that I don't have to click into every single sentence and get annoyed when there are no techniques.

Acceptance Criteria:

  1. Somehow indicate the number of mapped techniques

image

Download original report

As a user, I want to download the original report, so that I can see the original report after it is processed.

Acceptance Criteria:

  • Original report can be downloaded from dashboard

Improve upload button prominence

As a user, I want the upload button to be easy to hit, because I use it all the time.

Acceptance Criteria:

  • Upload button is more prominent
  • Upload button is better separated from logout button
    image

Map Techniques to Groups and Software

As a User, I want to map techniques to groups and software, so that I can create correct and complete mappings.

Acceptance Criteria:

  1. TBD

Note: I spoke with users and I wasn't able to get to a concrete set of requirements. I think this particular concept needs to be iteratively defined with users when it comes up for implementation.

Upload - Uploads file twice

Process Reports from a URL

As a user, I want TRAM to analyze URls reports, so that I can use NLP on internet resources.

Acceptance Criteria:

  1. URLs can be specified and processed
  2. Supported media types are:
Format Media Type Example URL
HTML text/html TBD
docx application/vnd.openxmlformats-officedocument.wordprocessingml.document TBD
PDF application/pdf TBD
Plain text text/plain TBD

Skip Specified Report Sections

As a user, I want TRAM to skip mapping certain sections, so that I don't have to deal with the noise of removing mappings from those sections.

Requirements:

  1. TBD

User statement:
Most CTI reports have a “Security Solutions”, “Mitigations”, “Recommendations”, or similar section at the end that will trigger TRAM mappings based on language used. Having a word proximity or other rule that would have TRAM skip this section would cut down on review and technique deletions in TRAM.

Implementation Discussion:
This could be rule based, or it could be "built in" behavior. This likely requires iteration with users to get to a concept that works and is implementable.

TRAM can process PDF reports

As a user, I want TRAM to analyze PDF reports, so that I can use NLP on PDF reports.

Acceptance Criteria:

  1. PDF Reports can be uploaded and processed

ML Pipeline: Add reports to queue

As a user, I want to add reports to the queue via command line, so that I can process reports without using the web UI.

Acceptance Criteria:

  1. A command similar to manage.py pipeline add <filename> that creates a document processing job

Report Search

As a user, I want to search for reports on the reports homepage, so that I can more easily find reports that I am looking for.

Acceptance Criteria:

  • A search bar that a user can type in text and the reports filter based on the user input

TRAM handles ATT&CK Updates without losing state

When ATT&CK issues an update, TRAM needs to incorporate that update while keeping all the NLP extraction and sentence adjudication that has been performed to date. The work done by users may represent thousands of hours, so care must be taken to do this well.

Acceptance Criteria TBD

Report Assignee

As a user, I want to add and view a report assignee, so that I specify who is working on a report and see who has reports assigned to them.

Acceptance Criteria:

  • Assignee is added as a column on the reports dashboard
  • Assignee can be specified on the reports dashboard
  • Assignee is visible and editable on the /analyze/id/ page

Package TRAM as a Docker Image

As a user, I want TRAM packaged as a docker image, so that I can easily deploy, run, and use TRAM.

Acceptance criteria TBD.

Validate Trained TRAM Model

Requirements:

  • Train TRAM model based on training data
  • Understand the mapping quality
  • Make a go/no-go decision based on mapping quality

ATT&CK Subtechnique Update

Update TRAM based on sub technique redesign
Re-evaluate NLP models and add additional logic to look for sub-techniques, but use the parent as a fallback

Requirements TBD

Editable Sentence Tokenization

As a user, I want to edit TRAM's tokenization, so that I can correct tokenization mistakes.

Acceptance Criteria:

  • Add a UI widget to break up one sentence into two sentences.
  • Add a UI widget to combine two sentences into one
  • Breaking up a single sentence into 3+ sentences can be achieved by using the "split a sentence" UX widget multiple times

Detect Tools and Software

As a User, I want TRAM to detect Tools and Software, so that I can perform deeper analysis on threat reports.

Acceptance Criteria:

  • Tools and Software have a similar management UI to ATT&CK Techniques
  • ML/NLP Model proposes Tool and Software mappings on either a report or sentence level
    • This is an implementation choice, not a user choice

TRAM is a library

As a user, I want to use TRAM as a library, so I can get the key ML features without running the webapp.

Acceptance Criteria:

  1. pip install tram works
  2. ML pipeline is available via pip installed library

Improved Home Page

User interface and experience
Transform the home page to a dashboard that includes more statistics and data analytics (e.g., top 10 techniques seen from reporting, technique frequency over time, etc.)

Requirements TBD

Add notes/comments to mappings

As a user, I want to comment on mappings, so that I can explain my reasoning for posterity.

Acceptance criteria:

  • A comment thread is available on each mapping

Archive Reports

As a user, I want to archive reports, so that they are not displayed on the main page and do not clutter my viewing experience.

Acceptance Criteria:

  • Add an "Archived" state to reports
  • Add the ability to Archive and Un-Archive reports
  • Add a filtering UX widget (Active | Archived | All), that defaults to active

Input format Architecture Hook

As a developer, I want to add new report formats in a way that follows an established pattern, so I can easily extend the functionality of TRAM

IOC Extraction

As a user I want to be able to extract IOCs from the text. I want to be able to enter my own regex to extract the IOCs and test those IOCs. Finally I want to be able to view the IOCs for a given report on the report detail page.

Acceptance Criteria:

  1. Regexes can be added to parse out custom IOCs
  2. Extracted IOCs can be viewed on the report detail page
  3. IOCs are also exported with reports.

Assign Report to Threat Actor

As a user, I want to assign a report to a Threat Actor, so that I can group reports together by Threat Actor.

Acceptance Criteria:

  1. Drop down that permits a user to assign a Threat Actor to a report.

Implement one common authentication backend

As an admin, I want to use TRAM with my own authentication backend, so that I can more easily manage identity in my organization.

Acceptance criteria:

  1. Identify one commonly used authentication provider (e.g., LDAP) and implement it as an option for TRAM

Improve Add-A-Technique UX

As a user, I want to more easily add techniques to a sentence, so that I can create higher quality mappings.

Acceptance Criteria:

  • In the Add-A-Technique modal (pictured below):
  • Use the naming format: "<Tactic>: <Name> (TID)"
  • Sort Tactics and Techniques how they are sorted in ATT&CK (Tactic -> Technique -> Subtechnique)
  • Add a search widget that supports typing in the name and autocompleting it

image

Auto Advance Sentence on Acceptance

As a user, I want TRAM to go to the next sentence when I accept a mapping, so that I need to click less.

Acceptance Criteria:

  1. When a user clicks "Accept" the sentence context is advanced to the next sentence

image

Distinguish Between Analyst and TRAM Mappings

As a user, I want to understand the difference between mappings from TRAM and that an analyst provided, so that I can better understand and improve the mapping process.

Acceptance Criteria:

  1. Store mapping source in the database
  2. Display mapping source in the UI somehow
  3. For now, don't add filter/etc capabilities based on the new data. Those can come later.

Inline Mapping

As a user, I want to map ATT&CK Techniques to any selection of a report (Inline Mapping), so that I can fully map reports.

Right now, the pipeline is architected so that the software tokenizes the sentences, and mappings must be done within that tokenization. User cannot map across multiple sentences, map to an image, etc.

Acceptance Criteria:

  • The analyze page displays something as close to the original report as possible. This is in contrast to the current "tokenized sentence" view (See screenshot)
  • Users can select/map anywhere in the report, including:
    • Images
    • Tables
    • Multiple sentences
    • Parts of a sentence

Tokenized Sentence View:
image

Report Sorting

As a User, I want to sort the report dashboard by status, so that I can more easily navigate uploaded reports.

Acceptance Criteria:

  • Sort reports by status

Export Architecture Hook

As a developer, I want to add new output formats while following an established pattern, so I can extend TRAM's functionality.

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.