🐳 RAUDI: Regularly and Automatically Updated Docker Images

Overview

🐳 RAUDI: Regularly and Automatically Updated Docker Images

RAUDI (Regularly and Automatically Updated Docker Images) automatically generates and keep updated a series of Docker Images through GitHub Actions for tools that are not provided by the developers.

Documentation License: GPL v3

Table of Contents

What is RAUDI

RAUDI is what will save you from creating and managing a lot of Docker Images manually. Every time a software is updated you need to update the Docker Image if you want to use the latest features, the dependencies are not working anymore.

This is messy and time-consuming.

Don't worry anymore, we got you covered.

You may either fork this repo and use the GitHub Workflow yourself or use it locally (and manage its execution the way you want).

Fork

If you want to fork this repo you also have to set up some secrets to be able to push your images on your personal Docker Hub account. Two GitHub secrets must be set:

  • DOCKER_USER: Your Docker Hub Username;
  • DOCKER_API_TOKEN: Your Docker Hub Password or API Token.

After setting those secrets you have to edit the organization variable set in the tools/main.py file since it is configured to push on the Docker Hub for SecSI.

That's all guys: go to Action, enable it for your forked repo, wait until midnight, and the Workflow will do the heavy work!

Setup

This repo can also be executed locally. The requirements to be met are the following:

  • Python 3.x
  • Docker

The setup phase is pretty straightforward, you just need the following commands:

git clone https://github.com/cybersecsi/RAUDI
cd RAUDI
pip install -r requirements.txt

You're ready to go!

Local Usage

RAUDI can build and push all the tools that are put into the tools directory. There are different options that can be used when running it.

Execution Modes

Normal Execution

In this mode RAUDI tries to build all the tools if needed. The command to run it is simply:

python3 ./raudi.py --all

Single Build

In this mode RAUDI tries to build only the specified tool. The command in this case is:

python3 ./raudi.py --single 
   

   

tool_name MUST be the name of the directory inside the tools folder.

Show tools

If you want to know the available tools you can run this command:

python3 ./raudi.py --list

Bootstrap tool

If you want to quickly add a new tool folder starting from one of the available templates you can run this command:

python3 ./raudi.py --bootstrap 
   

   

Options

Option Description Default Value
--push Whether automatically push to Docker Hub False
--remote Whether check against Docker Hub instead of local Docker before build False
--force Whether build or not if an image with the same tagname has been found False

Available Tools

This is the current list of tools that have been added. Those are all tools that do not have an official Docker Image provided by the developer:

Name Docker Image Source
Apktool secsi/apktool https://github.com/iBotPeaches/Apktool
bfac secsi/bfac https://github.com/mazen160/bfac
dirb secsi/dirb http://dirb.sourceforge.net/
dirhunt secsi/dirhunt https://github.com/Nekmo/dirhunt
dirsearch secsi/dirsearch https://github.com/maurosoria/dirsearch
dnscan secsi/dnscan https://github.com/rbsec/dnscan
Dorks Eye secsi/dorks-eye https://github.com/rbsec/dnscan
EyeWitness secsi/eyewitness https://github.com/FortyNorthSecurity/EyeWitness
ffuf secsi/ffuf https://github.com/ffuf/ffuf
fierce secsi/fierce https://github.com/mschwager/fierce
Findsploit secsi/findsploit https://github.com/1N3/Findsploit
Gitrob secsi/gitrob https://github.com/michenriksen/gitrob
GitTools secsi/gittools https://github.com/internetwache/GitTool
gobuster secsi/gobuster https://github.com/OJ/gobuster
GoogD0rker secsi/googd0rker https://github.com/ZephrFish/GoogD0rker
hydra secsi/hydra https://github.com/vanhauser-thc/thc-hydra
impacket secsi/impacket https://github.com/SecureAuthCorp/impacket
The JSON Web Token Toolkit secsi/jwt_tool https://github.com/ticarpi/jwt_tool
knock secsi/knockpy https://github.com/guelfoweb/knock
LFI Suite secsi/lfisuite https://github.com/D35m0nd142/LFISuite
MASSCAN secsi/masscan https://github.com/robertdavidgraham/masscan
MassDNS secsi/massdns https://github.com/blechschmidt/massdns
nikto secsi/nikto https://github.com/sullo/nikto
nmap secsi/nmap https://github.com/nmap/nmap
pureDNS secsi/puredns https://github.com/d3mondev/puredns
Race The Web secsi/race-the-web https://github.com/TheHackerDev/race-the-web
RestfulHarvest secsi/restfulharvest https://github.com/laramies/theHarvester
Retire.js secsi/retire https://github.com/RetireJS/retire.js
Sandcastle secsi/sandcastle https://github.com/0xSearches/sandcastle
sqlmap secsi/sqlmap https://github.com/sqlmapproject/sqlmap
Sublist3r secsi/sublist3r https://github.com/aboul3la/Sublist3r
theHarvester secsi/theharvester https://github.com/laramies/theHarvester
vim secsi/vim https://github.com/vim/vim
waybackpy secsi/waybackpy https://github.com/akamhy/waybackpy
WhatWeb secsi/whatweb https://github.com/urbanadventurer/WhatWeb

Tool Structure

Every tool in the tools directory contains at least two file:

  • config.py
  • Dockerfile.
  • README.md (optional README for Docker Hub)

If you want to add a new tool you just have to create a folder for that specific tool inside the tools directory. In this folder you have to insert the Dockerfile with defined build args to customize and automate the build. Once you created the Dockerfile you have to create a config.py in the same directory with a function called get_config(organization, common_args). Be careful: the function MUST be called this way and MUST have those two parameters (even if you do not use them). The returning value is the config for that specific tool and has the following structure:

config =  {
    'name': organization+'/
   
    ',
    'version': '', # Should be an helper function
    'buildargs': {
    },
    'tests': []
  }

   

The four keys are:

  • name: the name of the Docker Image (e.g. secsi/ );
  • version: the version number of the Docker Image. For this you may use a helper function that is able to retrieve the latest available version number (look at tools/ffuf for an example);
  • buildargs: a dict to specify the parts of the Docker Images that are subject to updates (again: look at tools/ffuf for an example);
  • tests: an array of tests (usually just a simple one like '--help').

After doing so you are good to go! Just be careful that the name of the tool MUST BE THE SAME as the directory in which you placed its Dockerfile.

There is a NAMING CONVENTION for the versions: use only DOTS and DIGITS; so please remove any trailing 'v' from the version in the specific config.py (for a working example check tools/dirsearch/config.py).

Helpers

To get the latest versions and information about tools and base images a set of helpers has been implemented. If you want to add a new tool you should use these helpers to have a Docker Image that is automatically updated by RAUDI.

get_latest_pip_version

This helper is used to retrieve the latest version of a pip package. All it takes is the name of the package and returns the version number. Example:

VERSION = helper.get_latest_pip_version(package_name)

get_latest_npm_registry_version

This helper is used to retrieve the latest version of a npm package. All it takes is the name of the package and returns the version number. Example:

VERSION = helper.get_latest_npm_registry_version(package_name)

get_latest_github_release

This helper is used to retrieve information about a GitHub repo that uses Releases and has multiple kind of assets (e.g. executables for different OSes). This helper takes the repo (in the format user/repo) and a target string to be able to identify the correct asset to download. It returns a dict with two keys (url and version). Example:

VERSION = helper.get_latest_github_release("user/repo", "linux_amd64")

get_latest_github_release_no_browser_download

This helper is used to retrieve information about a GitHub repo that uses Releases and has only the source code (which means there is a zipball and a tarball). This helper takes the repo (in the format user/repo) and returns a dict with two keys (url and version). Example:

VERSION = helper.get_latest_github_release_no_browser_download("user/repo")

get_latest_github_tag_no_browser_download

This helper is used to retrieve information about a GitHub repo that uses Tags and has only the source code (which means there is a zipball and a tarball). This helper takes the repo (in the format user/repo) and returns a dict with two keys (url and version). Example:

VERSION = helper.get_latest_github_tag_no_browser_download("user/repo")

get_latest_github_commit

This helper is used to retrieve information about a GitHub repo that doesn't use Tags or Releases. In this case, the goal is to retrieve the latest commit. This helper takes the repo (in the format user/repo) and returns a string representing the date of the last commit in the format YYYYYMMDD.

VERSION = helper.get_latest_github_commit("user/repo")

Examples

This section provides examples for the currently added Network Security Tools. As you can see the images do provide only the tool, so if you need to use a wordlist you need to mount it.

Generic Example

docker run -it --rm secsi/
    
    

   

Specific example

docker run -it --rm -v 
   
    :
    
      secsi/dirb 
      
      
       /
        
       
      
     
    
   

Contributions

Everyone is invited to contribute! If you are a user of the tool and have a suggestion for a new feature or a bug to report, please do so through the issue tracker.

Credits

RAUDI is proudly developed @SecSI by:

License

RAUDI is an open-source and free software released under the GNU GPL v3.

Owner
SecSI
Security Solutions for Innovation
SecSI
Spinnaker is an open source, multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence.

Welcome to the Spinnaker Project Spinnaker is an open-source continuous delivery platform for releasing software changes with high velocity and confid

8.8k Jan 07, 2023
Manage your SSH like a boss.

--- storm is a command line tool to manage your ssh connections. features adding, editing, deleting, listing, searching across your SSHConfig. command

Emre Yılmaz 3.9k Jan 03, 2023
📦 Powerful Package manager which updates plugins & server software for minecraft servers

pluGET A powerful package manager which updates Plugins and Server Software for minecraft servers. Screenshots check all to check installed plugins fo

106 Dec 16, 2022
CI repo for building Skia as a shared library

Automated Skia builds This repo is dedicated to building Skia binaries for use in Skija. Prebuilt binaries Prebuilt binaries can be found in releases.

Humble UI 20 Jan 06, 2023
Build and Push docker image in Python (luigi + docker-py)

Docker build images workflow in Python Since docker hub stopped building images for free accounts, I've been looking for another way to do it. I could

Fabien D. 2 Dec 15, 2022
CDK Template of Table Definition AWS Lambda for RDB

CDK Template of Table Definition AWS Lambda for RDB Overview This sample deploys Amazon Aurora of PostgreSQL or MySQL with AWS Lambda that can define

AWS Samples 5 May 16, 2022
The leading native Python SSHv2 protocol library.

Paramiko Paramiko: Python SSH module Copyright: Copyright (c) 2009 Robey Pointer 8.1k Jan 04, 2023

A curated list of awesome DataOps tools

Awesome DataOps A curated list of awesome DataOps tools. Awesome DataOps Data Catalog Data Exploration Data Ingestion Data Lake Data Processing Data Q

Kelvin S. do Prado 40 Dec 23, 2022
Oncall is a calendar tool designed for scheduling and managing on-call shifts. It can be used as source of dynamic ownership info for paging systems like http://iris.claims.

Oncall See admin docs for information on how to run and manage Oncall. Development setup Prerequisites Debian/Ubuntu - sudo apt-get install libsasl2-d

LinkedIn 928 Dec 22, 2022
Docker Container wallstreetbets-sentiment-analysis

Docker Container wallstreetbets-sentiment-analysis A docker container using restful endpoints exposed on port 5000 "/analyze" to gather sentiment anal

145 Nov 22, 2022
a CLI that provides a generic automation layer for assessing the security of ML models

Counterfit About | Getting Started | Learn More | Acknowledgments | Contributing | Trademarks | Contact Us -------------------------------------------

Microsoft Azure 575 Jan 02, 2023
Define and run multi-container applications with Docker

Docker Compose Docker Compose is a tool for running multi-container applications on Docker defined using the Compose file format. A Compose file is us

Docker 28.2k Jan 08, 2023
Supervisor process control system for UNIX

Supervisor Supervisor is a client/server system that allows its users to control a number of processes on UNIX-like operating systems. Supported Platf

Supervisor 7.6k Dec 31, 2022
Phonebook application to manage phone numbers

PhoneBook Phonebook application to manage phone numbers. How to Use run main.py python file. python3 main.py Links Download Source Code: Click Here M

Mohammad Dori 3 Jul 15, 2022
Asynchronous parallel SSH client library.

parallel-ssh Asynchronous parallel SSH client library. Run SSH commands over many - hundreds/hundreds of thousands - number of servers asynchronously

1.1k Dec 31, 2022
Caboto, the Kubernetes semantic analysis tool

Caboto Caboto, the Kubernetes semantic analysis toolkit. It contains a lightweight Python library for semantic analysis of plain Kubernetes manifests

Michael Schilonka 8 Nov 26, 2022
Let's learn how to build, release and operate your containerized applications to Amazon ECS and AWS Fargate using AWS Copilot.

🚀 Welcome to AWS Copilot Workshop In this workshop, you'll learn how to build, release and operate your containerised applications to Amazon ECS and

Donnie Prakoso 15 Jul 14, 2022
This Docker container is build to run on a server an provide an easy to use interface for every student to vote for their councilors

This Docker container is build to run on a server and provide an easy to use interface for every student to vote for their councilors.

Robin Adelwarth 7 Nov 23, 2022
Utilitaire de contrôle de Kubernetes

Utilitaire de contrôle de Kubernetes ** What is this ??? ** Every time we use a word in English our manager tells us to use the French translation of

Théophane Vié 9 Dec 03, 2022