<!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>NIF: Reactive Injection Attack via Nmap Piggybacking</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Alessandro Bonfiglio</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gabriele Costa</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Silvia De Francisci</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>IMT School for Advanced Studies</institution>
          ,
          <addr-line>Lucca 55100</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Florence</institution>
          ,
          <addr-line>Florence 50121</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>Network scanning is a common task in cybersecurity. For instance, penetration testers often scan a target system during the initial stage of their vulnerability detection process, e.g., for profiling machines and services. On the other hand, attackers scan remote systems looking for exploitation opportunities. Network scans are generally considered harmless for the victim, as they only consist of a few requests that cause no service interruption or degradation. Nevertheless, as shown in [1], scanning is risky for its author. In this paper, we present a general attack framework that takes advantage of network scans for injecting remote systems. In particular, our proposal leverages the widely adopted scanner Nmap [2] for transmitting attack payloads through the scan responses. If the output of Nmap is processed by an injectable application, e.g., a web browser of a SQL DBMS, our payloads are executed and the scanning system gets compromised.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;ofensive security</kwd>
        <kwd>injection attack</kwd>
        <kwd>network scanner</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>Clearly, when establishing a direct connection, the target server can read the client’s IP
address, which might be useful for attribution purposes. However, to avoid it, scan authors
can resort to various techniques, depicted in Figure 1. The first scenario consists of a client
performing a scan through a proxy server running Nmap. For instance, the client may resort to
one among many network scanning web applications such as https://nmap.online/. Also, an
attacker might have gained control over a remote server where she can install and run tools. In
both cases, the target would attribute the scan operation to the proxy server, rather than the
actual author. An alternative approach consists of scanning through the TOR network. Since
the trafic goes through a number of relay nodes, the target can only observe the last, exit relay.
Under these scenarios, attributing a Nmap scan to its author is, in general, undoable.</p>
      <p>
        For the reasons stated above and since they generate a negligible amount of trafic, network
scans are usually tolerated. Nevertheless, banner grabbing is part of the attackers’ kill chain
and it should be considered a risky operation. In [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], the authors showed that this is not only
true for scan victims, but also for their authors. Under their attacker model, they demonstrated
that HTTP service banners may contain cross-site scripting payloads that the scan target uses
to inject the authors’ browser. The reason is that the service banner is processed by Nmap
to find critical information, e.g., service name and version. In many cases, Nmap is used as a
component in some exploitation frameworks. Thus, returned details may be integrated into an
HTML report without a proper sanitization.
      </p>
      <p>
        In this paper, we present an extension of the attack scenario presented in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Starting from
the same attacker model, we extend it by generalizing () the set of injectable protocols and ()
the family of code injection payloads. The first generalization is based on a reverse engineering
of the Nmap service reconnaissance method. In particular, we develop a payload generation
technique that returns injected banners following the exact syntax expected by Nmap. This
ensures that Nmap propagates our payloads to the upper level, i.e., the attack or penetration
testing framework, if it exists. On the other hand, our attack strategy introduces a generic
and configurable set of attack payloads. As a matter of fact, analysts can provide their attack
payloads via configuration files. For instance, a set of payloads may consist of SQL injections,
while another may be for cross-site scripting. Our methodology is then demonstrated through a
prototype implementation. The prototype is released as an open source project for the security
community.
      </p>
      <p>The rest of this paper is structured as follows. Section 2 illustrates our framework. In Section
3, we discuss a usage scenario of NIF. Finally, we survey the related literature in Section 4 and
conclude the paper in Section 5.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Framework</title>
      <p>In this section, we describe our attack framework and its implementation details.</p>
      <sec id="sec-2-1">
        <title>2.1. Overview</title>
        <p>The abstract workflow of our framework is depicted in Figure 2. The scanning platform appears
on the left. Briefly, it consists of Nmap and some reporting systems. The reporting system
can belong to various categories. For instance, it can be an HTML report or a PDF document.
Possibly, the scan result may even be stored in a database.</p>
        <p>On the other hand, the NIF platform exposes a frontend service. When a Nmap scan occurs on
port P, the NIF service triggers a response generation utility that uses the Nmap service probes
(see Section 2.2) and a collection of payloads, e.g., stored in a database. The generated response
resembles a legal service banner, but it carries the injection payload. When Nmap processes the
injected banner message, the payload is eventually returned to the reporting system.</p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. Reversing Nmap Probes</title>
        <p>Nmap service recognition relies on a list of service probes. Each probe amounts to a rule for
parsing a service banner. In this way, even if a service is not running on its usual port (e.g., SSH
on port 22), Nmap can correctly identify it. For instance, consider the following service probe
rule.
match ssh m|^SSH-([\d.]+)-OpenSSH[_-]([\w.]+)\r?\n|</p>
        <p>p/OpenSSH/ v/$2/ i/protocol $1/ cpe:/a:openbsd:openssh:$2/
The rule states that the received banner message matches an SSH service if it follows the syntax
between m|. . . |. The syntax is given through a Perl-compatible regular expression (PCRE). For
instance, we can observe that the string SSH-1.2-OpenSSH_v5 matches the PCRE. The second
part of the rule tells Nmap how to interpret a successful match. Every segment refers to specific
information that Nmap infers from the banner message. In this case, for instance, p/OpenSSH/
is for the product name. More interestingly, v/$2/ tells Nmap that the service version is taken
directly from the banner content. In particular, $2 identifies the second capture group parsed by
the regular expression, i.e., the part of the string that matches the expression inside the second
pair of rounded parentheses. In the previous example, this value is v5. Finally, segments i/. . . /
and cpe:/. . . / are for info and platform (e.g., OS and hardware) identification, respectively.</p>
        <p>Since Nmap extracts the information matching capture groups and includes it in its
output, we can expect these details to be propagated to the reporting system. Hence, they
represent the ideal target for placing a malicious payload. For instance, consider the banner
SSH-1.2-OpenSSH_PAYLOAD. Nmap would extract from it the product version PAYLOAD.</p>
        <p>Clearly, not every capture group is a suitable candidate for placing a payload. As a matter
of fact, the payload must match the regular expression between parentheses. As an example,
consider the first capture group in the previous rule, i.e., ([\d.]+). Since only digits and the
’.’ symbol can appear there, we cannot use it for any meaningful injection. Nevertheless, since
all the matching rules and capture groups are listed in the source code of Nmap, we can easily
iflter those that admit payload injection.</p>
      </sec>
      <sec id="sec-2-3">
        <title>2.3. Payload Management</title>
        <p>As stated above, the first step is finding capture groups that we can instantiate with payloads.
For instance, we might look for (.*), i.e., the capture group matching any finite sequence of
characters. Performing this search on the Nmap service probe file returns 89 entries such as the
following one.</p>
        <p>match ftp m|^220 vsFTPd (.*) ready\.\.\.\r\n| p/vsftpd/ v/$1/
Nevertheless, other regular expressions can be used as well. For instance, we might search
for (.* and .*), i.e., capture group admitting a preamble or a trail (respectively) made of any
sequence of chars. This results in rules such as this one.
match ssh m|^SSH-([\d.]+)-OpenSSH_([\w._-]+)[ -]{1,2}
Debian[ -_](.*ubuntu.*)\r\n|
In this case, the capture group (.*ubuntu.*) can be used for our purposes.</p>
        <p>With this approach, we can already identify 153 injectable probes. Nevertheless, more refined
searches may be implemented. The basic idea is that one might use diferent charsets for each
payload category. For instance, the character ’/’ may be necessary for XSS payloads, but
irrelevant for SQLi ones. Thus, we may test each capture group against the charset of a specific
injection attack for checking whether it can be injected.</p>
        <p>Independently from the used method, NIF is eventually provided with a list of injectable
probes. For each probe, the NIF service exposes a service on the corresponding port. When a
scan occurs on port P, the payload generation proceeds in the following way. First, a probe
PCRE is selected among those that () corresponds to a service running on port P (e.g., FTP if P
= 21), and () contains at least an injectable capture group. Briefly, filter () is implemented by
using the predefined service mapping included in the source code of Nmap. In particular, the
configuration file nmap-services consists of a finite list following the syntax below.</p>
        <p>service port/protocol frequency # comment
There, service identifies the service, e.g., ftp, port/protocol is for the service port and
protocol type, e.g., 21/tcp, frequency denotes the service likelihood, i.e., how often Nmap
expects to find the service running on the given port, and comment is free text. Instead, filter
() is implemented by considering the specific type of injection attack (given as an input).
To check whether a capture group is injectable with a payload for a certain attack, e.g., XSS,
we compute the intersection between PCRE of the capture group and a signature PCRE for
the attack. Briefly, the signature PCRE is .*C.* where C is the payload charset described in
Section 2.2. If the intersection between the two PCRE is not empty, we consider the probe
injectable. As an example, consider again the capture group (.*ubuntu.*) discussed above
and imagine that C = &lt;&gt;()alert/""123, i.e., a simplified charset for XSS. When
computing .*ubuntu.* ∩ .*&lt;&gt;()alert/""123.* we find that, for instance, it includes the string
&lt;&gt;()alert/""123ubuntu.</p>
        <p>Once the injectable probe is selected, an actual response message that both () follows its
syntax and () contains an attack payload must be generated. This is achieved by means
of a PCRE generator that, given a regular expression, returns a random string belonging to
its language. In particular, the PCRE used is that of the selected probe, where the injectable
capture groups are modified as follows. Imagine the capture group PCRE is E and the
selected payload is P, we replace E with the intersection E ∩ .*P.*. Again, if we consider
the example above, if E = .*ubuntu.* and P = &lt;script&gt;alert(1)&lt;/script&gt;, we obtain
[[.*ubuntu.*]&amp;&amp;[.*&lt;script&gt;alert(1)&lt;/script&gt;.*]]1. The overall response
generation flow described above is exemplified in Figure 3.
1Diferent implementations of PCRE may use diferent operators for intersection. Here we refer to the Java
implementation using [[ . . . ]&amp;&amp;[ . . . ]].</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. NIF Demonstration</title>
      <p>In this section, we present our implementation, called NIF. Furthermore, we demonstrate
NIF through an attack scenario where the adversary establishes remote control over the
victim’s browser. All the material presented below is available at https://github.com/iAleKira/
Nmap-Injection-Framework.</p>
      <sec id="sec-3-1">
        <title>3.1. Implementation</title>
        <p>NIF is available as an open-source, Java-implemented project consisting of a few components.
We briefly describe them below.</p>
        <p>Payloads. This package contains a collection of injection payloads. Payloads are stored
in each row of text files. Text files are organized according to their type. For instance,
xss_payloads.txt contains a collection of XSS payloads. New injection attacks can be
implemented by adding payloads’ files to this package. NIF retrieves these payloads when
generating malicious responses to Nmap scans.</p>
        <p>Filter. The filter utility is a stand-alone Java executable used to extract reversible Nmap
probes, as explained in Section 2.2. Filtered probes are stored in a text file that NIF Server can
access. Figure 4 shows the output generated by the following command.</p>
        <p>java -jar filter.jar "&lt;script&gt;alert(1)&lt;/script&gt;"
In Figure 4, we report four rules for FTP and one for POP3 (out of 37 total rules).
Server. This component is in charge for delivering the attack payloads once receiving a Nmap
scan. Briefly, it implements the NIF service and the response generator described in Section 2.
The NIF Server instantiates Java sockets listening on the ports associated with the injectable
probes, e.g., port 25 for the FTP service.</p>
        <p>Limitations. The general approach discussed in Section 2 and the current implementation
of NIF mainly difer for a single aspect, i.e., the payload injection strategy. As discussed in
Section 2.3, the general strategy is based on computing the intersection between two regular
languages, i.e., one for the service probe and one for the injection payload. However, for
the time being, NIF only generates payloads belonging to the regular language of the probe.
For instance, consider the case where the probe’s regular expression is .*ubuntu.* and the
payload is &lt;script&gt;alert(1)&lt;/script&gt;. The approach described in Section 2.3 would allow
generating, e.g., the response &lt;script&gt;alert(1)&lt;/script&gt;ubuntu. However, the current
implementation of NIF cannot find this match. Although this reduces the number of potential
injection vectors, NIF can already identify several injectable probes for most payloads. We plan
to extend NIF with this functionality as part of our future work.</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Demonstration: Injecting BeEF’s XSS Hook</title>
        <p>
          In this demonstration, we show how NIF can be used to inject the victim with an XSS payload
to hijack the target browser. The scenario is depicted in Figure 5. The attacker controls both
the NIF server and a BeEF Command and Control (C&amp;C) server. Briefly, BeEF [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] is a browser
exploitation framework that relies on XSS injection to install a control module on a target
browser. The control module is configured to periodically connect to the C&amp;C server and
retrieve commands to be executed. Since the victim’s browser does active polling, BeEF can
efectively bypass firewall controls in most cases.
        </p>
        <p>The attacker configures NIF to inject the payload</p>
        <p>&lt;script src="HTTP://[IP]:3000/hook.js"&gt;&lt;/script&gt;
where [IP] is the IP address of the BeEF C&amp;C server (exposed on port 3000). NIF identifies four
injectable service probes and configures a listening port for each of them. When the victim’s
machine scans one of these ports, it receives the payload. If the Nmap report is then flushed
into an HTML report, the victim’s browser connects to the C&amp;C server, as discussed above.
Figure 6 shows the output of NIF when injecting Nmap under our scenario.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Related Work</title>
      <p>
        To the best of our knowledge, RevOk [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] was the first and only proposal exploiting scan
operations to perform injection attacks. In detail, RevOk uses a malicious web application in
order to attack whoever scans it, injecting malicious payloads into the browser of the scan author.
Injection payloads are embedded in HTTP response headers that Nmap parses to fingerprint
the web server. Our work extends RevOk by using a general strategy that applies to every
injectable protocol, rather than HTTP only. In the following three sections, we briefly revise
the state-of-the-art of active defense techniques, security scanner weaknesses, and injection
attacks on web applications. Although these works are not alternatives to our proposal, they
are relevant w.r.t. the technologies involved in our reference attacker model.
      </p>
      <sec id="sec-4-1">
        <title>4.1. Active Defense</title>
        <p>
          Active defense refers to a set of cybersecurity measures that involve actively identifying,
preventing, and responding to cyber threats. For a detailed review of the diferent types of
active defense and possible related actions, we refer the interested reader to Glosson [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
        </p>
        <p>
          De Gaspari et al. [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] present AHEAD, an active defense approach based on deception. AHEAD
allows redirecting back trafic received on a port, thanks to Rubberglue [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], generating attractive
ifles that, once opened, permit the Web Bug Server [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] to reveal the attacker’s identity and obtain
the IP address of her machine. Unlike ours, this approach relies on analyzing the attacker’s
strategy and counterstriking. Similarly, Rana et al. [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] exploit rely on a honeypot to obtain
attacker information. In particular, they consider the possibility of the attacker using a VPN
and propose a method that can bypass it and get accurate information.
        </p>
        <p>
          Another method is to directly identify and exploit vulnerabilities in the attacker’s tool suite.
For instance, Dereszowski [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] discovered a vulnerability in the Poison Ivy RAT. He built a bufer
designed to overwrite the return address of the function and then drive the function back to a
RET instruction. Thus, when the attacker uses this tool to spy on the victim, the manipulated
bufer causes a bufer overflow and the execution of arbitrary shellcode.
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. Security Scanners</title>
        <p>Reports about scanner vulnerabilities are not frequent in the literature. Yet, some authors have
considered the security weaknesses of scanners. These works focus on issues such as incomplete
scanning, which can leave some vulnerabilities undetected; false positives, which are reported
vulnerabilities that do not exist; or performance issues.</p>
        <p>
          For instance, Holm et al. [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] present a quantitative analysis of seven of the most used
vulnerability scanners. Vieria et al. [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] perform an experimental evaluation of security
vulnerabilities in 300 web services, demonstrating the advantages and limitations of these
scanners. Along the same line, Bau et al. [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] investigate the efectiveness as well as the
relevance of the discovered vulnerabilities. Idrissi et al. [13] compare the performance and
eficiency of several commercial and free scanners. Nevertheless, none of the previous works
consider whether a security scanner can convey injection attacks toward the scan author.
        </p>
      </sec>
      <sec id="sec-4-3">
        <title>4.3. Injection Attacks on Web Applications</title>
        <p>Web applications may be vulnerable to several types of injection attacks. One is the command
injection attack that involves injecting malicious command-line code. The first formal
definition of command injection attacks in the context of web applications is provided by Su and
Wassermann [14]. The XML injection attack involves injecting malicious XML code, which
can be used to manipulate or access data stored in an XML file, as discussed in [ 15]. The LDAP
injection attack is analyzed in depth by Alonso et al. [16]. This technique allows obtaining direct
access to the hierarchical database underlying an LDAP tree. Another attack is SQL injection,
among the most used techniques to violate web applications. Several authors survey these
attacks, e.g., see [17, 18]. In particular, Halfond et al. [19] not only classify SQL injection attacks
but compare techniques for detecting and preventing them. Similarly, Kumar and Pateriya
[20] survey attacks and defense techniques for injection scenarios. All the injection attacks
discussed above are compatible with our approach. As a matter of fact, our methodology treats
injection payloads agnostically and an attacker can pick the specific payloads targeting the
victim’s infrastructure.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion</title>
      <p>In this paper, we presented a general methodology for embedding injection attacks in Nmap
scan responses. Our attack targets systems, e.g., penetration testing frameworks and reporting
tools, that import the output of Nmap without proper sanitization. Although a systematic
assessment of the impact of our attack strategy is yet to be carried out, we believe that many
developers might excessively trust the output of Nmap when it is locally executed. In future
work, we plan to experimentally validate this hypothesis by exploiting the tool presented in
this paper for implementing a vulnerability detection campaign. Furthermore, such a campaign
will be used to measure the impact of our methodology.</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgments</title>
      <p>This work was partially supported by project SERICS (PE00000014) under the NRRP MUR
program funded by the EU - NGEU.
application vulnerability testing, in: 2010 IEEE symposium on security and privacy, IEEE,
2010, pp. 332–345.
[13] S. Idrissi, N. Berbiche, F. Guerouate, M. Shibi, Performance evaluation of web application
security scanners for prevention and protection against vulnerabilities, International
Journal of Applied Engineering Research 12 (2017) 11068–11076.
[14] Z. Su, G. Wassermann, The essence of command injection attacks in web applications,</p>
      <p>Acm Sigplan Notices 41 (2006) 372–382.
[15] A. N. Gupta, P. S. Thilagam, Attacks on web services need to secure xml on web, Computer</p>
      <p>Science &amp; Engineering 3 (2013) 1.
[16] J. M. Alonso, R. Bordon, M. Beltran, A. Guzmán, Ldap injection techniques, in: 2008 11th
IEEE Singapore International Conference on Communication Systems, IEEE, 2008, pp.
980–986.
[17] A. Sadeghian, M. Zamani, S. M. Abdullah, A taxonomy of sql injection attacks, in: 2013</p>
      <p>International Conference on Informatics and Creative Multimedia, IEEE, 2013, pp. 269–273.
[18] M. Lawal, A. B. M. Sultan, A. O. Shakiru, Systematic literature review on sql injection
attack, International Journal of Soft Computing 11 (2016) 26–35.
[19] W. G. Halfond, J. Viegas, A. Orso, et al., A classification of sql-injection attacks and
countermeasures, in: Proceedings of the IEEE international symposium on secure software
engineering, volume 1, IEEE, 2006, pp. 13–15.
[20] P. Kumar, R. Pateriya, A survey on sql injection attacks, detection and prevention
techniques, in: 2012 Third International Conference on Computing, Communication and
Networking Technologies (ICCCNT’12), IEEE, 2012, pp. 1–5.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>A.</given-names>
            <surname>Valenza</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Costa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Armando</surname>
          </string-name>
          ,
          <article-title>Never trust your victim: Weaponizing vulnerabilities in security scanners</article-title>
          ,
          <source>in: 23rd International Symposium on Research in Attacks, Intrusions and Defenses (RAID</source>
          <year>2020</year>
          ), USENIX Association, San Sebastian,
          <year>2020</year>
          , pp.
          <fpage>17</fpage>
          -
          <lpage>29</lpage>
          . URL: https://www.usenix.org/conference/raid2020/presentation/valenza.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>G. F.</given-names>
            <surname>Lyon</surname>
          </string-name>
          ,
          <article-title>Nmap network scanning: The oficial Nmap project guide to network discovery and security scanning</article-title>
          ,
          <source>Insecure. Com LLC (US)</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>W.</given-names>
            <surname>Alcorn</surname>
          </string-name>
          ,
          <source>Beef: The browser exploitation framework</source>
          ,
          <year>2006</year>
          . URL: https://beefproject.com/.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>A.</given-names>
            <surname>Glosson</surname>
          </string-name>
          ,
          <article-title>Active defense: An overview of the debate and a way forward</article-title>
          ,
          <source>MERCATUS WORKING PAPER</source>
          (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>F.</given-names>
            <surname>De Gaspari</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Jajodia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. V.</given-names>
            <surname>Mancini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Panico</surname>
          </string-name>
          ,
          <article-title>Ahead: A new architecture for active defense</article-title>
          ,
          <source>in: Proceedings of the 2016 ACM workshop on automated decision making for active cyber defense</source>
          ,
          <year>2016</year>
          , pp.
          <fpage>11</fpage>
          -
          <lpage>16</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>Rubberglue</surname>
          </string-name>
          , Rubberglue,
          <year>2020</year>
          . URL: https://github.com/adhdproject/rubberglue.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>E.</given-names>
            <surname>Robish</surname>
          </string-name>
          , Web bug server,
          <year>2013</year>
          . URL: https://bitbucket.org/ethanr/webbugserver.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>M. U.</given-names>
            <surname>Rana</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Ellahi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Alam</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. L.</given-names>
            <surname>Webber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mehbodniya</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Khan</surname>
          </string-name>
          ,
          <article-title>Ofensive security: Cyber threat intelligence enrichment with counterintelligence and counterattack</article-title>
          ,
          <source>IEEE Access 10</source>
          (
          <year>2022</year>
          )
          <fpage>108760</fpage>
          -
          <lpage>108774</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>A.</given-names>
            <surname>Dereszowski</surname>
          </string-name>
          ,
          <article-title>Targeted attacks: From being a victim to counter attacking, Black Hat Europe (</article-title>
          <year>2010</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>H.</given-names>
            <surname>Holm</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Sommestad</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Almroth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Persson</surname>
          </string-name>
          ,
          <article-title>A quantitative evaluation of vulnerability scanning, Information Management</article-title>
          &amp; Computer
          <string-name>
            <surname>Security</surname>
          </string-name>
          (
          <year>2011</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Vieira</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Antunes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Madeira</surname>
          </string-name>
          ,
          <article-title>Using web security scanners to detect vulnerabilities in web services</article-title>
          ,
          <source>in: 2009 IEEE/IFIP International Conference on Dependable Systems &amp; Networks</source>
          ,
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          ,
          <year>2009</year>
          , pp.
          <fpage>566</fpage>
          -
          <lpage>571</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>J.</given-names>
            <surname>Bau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Bursztein</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Gupta</surname>
          </string-name>
          , J. Mitchell,
          <article-title>State of the art: Automated black-box web</article-title>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>