Giter VIP home page Giter VIP logo

z1pti3 / jimi Goto Github PK

View Code? Open in Web Editor NEW
158.0 10.0 31.0 18.3 MB

Jimi is an automation first no-code platform designed and developed originally for Security Orchestration and Response. Since its launch jimi has developed into a fully fledged IT automation platform which effortlessly integrates with your existing tools unlocking the potential for autonomous IT and Security operations.

Home Page: https://www.secureack.com

License: Apache License 2.0

Python 61.94% CSS 2.55% JavaScript 11.99% HTML 23.52%
orchestration security jimi soar automation secops monitoring it-automation workflow-automation no-code

jimi's Introduction

Project is no longer under active development instead it has been taken over by SecureAck who has created a SaaS offering. Checkout details @ https://www.secureack.com

image

jimi is an orchestration automation tool focusing on multi-team collaboration through an intuitive flow-based interface. Initially developed by Cyber Security Professionals as an Security Automation Orchestration and Response ( SOAR ) platform jimi now offers unlimited flexibility into all areas of automation from IT/Security operations to Development and CI/CD pipelines.

In practice jimi is a cross between a low-code programming language like node red and a no-code SOAR / Automation platform. Built on-top of Python jimi has the power and capability to do just about anything, whats more its expandable and event supports raw Python code directly within the flows created.

jimi sample 1

Getting Started

The quickest way to get started is to use our install script on a Ubuntu system

Prerequisites

  • mongodb 4.2+
  • python3
  • python3-pip

Installation

wget https://raw.githubusercontent.com/z1pti3/jimi-setup/main/install.sh
bash install.sh

After install access jimi @ http://(YOUR SERVER ADDRESS):5015

More options for other systems can details can be found within our document site.

View Help Docs: jimi Docs

Applications and Integrations

Jimi’s power comes from the over 60 open source integrations that extend the functionally to include alerting and monitoring, asset management, software packaging and deployment, security playbooks, SIEM and XDR. – We are always looking to build new integrations so if something is missing let us know.

View Integrations: Integrations

View Sample Flows: Samples

Getting Help

Start a discussion, log and issues or join us live on discord.

discord

jimi Video Introduction

Enterprise Ready

jimi has all of your enterprise needs covered and has been extensively tested for stability and to date has executed more than 10 billion actions.

Features ( With Recommended Plugins )

  • Remote commands and playbooks ( winrm, ssh )
  • Remote file trasnfer ( scp, smb )
  • Run python scripts and script blocks
  • Alerting and monitoring
  • Send emails
  • Asset Management
  • Link flows together as functions
  • Execute any API request
  • React to your Humio event log results
  • SIEM and XDR
  • Clustering
  • Codfiy flows
  • In-built docs
  • Threaded and Multiprocessing
  • Multi-user
  • Scheduling ( Trigger, Random Ranges, Cron )
  • Debuging mode UI
  • 2FA
  • Object and field level ACL
  • Secure password storage
  • Audit logging
  • Import/Export
  • Loops
  • Rich no-code flow editor
  • Append to existing conducts from other condcuts
  • Variables and Logic
  • Self monitoring and automatic recovery
  • Object revisions
  • Remote authenication

jimi's People

Contributors

0xseceng avatar b1scuit-thi3f avatar terrifiedbug avatar u-n-i-c-o-rn avatar z1pti3 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

jimi's Issues

Button to remove unused objects from Jimi

Is your feature request related to a problem? Please describe.
Over time unused objects can build up within JIMI which can cause a messy object explorer and difficulty with creating additional objects that may have the same name.

Describe the solution you'd like
Implement a button which clears up stale/unused/unlinked objects.

Describe alternatives you've considered
Could also use a cron job but this could increase the risk of objects being removed that users may still want.

Bug - No mobile interface

Using the system on a mobile device such as a mobile phone results in the system being rendered as a desktop site. - This is not usable on such a device

Alert Users When Modifying Shared Object

Is your feature request related to a problem? Please describe.
Something that we run into now and again is when an object is mirrored (as in a direct copy of the object, rather than a duplicate) and is subsequently changed, all other copies are of course changed as well. It would be useful to be able to identify somehow if an object is re-used anywhere else.

Describe the solution you'd like
When a user attempts to make a change, perhaps a popup letting them know that the object is shared? Alternatively, we could have some sort of icon/indicator that lets a user easily identify shared objects.

Settings.json Schema Update

The following needs to be added to the settings.json file on the Wiki installation page:

{
"system" : {
"systemID" : 0,
"accessAddress" : "127.0.0.1",
"accessPort" : 5000
},

GUI - Status Page Suggestions

Status page is really nice, but we should look at a few nice looking options:

  • Hide/Show Disabled Triggers
  • Group By Cluster

I may add more here before I sort these out.

Object scopes

Although ACL allows you to only make object visible for those who have access. It would be nice to enable greater control over this by selecting user, conduct, group, everyone to reduced the number of objects you have to search. maybe this is a search filter?

Mandatory Fields

Is your feature request related to a problem? Please describe.
Some fields should be required as mandatory to be completed/filled in for a form to save. This would avoid users maybe missing critical fields such as entity in assets, or searchRepository in Humio.

Describe the solution you'd like
This could be done on client-side as this might be easier to override the individual form items like how we do for tool tips etc, but server-side would also be beneficial for future-proofing it.

Describe alternatives you've considered
Telling the users to do it properly. But unfortunately users are stupid sometimes. e.g. myself.

UI Getting Out of Sync

Sometimes the UI gets out of sync on other screens, this appears to be caused by the assumption that the database has committed a push at the time a sync is requested.

Maybe an alternative would be to post the dictionary of items, positions and settings back the UI server so it can then work out what needs to be updated to bring it all in sync?

Overhaul - Plugin System

The jimi plugin system is core to its functionality and although it is functional there are a number of items that need to be overhauled.

Core

  • Update
  • Uninstall and Cleanup
  • Enable and Disable
  • Dependency checking and improved error handling
  • Core API

Web

  • Plugin view/panel + upgrade and install options
  • Web API
  • Static Includes
  • Component Framework
  • Dashboard / visualization Framework

Documentation

Unable to save Security Settings of objects when multiple Security Setting windows are open

Describe the bug
When you change the security settings of an object, you should be able to do so repeatedly while working on the security settings of other objects within a flow.

To Reproduce

  1. Right click an object and click Security Settings
  2. Change the ACL of the object or Flow UI and save, not closing the window.
  3. Right click another object and click Security Settings
  4. Close the security settings window of the initial object
  5. Right click the initial object and click Security Settings
  6. Security Settings object will not re-open.

Expected behaviour
You should be able to change the security settings of an object without having to re-refresh the page.

Additional context
Only 200 status codes are seen

Bug - timeBetween function does not evaluate past midnight

When using the timeBetween function if you configure to go past midnight the function always returns false.

if timeBetween("21:00","07:00") == True

As a workaround I have had to use an or statement.

if timeBetween("21:00","24:00") == True or timeBetween("00:00","07:00") == True

[Feature] - Live output for codify / testTrigger

Codify and testTrigger wait for a flow to execute fully before returning results, it would be good if these results were polled and could be updated when results are provided by a given function instead of waiting

jimi Cache Memory Reduction - Slow?

Within jimi we use a Cache maxSzie value that is used to reduce the size of a given cache item only when adding new items to the cache. To get maximum performance jimi never clears this cache unless the maxSize value is met and you attempt to add a new item to the cache.

It is arguable how effective this feature was, but it does have significant overheads to the speed and performance of jimi.

Without this feature it is easier for developers to create plugins that use excessive amounts of memory, developers will need to be aware of this and make sure that checks are made within there own plugins if they use jimi core Cache feature to speed up certain operations.

Main jimi functions already keep memory footprints to a minimum and wont be impacted

Override form data - var display name must equal core action varname

Could you please add functionality which would allow the display name to store a different value as opposed to the value located in the core action class. I'll be able to use the generic values instead of creating my own (as I'll be able to change the display name)

Thanks

Bug - Touch screen context menu and object editing

When using a touch device the conduct editor works for selecting and moving objects but does not allow double click to edit. It is also not possible to connect flow objects when using a touch device.

Furthermore, the context menu ( right click ) does not work and is a bit small to use on a touch device.

Codify does not support flow loops

When using codify if you create a link within the flow from one object back to an earlier part of the flow codify is hangs during generation.

Issue with Tabs

Describe the bug
Tabs don't quite seem to work as expected. Either tabs aren't loading or are appearing blank.

To Reproduce
Login to JIMI
Select a few conducts/status/workers etc
Try and switch between them using the tab shortkey (CTRL-`)

Expected behaviour
Tab should switch between the selected tab and the last tab

Screenshots
Tab appears blank
image

Desktop (please complete the following information):

  • OS: Windows 10
  • Browser: Chrome
  • Version: JIMI v1.5

Feature - Collector System Fuction

Object to collect events into a list for use in bulk processing part way into a flow. Similar to forEach but the opposite.

Other nice feature would be for dev options to do this on a given action so that a dev can make use of mongodb bulk queries to reduce overheads. Assets come to mind as each asset is collected one at a time?

Feature - Continuous trigger

It would be good if you could create a trigger that would run continuously within a worker thread without the need to be scheduled ( which can be an overhead on fast acting triggers e.g. 1s )

Test Fire trigger - Callbacks

When running a test fire trigger on a flow that has callbacks i.e. occurrence clear, it does not work as the test fire trigger runs on codify which does not have a flow to call back to.

Can we make it optional to run the real flow instead of codify?

Optional Visibility for Object Form Items

Is your feature request related to a problem? Please describe.
Nope

Describe the solution you'd like
Currently all form items are shown. It would be neater if we could hide certain items unless a certain requirement is met, e.g. a checkbox. For example, in the Humio plugin we have a number of Humio overrides. If the override checkbox is not ticked we should hide the four other items.

Feature - Plugin Developers Custom Properties UI

To add customer properties UI currently you have to push the change to jimi web. It would be ideal if like the rest of jimi if plugin developers can do this from within there own plugins. This will make the UI very flexible for advanced developers and still easy for simple plugins as it is today with the standard controls.

Over time we can then merge custom UI into native jimi

Restarted Node Doesn't Respect Trigger's System ID

Just noticed that when I restarted Node 1, a trigger running on Node 3 will re-run as if it has been reset.
This possibly only affects failed triggers.

I suspect we just need to update the trigger reset function (below) in system install to only search for triggers that match its system ID?

jimi/system/install.py

Lines 92 to 103 in 3bb9804

# Set startCheck to 0 so that all triggers start
def resetTriggers():
from core.models import trigger
print(len(trigger._trigger().getAsClass()))
# Clearing any triggers with a startCheck set - Very poor as it hammers the DB, be better to do this as one mass update command to the database
# This wont scale to clustering as it will clear all running triggers even if they were running by another cluster node
triggers = trigger._trigger().query(query={"startCheck" : { "$gt" : 0}})["results"]
for triggerJson in triggers:
triggerClass = trigger._trigger().get(triggerJson["_id"])
triggerClass.startCheck = 0
triggerClass.update(["startCheck"])

Model Editor Attempts to Return Non-Standard-Type Attributes

Describe the bug

jimi/core/model.py

Lines 165 to 180 in c2618c2

@api.webServer.route(api.base+"models/<modelName>/<objectID>/", methods=["GET"])
def getModelObject(modelName,objectID):
class_ = loadModel(modelName).classObject()
if class_:
classObject = class_().getAsClass(api.g.sessionData,id=objectID)
if classObject:
classObject = classObject[0]
members = [attr for attr in dir(classObject) if not callable(getattr(classObject, attr)) and not "__" in attr and attr ]
result = {}
for member in members:
result[member] = getattr(classObject,member)
return { "results" : [result]}, 200
else:
return {}, 404
else:
return {}, 404

The asset plugin utilises an attribute called bulkClass. This is a type of db._bulk. When a user attempts to navigate to an object of type assetUpdate (which uses the bulkClass attribute), they will not be able to see the individual attributes as when the client performs the AJAX call GET /api/1.0/models/ it is returned a list of attributes (see code referenced above) which it then tries to serialise from JSON. However, it doesn't know how to handle the non-standard attribute type, and so fails to load anything, instead raising a TypeError:
TypeError: Object of type _bulk is not JSON serializable

To Reproduce
Steps to reproduce the behavior:

  1. Login to JIMI
  2. Navigate through Administration -> Object Editor -> assetUpdate
  3. Attempt to load an object within the list

Expected behaviour
The object attributes should be displayed.

Desktop (please complete the following information):

  • OS: Windows 10
  • Browser: Chrome
  • Version: JIMI 1.6 (latest)

Additional context
Although this looks like it only affects assetUpdate at the moment, we should consider futureproofing the API to only return "readable" attributes.

JIMI Core System - Inherited ACL from Trigger

Is your feature request related to a problem? Please describe.
Flow should inherit ACL from the initial trigger. This would stop users who can create flows from escalating their privilege to the JIMI users (as JIMI runs everything in core as himself)

Run jimiFlow Sections Remotely

It has been talked about before to see how we can add a feature to permit a remote jimi agent to execution part of all of a jimiFlow. For this to work we would need to look at how we proxy database communications and hook the core db model so that it can relay via jimi_core.

Protections to prevent breakout would need to be considered, this feature would make a good addition on the 3.0 update to the backend.

Poor enforcement of ACL and field level ACL

Developers have to remember to append the right checks when preforming database operations, this leaves it open to attack if forgotten.

We should look to enforce authorisation checks by default as part of all operations within jimi_web and jimi_core. The entire ACL system could use an overhaul

Global variables

A concept to set variables globally that result in triggers or other flows similar to a state system.

Error Messages Not Appearing on Test Trigger

Describe the bug
Test trigger used to provide the error message if the flow crashed. This is no longer the case.

To Reproduce

  1. Run a test trigger that will fail

Expected behaviour
The error message for the failure should appear in the test trigger codify output

Desktop (please complete the following information):

  • OS: Windows 10
  • Browser: Chrome
  • Version: JIMI v1.7

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.