Convert Figma logo to code with AI

dfir-iris logoiris-web

Collaborative Incident Response platform

1,052
175
1,052
156

Top Related Projects

AIL framework - Analysis Information Leak framework. Project moved to https://github.com/ail-project

3,357

TheHive: a Scalable, Open Source and Free Security Incident Response Platform

5,245

MISP (core software) - Open Source Threat Intelligence and Sharing Platform

1,726

Fast Incident Response

All of the ad-hoc things you're doing to manage incidents today, done for you, and much more!

6,282

Open Cyber Threat Intelligence Platform

Quick Overview

IRIS-Web is an open-source collaborative incident response platform designed for Computer Security Incident Response Teams (CSIRTs). It provides a centralized system for managing and investigating cybersecurity incidents, offering features like case management, evidence handling, and reporting capabilities.

Pros

  • Comprehensive incident response workflow management
  • Customizable and extensible through modules and integrations
  • User-friendly interface with role-based access control
  • Active community support and regular updates

Cons

  • Steep learning curve for new users due to its extensive features
  • Requires significant setup and configuration for optimal use
  • Limited out-of-the-box integrations compared to some commercial alternatives
  • Resource-intensive for smaller organizations or teams

Getting Started

To set up IRIS-Web:

  1. Clone the repository:

    git clone https://github.com/dfir-iris/iris-web.git
    
  2. Navigate to the project directory:

    cd iris-web
    
  3. Use Docker Compose to build and run the application:

    docker-compose up -d
    
  4. Access the web interface at http://localhost:8000 and follow the setup wizard to configure your instance.

Note: For production use, refer to the official documentation for advanced configuration and security considerations.

Competitor Comparisons

AIL framework - Analysis Information Leak framework. Project moved to https://github.com/ail-project

Pros of AIL-framework

  • Specialized in analyzing information leaks and dark web monitoring
  • Supports a wide range of data sources, including pastes, social media, and darknet markets
  • Offers advanced natural language processing and machine learning capabilities

Cons of AIL-framework

  • Steeper learning curve due to its complex architecture and specialized features
  • Less focus on general-purpose incident response and case management
  • May require more resources to set up and maintain

Code Comparison

AIL-framework (Python):

from packages import Item
from packages.Date import Date

class Paste(Item.Item):
    def __init__(self, p_path):
        self.p_path = p_path
        self.p_date = Date(p_path.split('/')[-4:-1])
        self.p_source = p_path.split('/')[-5]

iris-web (Python):

class CaseTask(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    task_title = db.Column(db.String(256), nullable=False)
    task_description = db.Column(db.Text(), nullable=True)
    task_tags = db.Column(db.String(256), nullable=True)
    task_open = db.Column(db.Boolean, nullable=False, default=True)

Both projects use Python, but AIL-framework focuses on data processing and analysis, while iris-web emphasizes case management and task tracking for incident response.

3,357

TheHive: a Scalable, Open Source and Free Security Incident Response Platform

Pros of TheHive

  • More mature project with a larger community and extensive documentation
  • Integrated with MISP for threat intelligence sharing
  • Supports case templates for standardized workflows

Cons of TheHive

  • Steeper learning curve due to more complex architecture
  • Requires more resources to set up and maintain
  • Less flexible customization options for smaller teams

Code Comparison

TheHive (Scala):

def create(caze: Case): Future[Case] = {
  val id = caze.id.getOrElse(UUID.randomUUID.toString)
  val newCase = caze.copy(
    id = Some(id),
    createdAt = Some(new Date),
    createdBy = Some(auth.userId)
  )
  caseRepo.create(newCase)
}

IRIS (Python):

@staticmethod
def add_case(case_name, case_description, case_customer, case_soc_id):
    case = Cases()
    case.name = case_name
    case.description = case_description
    case.customer = case_customer
    case.soc_id = case_soc_id
    db.session.add(case)
    db.session.commit()
    return case

Both repositories provide incident response platforms, but TheHive offers more advanced features and integrations, while IRIS focuses on simplicity and ease of use. TheHive's code is written in Scala, utilizing functional programming concepts, whereas IRIS uses Python with a more straightforward object-oriented approach. TheHive might be better suited for larger organizations with complex workflows, while IRIS could be more appropriate for smaller teams or those new to incident response platforms.

5,245

MISP (core software) - Open Source Threat Intelligence and Sharing Platform

Pros of MISP

  • More mature and widely adopted in the threat intelligence community
  • Extensive integration capabilities with other security tools and platforms
  • Robust sharing features for collaborative threat intelligence

Cons of MISP

  • Steeper learning curve and more complex setup process
  • Can be resource-intensive for smaller organizations
  • User interface may be less intuitive for some users

Code Comparison

MISP (PHP):

public function add() {
    if ($this->request->is('post')) {
        $this->Tag->create();
        if ($this->Tag->save($this->request->data)) {
            $this->Flash->success(__('The tag has been saved.'));
            return $this->redirect(array('action' => 'index'));
        }
        $this->Flash->error(__('The tag could not be saved. Please, try again.'));
    }
}

IRIS (Python):

@tag_blueprint.route('/add', methods=['POST'])
@login_required
def add_tag():
    tag_name = request.json.get('tag_name')
    if not tag_name:
        return response_error("Missing tag name")
    
    tag = Tag(tag_name=tag_name)
    db.session.add(tag)
    db.session.commit()
    return response_success("Tag added successfully")

Both repositories provide threat intelligence platforms, but MISP offers more advanced features and wider adoption, while IRIS-web may be more suitable for smaller teams or those preferring a more streamlined interface. The code comparison shows different approaches to adding tags, with MISP using PHP and a MVC structure, while IRIS uses Python with Flask routing.

1,726

Fast Incident Response

Pros of FIR

  • Simpler and more lightweight, making it easier to set up and maintain
  • Focuses specifically on incident response, providing a streamlined workflow
  • Integrates well with existing CERT/CSIRT processes and tools

Cons of FIR

  • Less actively maintained, with fewer recent updates
  • Limited customization options compared to IRIS
  • Lacks some advanced features like threat intelligence integration

Code Comparison

FIR (Python):

class Incident(models.Model):
    date = models.DateTimeField(default=timezone.now, blank=True)
    is_starred = models.BooleanField(default=False)
    subject = models.CharField(max_length=256)
    description = models.TextField()
    severity = models.IntegerField(choices=SEVERITY_CHOICES, default=1)

IRIS (Python):

class Case(BaseModel):
    name = fields.CharField(max_length=256)
    description = fields.TextField(null=True)
    soc_id = fields.CharField(max_length=256)
    customer = fields.ForeignKeyField(Customer, backref='cases', null=True)
    initial_date = fields.DatetimeField(default=datetime.datetime.now)
    last_update = fields.DatetimeField(default=datetime.datetime.now)

Both projects use similar model structures for incidents/cases, but IRIS offers more fields and relationships, reflecting its more comprehensive approach to case management.

All of the ad-hoc things you're doing to manage incidents today, done for you, and much more!

Pros of Dispatch

  • Robust integration ecosystem with 30+ plugins for various services
  • Advanced workflow automation capabilities
  • Backed by Netflix, potentially offering more resources and long-term support

Cons of Dispatch

  • Steeper learning curve due to more complex architecture
  • Requires more setup and configuration compared to IRIS

Code Comparison

IRIS (Python):

from app import db
from app.models import Cases

def get_case(case_id):
    return Cases.query.filter(Cases.case_id == case_id).first()

Dispatch (Python):

from dispatch.database import SessionLocal
from dispatch.incident import service as incident_service

def get_incident(*, db_session: SessionLocal, incident_id: int):
    return incident_service.get(db_session=db_session, incident_id=incident_id)

Both projects use Python and follow similar patterns for database queries, but Dispatch's code structure appears more modular with separate service layers.

IRIS is a simpler, more straightforward incident response platform, while Dispatch offers more advanced features and integrations at the cost of increased complexity. IRIS may be easier to set up and use for smaller teams or organizations, whereas Dispatch might be better suited for larger enterprises with more complex incident response needs.

6,282

Open Cyber Threat Intelligence Platform

Pros of OpenCTI

  • More comprehensive threat intelligence platform with a wider range of features
  • Stronger focus on knowledge management and threat actor tracking
  • Better integration with external threat intelligence sources

Cons of OpenCTI

  • Steeper learning curve due to its complexity
  • Requires more resources to set up and maintain
  • May be overkill for smaller organizations or simpler use cases

Code Comparison

OpenCTI (Python):

class ThreatActor(CustomObject):
    _type = 'threat-actor'
    name = StringProperty(required=True)
    description = StringProperty()
    aliases = ListProperty(StringProperty)

IRIS (Python):

class CaseSchema(ma.Schema):
    case_id = fields.Integer()
    case_name = fields.String()
    case_description = fields.String()
    case_customer = fields.Integer()

Both projects use Python, but OpenCTI focuses on threat intelligence objects, while IRIS is more oriented towards case management. OpenCTI's code structure reflects its broader scope in threat intelligence, whereas IRIS is tailored for digital forensics and incident response workflows.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Incident Response Investigation System
Current Version v2.4.12
Online Demonstration

IRIS

License: LGPL v3
Iris is a web collaborative platform aiming to help incident responders sharing technical details during investigations.

demo_timeline

Table of contents

Getting started

It is divided in two main parts, IrisWeb and IrisModules.

  • IrisWeb is the web application which contains the core of Iris (web interface, database management, etc).
  • IrisModules are extensions of the core that allow third parties to process data via Iris (eg enrich IOCs with MISP and VT, upload and injection of EVTX into Splunk).

IrisWeb can work without any modules though defaults ones are preinstalled. Head to Manage > Modules in the UI to configure and enable them.

Running Iris

To ease the installation and upgrades, Iris is shipped in Docker containers. Thanks to Docker compose, it can be ready in a few minutes.

#  Clone the iris-web repository
git clone https://github.com/dfir-iris/iris-web.git
cd iris-web

# Checkout to the last tagged version 
git checkout v2.4.12

# Copy the environment file 
cp .env.model .env

# Build the dockers
docker compose build

# Run IRIS 
docker compose up

Iris shall be available on the host interface, port 443, protocol HTTPS - https://<your_instance_ip>.
By default, an administrator account is created. The password is printed in stdout the very first time Iris is started. It won't be printed anymore after that.
WARNING :: post_init :: create_safe_admin :: >>> can be searched in the logs of the webapp docker to find the password.
The initial password can be set via the configuration.

Iris is split on 5 Docker services, each with a different role.

  • app: The core, including web server, DB management, module management etc.
  • db: A PostgresSQL database
  • RabbitMQ: A RabbitMQ engine to handle jobs queuing and processing
  • worker: Jobs handler relying on RabbitMQ
  • nginx: A NGINX reverse proxy

Configuration

There are three different options for configuring the settings and credentials: Azure Key Vault, Environment Variables and Configuration Files. This is also the order of priority, if a settings is not set it will fall back on the next option. For all available configuration options see configuration.

Versioning

Starting from version 2.0.0, Iris is following the Semantic Versioning 2.0 guidelines.
The code ready for production is always tagged with a version number. alpha and beta versions are not production-ready.

Do not use the master branch in production.

Showcase

You can directly try Iris on our demo instance.
One can also head to tutorials, we've put some videos there.

Documentation

A comprehensive documentation is available on docs.dfir-iris.org.

Upgrades

Please read the release notes when upgrading versions. Most of the time the migrations are handled automatically, but some changes might require some manual labor depending on the version.

API

The API reference is available in the documentation or documentation repository.

Help

You can reach us on Discord or by mail if you have any question, issue or idea!
We are also on Twitter and Matrix.

Considerations

Iris is still in its early stage. It can already be used in production, but please set backups of the database and DO NOT expose the interface on the Internet. We highly recommend using a private dedicated and secured network.

License

The contents of this repository is available under LGPL3 license.

Sponsoring

Special thanks to Deutsche Telekom Security GmbH for sponsoring us!