SSJ : Linux Distribution Gone Super Saiyan

SSJ is a silly little script that makes use of Docker installed on your everyday Linux distribution (Ubuntu, Debian, etc.) and magically arms it with hundreds of penetration testing and forensics tools. All of these run with almost native performance (as containers utilize the host operating system’s kernel) and thus is a slightly better alternative to Virtual Machines in terms of speed, performance and convenience.

Technical Details

SSJ is a Docker image that uses Kali Linux base image,kalilinux/kali and installs kali-linux-large metapackage over it. It uses the kali.download/kali mirror and kali-last-snapshot branch. It also allows you to run GUI applications like Burpsuite, Wireshark, Ettercap, etc. from within the container on your everyday Linux distribution by using --privileged container capabilities and adding a universal access control to xhost. This script pulls/builds the Docker image and creates a .desktop file (the Application Launcher) for you that initiates the runs the container. So, the only thing you need to do is, find SSJ in you aplicaiton drawer/menu and click on it to launch it. A terminator terminal will popup with all your pentesting and forensics tools in it. Execute burpsuite to fire up the proxy, wireshark to fire up the packet analyzer and like that, you have access to hundreds of tools and packages that are there in Kali Linux (particularly the kali-linux-large metapackage), right on your everyday Linux distribution. Also, contrary to virtual machines, that are either networked behind a virtual NAT or bridged along with the host operating system, SSJ utilizes the host network stack as it is (using --net=host) which means that the SSJ container will have direct access to all the network interfaces as the host Linux distribution and will also share the same IP address.

Prerequisites

  • Docker (User must be in the docker group)
  • Internet connection

Installation

  • Quick Install:

wget https://raw.githubusercontent.com/thirdbyte/ssj/main/ssj_quick.sh -O /tmp/ssj.sh && chmod +x /tmp/ssj.sh && sudo /tmp/./ssj.sh

This might take variable time depending upon your Internet speed. It pulls the Docker image from Docker Hub that weighs around 4G. This method is fast, certain and recommended.

OR

  • Build Install:

wget https://raw.githubusercontent.com/thirdbyte/ssj/main/ssj_build.sh -O /tmp/ssj.sh && chmod +x /tmp/ssj.sh && sudo /tmp/./ssj.sh

This might take variable time depending upon your Internet speed. It builds the image locally which requires downloading of all the packages in kali-linux-large metapackage that weigh around 3G to 4G. This method is slower, uncertain and not recommended but might make sense in case a user does not trust pre-built Docker Hub images.

Usage

  • Access the application drawer/menu on your Linux distribution to find SSJ.
  • Launch SSJ.
  • A terminator terminal will pop up.
  • Use this terminal to launch any tool by executing them using their respective package names. For an example: msfconsole, burpsuite, wireshark, etc.
  • You can save any file in the /root directory inside the container and find it at /home/ssj on your host Linux distribution.

Screenshots

  • Tested on: Ubuntu 20.04.1 LTS (GNOME), Linux Mint 20 Ulyana (Cinnamon)
  • Notice: The screenshots underneath represent xfce4-terminal which is now replaced with terminator.

Plugins

  • Add Tools: A convenient script that lets you add more tools to SSJ that are not a part of the kali-linux-large metapackage.

Updates

Redo the installation and if you are using Add Tools plugin, you’ll need to re-execute the add-tools script as well.

Troubleshooting

  • Being a rolling-release distribution, Kali Linux’s repositories are updated very frequently. Sometimes, when the packages are being migrated to the pool, you might get a 404 error finding some packages while trying to build the image or install SSJ using the Build Install command. The only way to resolve this as of now is to either wait a few hours and try again, or install SSJ using the Quick Install command.
  • Since the container runs with the root user privileges, the files created in the /root directory have the owner set to root. On the host Linux distribution, this directory is /home/ssj. All the files and sub directories inside /home/ssj will require the root user of the host Linux distribution in case any data needs to be written to or deleted from this directory.

Limitations

  • Wireless hacking tools that require a patched kernel, the one that you’d find in Kali Linux, will not work on SSJ. The simple reason for this is the fact that SSJ utilizes the Linux kernel of your host Linux distribution which isn’t patched or modified to support packet injection.
  • SSJ uses Docker’s --privileged container capabilities and --net=host networking. It also adds a universal access control to xhost for making GUI applications work, but immidiately closes it once SSJ’s terminator is exited. This might allow any application to access the X server or GUI of your host Linux distribution in particular for the time SSJ is running which can be a security or a privacy concern for many.
  • Audio ouput does not work as of now.
R K

Recent Posts

groupdel Command in Linux: Remove a Group and Audit Files

The groupdel command in Linux removes a group from the system. It deletes the group's entry from /etc/group and /etc/gshadow,…

13 hours ago

wc Command in Linux: Count Lines, Words, Characters, and Bytes

The wc command in Linux counts lines, words, characters, and bytes in files or standard input. It…

13 hours ago

top Command in Linux: Monitor Processes and Resource Usage

The top command in Linux provides a real-time view of running processes and system resource usage. From…

13 hours ago

usermod Command in Linux: Modify User Accounts and Groups

The usermod command in Linux modifies existing user account attributes. You can use it to manage group…

13 hours ago

sort Command in Linux: Sort Text, Numbers, Columns, and More

The sort command in Linux reads lines from files or standard input and writes them to standard…

2 days ago

wall Command in Linux: Broadcast Messages to Logged-In Users

The wall command in Linux sends a message to the terminals of all currently logged-in users. The…

2 days ago