All Projects → r0hi7 → DockerENT

r0hi7 / DockerENT

Licence: MIT license
The only open-source tool to analyze vulnerabilities and configuration issues with running docker container(s) and docker networks.

Programming Languages

python
139335 projects - #7 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to DockerENT

workshop-subscription-system
No description or website provided.
Stars: ✭ 28 (-77.42%)
Mutual labels:  hacktoberfest2020
styles
A collection of cool effects in html, css and javascript.
Stars: ✭ 35 (-71.77%)
Mutual labels:  hacktoberfest2020
Web-App
A Web Application foundation for Raku
Stars: ✭ 21 (-83.06%)
Mutual labels:  hacktoberfest2020
spamtoberfest
Fight against PR spammers
Stars: ✭ 51 (-58.87%)
Mutual labels:  hacktoberfest2020
Algoflow
Algorithm Visualizer
Stars: ✭ 21 (-83.06%)
Mutual labels:  hacktoberfest2020
Inheritance-2020
Official Repository for Inheritance Submissions 2020
Stars: ✭ 18 (-85.48%)
Mutual labels:  hacktoberfest2020
QuickBooks-V3-DotNET-SDK
.Net SDK for QuickBooks REST API v3 services
Stars: ✭ 90 (-27.42%)
Mutual labels:  hacktoberfest2020
Logan1x.github.io
Personal Portfolio Website 🌐
Stars: ✭ 122 (-1.61%)
Mutual labels:  hacktoberfest2020
Hacktoberfest-Algorithms
This repository is mainly open to those who are looking to make some PRs for the Hacktoberfest 2020 event. In this repository, you can add programs on some useful algorithms for Competitive Programming in any languages.
Stars: ✭ 47 (-62.1%)
Mutual labels:  hacktoberfest2020
hello-world-all-programming-language
This is a repository of examples of hello world programs in all programming languages
Stars: ✭ 23 (-81.45%)
Mutual labels:  hacktoberfest2020
CBJ Smart-Device Resources
🧰 Have you ever wondered if there is an open-source project to make your own smart home?, cause you just found part of one!. This part is in charge of general resources like instructions to prepare the smart devices.
Stars: ✭ 18 (-85.48%)
Mutual labels:  hacktoberfest2020
godot tools
A set of GDScript EditorScript and EditorPlugins tools that automate boring tasks on Godot Engine.
Stars: ✭ 50 (-59.68%)
Mutual labels:  hacktoberfest2020
Hacktoberfest-2020-Baby
No description or website provided.
Stars: ✭ 31 (-75%)
Mutual labels:  hacktoberfest2020
Recursion-Tree-Visualizer
A simple python package that helps to visualise any recursive function by adding a single line of code.
Stars: ✭ 89 (-28.23%)
Mutual labels:  hacktoberfest2020
Geektoberfest-Main
This is the starting point of Geektoberfest! Have a look at the readme for Rules and Guidelines, you can also contribute to the collaborative website in this repo!
Stars: ✭ 12 (-90.32%)
Mutual labels:  hacktoberfest2020
AzSubscriptionCleaner
Delete automatically the useless resources in your Azure subscription.
Stars: ✭ 29 (-76.61%)
Mutual labels:  hacktoberfest2020
Footnote
Simple SwiftUI + CoreData app
Stars: ✭ 38 (-69.35%)
Mutual labels:  hacktoberfest2020
ui-design-daily
abdulqudus001.github.io/ui-design-daily/
Stars: ✭ 21 (-83.06%)
Mutual labels:  hacktoberfest2020
o-fish-ios
iOS app for the Officer's Fishery Information Sharing Hub (O-FISH). The mobile app allows fisheries officers to document and share critical information gathered during a routine vessel inspection.
Stars: ✭ 28 (-77.42%)
Mutual labels:  hacktoberfest2020
HacktoberFest2021
hacktoberfest-accepted repository
Stars: ✭ 25 (-79.84%)
Mutual labels:  hacktoberfest2020


GitHub Workflow Status GitHub release (latest by date) PyPI - Downloads Libraries.io dependency status for GitHub repo GitHub code size in bytes GitHub
GitHub issues GitHub stars Twitter Follow GitHub followers

DockerENT

DockerENT is activE ruNtime application security scanning Tool (RAST tool). It is a pluggable framework written in Python. It comes with a CLI application and a clean Web Interface written using StreamLit.

DockerENT has been designed to detect weak security misconfigurations in production deployments which can lead to severe consequences. This application connects with running containers in the system and fetches the list of weak and vulnerable runtime configurations and generates a report. If invoked through web interface, it can display the scan and audit report in the UI itself.

How to Run

TL;DR

In hurry to test this? Download the latest stable REL from PyPi and run the Web App, everything else is intuitive.

pip install DockerENT

Then run the application like:

DockerENT -w

Thats it.

Run the latest master

DockerENT has been designed to keep simplicity and usability in mind. Currently you just have to clone the repository and download dependencies or build the Dockerfile. Once the dependencies are installed in local system we are good to run the tool and analyse the runtime configurations for running containers.

# Download and setup
git clone https://github.com/r0hi7/DockerENT.git
cd DockerENT
make venv
source venv/bin/activate

# Run
python -m DockerENT --help 
usage: Find the vulnerabilities hidden in your running container(s).
       [-h] [-d [DOCKER_CONTAINER]] [-p [DOCKER_PLUGINS]]
       [-d-nw [DOCKER_NETWORK]] [-p-nw [DOCKER_NW_PLUGINS]] [-w]
       [-n [PROCESS_COUNT]] [-a] [-o [OUTPUT]]

optional arguments:
  -h, --help            show this help message and exit
  -w, --web-app         Run DockerENT in WebApp mode. If this parameter is
                        enabled, other command line flags will be ignored.
  -n [PROCESS_COUNT], --process [PROCESS_COUNT]
                        Run scans in parallel (Process pool count).
  -a, --audit           Flag to check weather to audit results or not.

  -d [DOCKER_CONTAINER], --docker [DOCKER_CONTAINER]
                        Run scan against the running container.
  -p [DOCKER_PLUGINS], --plugins [DOCKER_PLUGINS]
                        Run scan with only specified plugins.
  -p-nw [DOCKER_NW_PLUGINS], --nw-plugins [DOCKER_NW_PLUGINS]
                        Run scan with only specified plugins.

  -d-nw [DOCKER_NETWORK], --docker-network [DOCKER_NETWORK]
                        Run scan against running docker-network.

  -o [OUTPUT], --output [OUTPUT]
                        Output plugin to write data to.

# or via the container
docker build . -t dockerent
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 8501:8501 --name dockerent dockerent
# Then just open your browser to http://localhost:8051

See this quick video to get started with.

Features

  • Plugin driven framework.
  • Use low level docker api to interact with running containers.
  • Clean and Easy to Use UI.
  • Comes with 9 docker scan plugins out of which, 6 plugins can audit results.
  • Framework ready to work docker-networks.
  • Output plugins can write to file and html sinks.
  • The only open source interactive docker scanning tool.
  • Can run plugins in parallel.
  • Under active development 😄.

How to Create your own Plugin.

  • Have some idea to perform runtime scan.
  • Copy the same file to create your demo plugin.
cp DockerENT/docker_plugins/docker_sample_plugin.py DockerENT/docker_plugins/docker_demo_plugin.py
  • Just make sure, you maintain following structure.
_plugin_name = 'demo_plugin'

def scan(container, output_queue, audit=False, audit_queue=None):
    _log.info('Staring {} Plugin ...'.format(_plugin_name_))

    res = {}

    result = {
        'test_class': {
            'TEST_NAME': ['good']
        }
    }

    res[container.short_id] = {
        _plugin_name_: result
    }
    
    # Do something magical.

    _log.info('Completed execution of {} Plugin.'.format(_plugin_name_))

    '''Make Sure you put dict of following structure in Q.
    {
        'contiainer_id': {
            'plugin_name': {
                'test_name_demo1': {
                    resultss:[]
                },
                'test_name_demo2': {
                    results: []
                }
            }
        }
    }
    '''
    output_queue.put(res)

    if audit:
        _audit(container, res, audit_queue)

def _audit(container, results, audit_queue):
    '''Make Sure to add dict of following structure to Audit Q
    res = {
        "container_id": [
            "_plugin_name_, WARN/INFO/ERROR, details"
        ]
    }
    '''
    # Magical logic to perform Audit.
    audit_queue.put(res)
  • Thats it. Still confused, Explain me the idea in Issues and will review and help you out, or we may end up working on it together.
  • This plugin will automatically come to drop down in UI. 😄 Easy right.
  • Sit back and eval results.

Plugins Features:

Plugin Name Plugin File Feature Audit
CMD_HISTORY File Identify shell history Root history and User shell history
FILESYSTEM File Identify RW File Systems If RW file systems are present.
NETWORK File Identify Network state Identifies All mapped ports.
PLAINTEST_PASSWORD File Identify password in different files
SECURITY_PROFILES File Identify Weak Security Profiles List Weak security profiles.
USER_INFO File Identify user info List permissions in passwd and other sensitive files
SYSTEM_INFO File Identify docker system info No Audit
FILES_INFO File Identify world writeable directories and files List all such files.
PROC_INFO File Identify the list of process in docker system

CLI interface

Pros

  • Rich Logging interface, can help in easy debugging through extensive debug logs.
  • Can run in parallel, just pass -n <count>, to specify the processors in parallel.
  • Can dump output in JSON and HTML file.

Cons

  • Audit output is not dumped to file.
  • Selecting multiple specific dockers is pain.

UI Interface

Pros

  • Clean, and easy to use UI.
  • Everything at one single page.
  • Ease of selecting multilpe docker images, multilpe plugins and multilpe docker-networks.
  • Audit report present.

Cons

  • Logging interface not Rich.
  • JSON reports are bulky.
  • Rely on third party lib StreamLit, all issues with framework are inherent.

Help Make this tool better

  • Create a PR, Issues are more than welcome.
  • Try it, test it and enhance it.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].