Recognising Client-side Behavioral Detection of Web Bots - Open

 
CONTINUE READING
Recognising Client-side Behavioral Detection of Web Bots - Open
Bachelor thesis
                 Computing Science

                 Radboud University

      Recognising Client-side
 Behavioral Detection of Web Bots

Author:                                First assessor/supervisor:
Mitchel Jansen                                      Dr. Erik Poll
s4810732                                   erik.poll@cs.ru.nl

                                                Second assessor:
                                            Dr. Ir. Hugo Jonker
                                            hugo.jonker@ou.nl

                     January 9, 2021
Recognising Client-side Behavioral Detection of Web Bots - Open
Abstract

    To prevent data stealing, many websites use techniques to detect automated visi-
tors. Collectively, such techniques are called web bot detection. There are, generally
speaking, two types of such techniques: (1) fingerprinting techniques, and (2) behav-
ioral detection. Behavioral detection is an upcoming bot detection method which uses
different techniques than those considered in browser fingerprinting. While there have
been several studies into fingerprint-based detection of web bots, there has been com-
paratively little investigation of behavioral-based detection. In this thesis, we investi-
gate behavioral detection and its countermeasures. Moreover, we determine whether
this is simply an extension of browser fingerprinting or if its use extends beyond browser
fingerprinting.
    The goal of this work is to expand the identification approach by Jonker et al. to
cover dynamic aspects of web bot detection, specifically: behavioral detection of web
bots. A key subgoal of this project is therefore to uncover when current real-world bot
detection methods deem evidence sufficient to classify a visitor as a bot.
    We achieve this goal through the following contributions. We determine a list of
known methods for behavioral detection, based on literature and a practical investiga-
tion. Moreover, we design a method to determine whether a script is using behavioral
detection, given the detection methods we have found in our manual reverse analysis.
Besides that, we implement this approach in a static HTML scanner and scan the
homepages of the Tranco Top 10,000. Ultimately, we determine the false positive rate
of our scanner by manual analysis of a statistical significant number of scripts in each
category using random sampling.
    First and foremost, bot detection scripts will be reverse-analyzed manually to ac-
quire code that is used for behavioral detection. Afterwards, this manual process will
be automated, utilizing the code snippets and its features which were found manually.
Processing and categorizing this data can then commence. Through analyzing the cat-
egorized data, conclusions can be drawn regarding which code is utilized for behavioral
detection of web bots.
    It is important to note that we first need to test whether the approach taken in
this research is appropriate and applicable to behavioral detection the same way it is
applicable to fingerprinting techniques. Consequently, we need to find out why it is
more difficult to recognise behavioral detection than fingerprinting techniques.
    We found that 17,203 out of the 17,862 scripts have between 0% and 20% chance
of containing behavioral-based detection. Thus, we can conclude with certainty that
17,203 scripts do not use behavioral-based detection if we disregard any false negatives.
290 scripts have between 20% and 40% chance of containing behavioral detection.
Meaning, 290 scripts possibly have some small form of behavioral-based detection, but
have such a low chance that we believe no behavioral detection will be present. 97
scripts are in a range where we simply do not know whether they carry out behavioral
detection until closer inspection as they do contain a limited amount of behavioral
detection methods. However, 69 scripts have a good chance of containing behavioral-
based detection since they contain multiple behavioral detection methods and the 23
Recognising Client-side Behavioral Detection of Web Bots - Open
scripts with the highest chance of containing behavioral detection certainly do contain
behavioral detection.
    In this research we were able to gather significant results using a static scraping tool.
Thus, this research is the basis for further research investigating behavioral detection
using more advanced techniques such as machine learning with a neural network and
a dynamic scraping tool. In short, this research gives all of the ingredients that can
be used in machine learning as well as the properties that a dynamic scraper needs to
possess.
Recognising Client-side Behavioral Detection of Web Bots - Open
Contents

1 Introduction                                                                                                                              4
  1.1 Objectives and research questions . . . . . . . . . . . . . . . . . . . . . .                                                         5

2 Related Work                                                                                                                              7
  2.1 Bot detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                       7
  2.2 Behavioral detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                        8

3 Methodology                                                                                                                              10

4 Known methods for behavioral detection                                                                                                   12

5 Reverse analysis of bot detection scripts                                             16
  5.1 Approach to reverse analysis . . . . . . . . . . . . . . . . . . . . . . . . 16
  5.2 Identifying known behavioral detection . . . . . . . . . . . . . . . . . . . 17
  5.3 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

6 Automatically recognising behavioral detection                                   21
  6.1 Recognising behavioral detection . . . . . . . . . . . . . . . . . . . . . . 24
  6.2 A scoring mechanism for identifying behavioral detection . . . . . . . . 24

7 Identifying behavioral detection             in the          wild                                                                        27
  7.1 Methodology . . . . . . . . . .           . . . .        . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27
      7.1.1 Setup . . . . . . . . . .           . . . .        . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   28
      7.1.2 Results . . . . . . . . .           . . . .        . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   30
      7.1.3 Validation . . . . . . . .          . . . .        . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   32

8 Conclusions and Future work                                                         35
  8.1 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
  8.2 Future work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

A Implementation details                                                                                                                   42
  A.1 Implementation of wget . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   42
  A.2 Behavioral detection script      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   43
      A.2.1 Log file . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   43
      A.2.2 Threshold files . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   44
      A.2.3 Iterator file . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   44

                                                   1
B Methods and countermeasures discussed in literature                                                   47
     B.0.1 Mouse movement . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   47
     B.0.2 CAPTCHA/ReCAPTCHA . . . . . . . . . . . .                .   .   .   .   .   .   .   .   .   48
     B.0.3 Rate limiting of user requests . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   51
     B.0.4 Honeypot trap (e.g. display:none accessed) . . .         .   .   .   .   .   .   .   .   .   52
     B.0.5 Site traversal . . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   52

C Local script analysis                                                                                 53

                                          2
Code snippet

 5.1   Original code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   16
 5.2   After de-minification process . . . . . . . . . . . . . . . . . . . . . . . .     17
 5.3   After beautification process . . . . . . . . . . . . . . . . . . . . . . . . .    17
 6.1   Lowercase conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    23
 6.2   Using utf-8 encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    23
 6.3   Re-identification pattern regular expression . . . . . . . . . . . . . . . .      23
 6.4   Detection pattern: Re-identification pattern (datadome) . . . . . . . . .         26
 6.5   Detection pattern: Re-identification pattern (distil) . . . . . . . . . . . .     26
 6.6   Detection pattern: Re-identification pattern (perimeterx) . . . . . . . .         26
 6.7   Detection patterns: Mouse event (mouseoverListener) and Event-element
       connection (addEventListener) . . . . . . . . . . . . . . . . . . . . . . .       26
 A.1   Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     45
 A.2   Pattern detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   45
 A.3   Behavioral detection chance calculation . . . . . . . . . . . . . . . . . .       46
 B.1   Mouse movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      47
 B.2   Recaptcha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   48
 B.3   Rate limiting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   51
 B.4   Honeypot trap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     52

                                           3
Chapter 1

Introduction

There are various ways to automatically gather information from the web, such as web
spiders, scrapers, etc. In this study, we refer to such automated visitors of a web page
as web bots. Web bots are widely used to automatically gather information from the
web. Web bots can be used maliciously, stealing information, but they may also be
used benignly, such as using the information for research purposes. Web sites can try
to prevent malicious web bots from accessing their content. To this end, they must
first identify the visitor as a scraper. Jonker et al. [JKV19] investigated identifying
web bots based on subtle differences between their browser fingerprint and the browser
fingerprint of regular browsers. Browser fingerprinting focuses on static properties of
a web bot.
     The goal of this research is to expand the identification approach by Jonker et
al. to cover dynamic aspects of web bot detection, specifically: behavioral detection
of web bots. Do note that while static differences between browser fingerprints can
prove the visitor is a web bot, differences in behavior can only provide circumstantial
evidence. Where identifying detection techniques based on browser fingerprinting is
deterministic (true/false), recognising behavioral detection is inherently probabilistic.
A key sub-goal of this project is therefore to uncover when current real-world bot
detection methods deem evidence sufficient to classify a visitor as a bot.
     Most will know behavioral detection through the well-known and more-or-less ac-
cepted price tracking sites. However, the usage of behavioral detection has benign
uses such as research as well as nefarious uses such as content stealing. Therefore,
countermeasures ideally only affect bots. However, to acquire this we need to make
sure that the countermeasures can distinguish bots from humans.
     There are two ways to make such a distinction. The first option is to find static
aspects that differ between bots and humans, called properties. The other option
is to find dynamic aspects that different between bots and humans, called behavior.
The differences which originate from static aspects. such as browser fingerprint, have
already been explored (see e.g. Jonker et al. [JKV19]). Dynamic aspects, such as
behavior, seem to be used in practise as well, but comparatively few studies have
looked into this.
     Behavioral detection focuses on a web bots behavior, i.e., the way it interacts with
the visited web page. This may include measurements of
   – mouse behavior, including mouse movement and mouse clicks;

                                           4
– typing behavior, including key presses;
   – timing between subsequent requests;
   – scrolling.

1.1     Objectives and research questions
The main goal of this project is to investigate how web sites currently employ behav-
ioral detection. Subsequently, we can derive what countermeasures should be designed
to prevent behavioral detection in practice.
    The thesis should give all features necessary for machine learning so these can be
applied in the future. It is important to note that creating a classifier for this research
was possible, but was not used since we first need to identify whether it makes sense to
train a classifier. Besides that, it is difficult to acquire enough training data regarding
behavioral detection for machine learning to work to its full capacity.
    The above-mentioned goals have two research topics that need to be addressed.
These are both contained in the overarching main research question:

How is behavioral detection currently being used on the internet?

   The main research question is divided into the following sub-questions:

Sub-question 1: Which methods for behavioral detection exist?
Behavioral detection is a relatively new detection method for bots. Some research
has already been done on the different methods for behavioral detection. However,
the usage of these different methods is still unknown. Therefore we will be reverse-
analyzing scripts and doing a literature study to determine the different methods of
behavioral detection used in practise.

Sub-question 2: How can behavioral detection be recognised?
In the case of fingerprint-based detection, some properties are unique to a web bot.
Accessing these is thus only relevant for identifying a bot [JKV19]. However, in the
case of behavioral detection we cannot say the same. Methods employed in behavioral
detection may also be used for other purposes. For example, tracking mouse movement
may be used for behavioral detection, or to facilitate an online drawing program. Thus,
presence of a certain technique which can also be used for behavioral detection does not
necessarily imply the site is using behavioral detection. This sub-question addresses
this point: when is the use of techniques a clear indicator of behavioral detection? The
answer to this question shows us how to recognise behavioral detection.

Sub-question 3: How many sites are using behavioral detection?
This sub-question investigates the prevalence of behavioral detection. Consequently,
the answer to this question indicates how relevant behavioral detection is currently
when it comes to bot detection as a whole.
   This thesis and its accompanying study will answer these research questions with
the following contributions:

                                            5
• We determine a list of known methods for behavioral detection, based on litera-
      ture and a practical investigation.

         – We establish a list of current behavioral detection methods used in practice,
           based on methods found in literature combined with results from the reverse
           analysis.
         – We manually reverse engineer several known bot-detection scripts to analyze
           their approach to behavioral detection.

    • We design a method to determine if a script is using behavioral detection given
      the discussed detection methods. Our approach is based on Vlot’s scoring ap-
      proach [Vlo19]. Unlike Vlot’s fingerprint-based approach, behavioral detection
      cannot be identified with 100% certainty. This necessitates a novel, probabilistic
      approach to recognising behavioral detection.

    • We implement this approach in a static HTML scanner and scan the home pages
      of the Tranco1 Top 10,000 websites for behavioral detection, on which the scanner
      found 17,862 scripts. Our scanner found 23 scripts with a score of 100%, 69 scripts
      between 60–95%), 97 scripts between 40–60%, 290 scripts between 20%–40% and
      17,203 scripts that did not use any known behavioral detection method (scoring
      0%–20%).

    • We determine the false positive rate of our scanner by manual analysis of a
      statistical significant number of scripts in each category using random sampling.

1
    https://tranco-list.eu/

                                            6
Chapter 2

Related Work

Recent studies into web bot detection mainly focus on browser fingerprinting. There
are only a few recent studies regarding behavioral detection of web bots.

2.1    Bot detection
Bot detection is the overarching name for all different methods concerning the detection
of bots on the web. The research regarding bot detection gives insight in the way bot
detection takes place in general and serves as a base for further research.
    According to Ji et al. bot detection can be categorized into only two categories,
host-based and network-based [JHZ+ 14]. Network-based bot detection monitors net-
work packets for signs of bots, while host-based detection monitors the objects and
processes of the system. In addition, Ji et al. theorize that behavior-based methods
are more practical and effective for single process bots, but become less effective when
detecting multi-process bots. Multi-process bots have two specific features. As op-
posed to a single process bot, they can separate command and control connections
from malicious behavior and they are able to assign malicious behavior to multiple
processes. We will not be making this distinction in our research.
    Taking a closer look at the bot detection itself, Dolfing [Dol19] has done a study
on multiple papers discussing browser fingerprinting. He mentions that different terms
are used across these different papers and he wants to make sure the the reasoning
is aligned between the different findings. This study adds to the research regarding
browser fingerprinting by clearing up different studies and therefore making sure that
future research can focus better on the aspects they want to discuss. In our thesis,
we want to use this same approach regarding the behavioral detection methods. As
of right now there are multiple papers discussing one or more behavioral detection
method(s). However, a paper which contains a list of behavioral detection methods is
not available to our knowledge.
    Behavioral detection methods can have a major impact on scientific research by
limiting automating scraping of data even though it is used for benign purposes. En-
glehardt et al. [EN16] created OpenWPM, a web bot framework intended for scientific
studies into measuring online privacy. OpenWPM has several anti-bot-detection fea-
tures, that focus exclusively on behavioral detection. OpenWPM has been successful,
in that it has been used in over 50 studies to date.

                                           7
Using a scanner built on top of this OpenWPM framework, Jonker et al. [JKV19]
studied browser-fingerprinting-based bot detection. They manually analysed several
known bot-detection scripts and found they partially relied on browser fingerprinting.
They extrapolated from there and tested the browser fingerprints of several popular
web bot frameworks against the browser on which they are based. They found that
these frameworks introduce subtle differences in the browser fingerprint. In a study
of the Alexa Top 1 Million, they found that 12.7% of websites used some form of
browser-fingerprinting-based web bot detection.
    Regarding detection and analysis, multiple studies have been conducted. Tan et
al. [TK02] have proposed navigational pattern analysis. This was a new approach to
bot detection, focusing on how the client navigates the site. It is an early form of
behavioral detection that can be executed fully server-side.
    Besides that, Schwarz et al. [SLG19] have conducted a study on JavaScript Tem-
plate Attacks. These attacks are automated and detect differences between browser
engines based on their environment. The detection of these differences between the
browser engines applies to the browser fingerprinting to distinguish bots from humans.

2.2    Behavioral detection
Vlot investigated detection of web bots using browser fingerprinting [Vlo19]. He applies
the concept of fingerprinting surface to several web bots and finds, for each web bot,
several attributes in which their browser fingerprint is distinct from other browsers
within the same browser family. Based on these findings, he built a scanner to detect
whether websites were accessing these unique parts of the browser fingerprint. We will
adapt his approach to identifying fingerprint-based bot detection to be applicable to
behavioral detection.
     The work of Bai et al. [BXZH14] focuses on bogus behavior in web crawler mea-
surement. Their analysis features looking at the behavior of web crawler measure-
ment. However, in this research they propose a model which focuses on the traffic of
the crawlers at the network gateway of a network operator. We are taking a differ-
ent approach with this research, by investigating behavioral detection, using pattern
matching instead of investigating the network traffic generated.
     Most behavioral detection methods can be used by any company, whereas other ap-
proaches give a website-specific bot-detection countermeasure. One of these approaches
has been explored by Haidar et al. [HE17]. They proposed to use a site-specific classi-
fier to distinguish between humans and bots, based on the path traversal of the website.
They trained their classifier on input from genuine human visitors. In their subsequent
test, the classifier detected bots after these had, on average, visited 10 pages. This
approach may thus be valuable to websites seeking to prevent wholesale scraping of
their content, but is not useful against specific scrapers that only load a handful of
pages.
     Iliou et al. have done research towards creating a framework to detect advanced
bots [IKT+ 19]. In this research they have assessed HTTP traffic and noticed that the
accuracy is high whenever the bots do not try and hide their identity. They consider
advanced web bots as web bots that present a browser fingerprint and possibly contain
human-like behavior. A research and framework such as the one investigated by Iliou

                                           8
et al. is built upon to try and detect these more advanced bots simulating human-like
behavior.

                                         9
Chapter 3

Methodology

This research will look into behavioral detection and how this amounts to bot detection
as a whole. First and foremost, bot detection scripts will be reverse-analyzed manually
to acquire code that is used for behavioral detection. Afterwards, this manual process
will be automated, utilizing the code found manually. Processing and categorizing this
data can then commence. Through analyzing the categorized data, conclusions can be
drawn regarding which code is utilized for detecting bots.
    Whereas reverse-analysis has given insight into the way in which scripts and their
corresponding code are responsible for detection, this does not give information regard-
ing the behavior of such a script. Therefore, the next step in this research is performing
action-based analysis. Instead of analyzing the scripts, it is now time to start testing
these scripts in action. First of all, these scripts should be loaded and specific functions
should be called to check whether behavior of the user is tracked. Initially this can
and should be done locally to check the behavioral detection and responses to user
behavior which the scripts return. Afterwards, these same tests should be executed on
a web server and it should be investigated whether any of the behavior alters.
    Whenever alternate behavior has been detected, this needs to be investigated fur-
ther and changes to testing might need to be implemented. If not, the behavioral
detection scripts perform the same both locally and on a web server. Since they work
the same, tests can and should be performed both locally and on the web server so
that consistency is maintained. Immediately upon receiving feedback from the behav-
ioral detection scripts, the main task becomes collecting this feedback and storing it
accordingly. After collecting a sufficient amount of data, it should be clear how the
bot detection scripts have determined that the user is a regular user and not a bot.
    Along with behavioral detection regarding a regular user, it is now important to
repeat this same process and acquire information using a bot. This bot should trig-
ger the behavioral detection scripts and data collection should commence. After this
elongated process it is time to compare the collected data with the data collected on
a regular user.
    The complicating factor is the fact that the technique of detecting bots can be ’per-
fect’, but the technique to detect the user of these ’perfect’ techniques cannot exclude
false positives. In short, it is difficult to distinguish between bot-detection and benign
use of behavioral detection techniques. As mentioned before, since countermeasures
can lead to websites masking their content, scraping studies can become unreliable.

                                            10
Therefore, scraping studies should detect whether web sites use detection techniques.
For fingerprint-based techniques there is already an approach. However, for behavioral-
detection based techniques there is no approach known to us. This is why we have
looked into creating an approach for behavioral-detection based techniques.

                                          11
Chapter 4

Known methods for behavioral
detection

This chapter serves to show the different behavioral detection methods and their coun-
termeasures discussed in literature. The methods and their accompanying brief expla-
nation are followed by the countermeasures. Besides that, the method and its counter-
measures are followed by papers in which the detection method is discussed. Lastly, the
method and countermeasure can be followed by a remark. The detection method, its
countermeasure, the corresponding paper and the usefulness of the detection method
are then also depicted in a table. Further explanation of the detection methods, its
countermeasures and code examples of all of the detection methods below can be found
in appendix B.
    In Table 4.1, the overview of behavioral detection methods discussed in literature
has been depicted. The detection methods are listed from a low sophistication level to
a high sophistication level.
    As shown in the table, each of the detection methods have been classified as either
client-side or server-side detectable.
    The detection method ’rate limiting of the user requests’ can be done both client-
side and server-side. In the code snippet B.0.3 we can see an example of the client-side
detection method of rate limiting. Server-side rate limiting can be done by checking
the logs.
    The detection method ’honeypot trap’ is done both server-side and client-side. This
method checks whether the invisible element has been accessed. Server-side this can
be found in the logs and client-side detection can trigger a response immediately after
the element has been accessed.
    The ’Captcha/Recaptcha’ detection method is a client-side and server-side detec-
tion method. In this case a client-side verification of the Captcha/Recaptcha is not
sufficient. For example, in cases where a user runs the form without JavaScript en-
abled, the verification will keep running and will keep sending submissions to the server.
Therefore we need a server-side method which tests whether the Captcha/Recaptcha
was run and has been completed.
    ’Site traversal’ as a detection method is detected at the server-side. The server logs
show the navigational data of the users that access the website.
    The ’mouse movement’ detection method requires both client-side and server-side

                                           12
processing. Capturing the mouse movement is done client-side. This data is then sent
   from client-side to server-side for analysis.

Detection method                 Countermeasure                            Discussed by            Detected at

Rate limiting of user requests   Delays and random waits                   [BMV20, MD11]           client or server
Honeypot trap                    Do not access invisible elements          [SA18]                  client and server
Captcha/Recaptcha                – Audio-version → speech-to-text          [SA18, SKSP17, BMV20]   client and server
                                 – Crowdsourcing
Site traversal                   Human-like path traversal configuration   a.o. [TCK09, SVA11]     server
Mouse movement                   Random mouse movements                    [PB04, CGK+ 12]         client and server

          Table 4.1: Overview of behavioral detection methods discussed in literature

        Below we briefly describe the detection measures listed in Table 4.1.

        • Rate limiting: as the name suggests, the amount of requests in a certain time-
          frame is limited.
          Remarks: rate limiting can be done both client-side and server-side. We will
          be focusing on client-side rate limiting.

        • Honeypot trap: elements that cannot be accessed by a human user physically,
          but can be accessed by a bot, trigger a response whenever they are accessed.
          Remarks: with a honeypot trap, the trap itself is not considered a detection
          method. The detection part is checking whether a bot accesses the trap. This
          check is often done server-side and therefore we are unable to do anything with
          this information. However, we are able to detect honeypot traps client-side and
          therefore can circumvent the trap.

        • CAPTCHA/ReCAPTCHA: whenever the CAPTCHA is solved, the system
          acknowledges you are a human user and you are able to continue traversing the
          website, otherwise you are blocked from the site.

        • Site traversal: server-side logs contain data on the user navigation patterns of
          a site.

        • Mouse movement: distinguish between human-like mouse movements and bot-
          like mouse movements.

   How often do these methods occur in practise?
   Testing how often these methods occur in practise, we have iterated over the 17,682
   scripts resulting from collecting the scripts off of the homepages of the Tranco top
   10,000.

                                                         13
Method                        Amount of scripts      Percentage of scripts

    Rate limiting                                  252                       1.4%
    Honeypot trap                                   81                       0.5%
    CAPTCHA/reCAPTCHA                             2099                      11.9%
    Site traversal                                 335                       1.9%
    Mouse movement                                9902                      56.0%

                       Table 4.2: Known methods occurrences

    Checking for all of the methods above was done by going through the scripts line
by line and checking for methods and libraries known to be used when it comes to the
method in question.
    The table below shows which methods, libraries, links or classes were used to check
whether the known behavioral detection method was present in the script.

                                          14
Detection method               Typical keywords

  Rate limiting                  bottleneck
                                 express-brute
                                 request-rate-limiter
                                 smart-request-balancer
                                 ratelimit
                                 ratelimiter

  Honeypot trap                  honeypot
                                 spamtrap
                                 norobot
                                 nohuman

  CAPTCHA/reCAPTCHA              src=”https://www.google.com/recaptcha/api.js”
                                 src=”https://www.google.com/recaptcha/api.js?. . .
                                       . . . onload=onloadCallback&render=explicit”
                                 class=”g-recaptcha”
                                 CAPTCHA
                                 reCAPTCHA

  Site traversal                 sessionStorage
                                 clickstream

  Mouse movement                 mousemove
                                 onmousemove
                                 mouseoverlistener
                                 DOMMousescroll

                   Table 4.3: List to check for known detection method

    Important is to realize that when it comes to rate limiting there are methods such
as await , but these cannot be checked using our analysis tool as this would return
too many false positives since this is also often used outside rate limiting. With the
honeypot trap, the same effect as the methods in the table can be realized by using
absolute positioning outside of the scope of a human visitor. However, we cannot
make the conclusion that absolute positioning outside of the canvas is automatically a
honeypot trap.

                                             15
Chapter 5

Reverse analysis of bot detection
scripts

In chapter 4 we have seen which behavioral detection methods were documented in
various papers. In this chapter we will focus on identifying which methods are present
in various scripts. An approach to the reverse analysis will be discussed with its
accompanying methods to identify the known behavioral detection. Lastly, the results
of the reverse analysis will be documented and discussed.

5.1       Approach to reverse analysis
The initial step to our research is gaining access to data regarding behavioral detec-
tion. This part of the research is based on the data collected by Jonker et al. where
bot detection scripts were obtained by using a scanner built on top of the OpenWPM
web measurement framework [JKV19]. To study behavioral detection methods and
especially how behavioral detection methods are implemented, were the initial focus.
Through reverse-analysis of the scripts, insight was gained regarding this implementa-
tion.
    During the data study, there were some problems which needed to be accounted for.
Namely, methods were used to make analysis of the files more difficult. The process of
analysing a file starts with de-minification of the code to make it more readable. Then
beautification of the code is performed. The beautification tries to change the variable
names back to the original names and makes sure the code layout is restored. After
this is done, the manual investigation can commence.

    An example of the de-minification and beautification process is shown below.
1   t r a c k : f u n c t i o n ( t , n ) {n . t a r g e t=t , e . i f r a m e T r a c k e r . h a n d l e r s L i s t . push ( n ) , e ( t ) .
           bind ( ” mouseover ” , { h a n d l e r : n } , e . i f r a m e T r a c k e r . m o u s e o v e r L i s t e n e r ) . bind ( ”
           mouseout ” , { h a n d l e r : n } , e . i f r a m e T r a c k e r . m o u s e o u t L i s t e n e r ) }

                                               Code snippet 5.1: Original code

                                                                 16
1   track : function ( t , n) {
 2         n . t a r g e t = t , e . i f r a m e T r a c k e r . h a n d l e r s L i s t . push ( n ) , e ( t ) . bind ( ”
                  mouseover ” , {
 3             handler : n
 4         } , e . i f r a m e T r a c k e r . m o u s e o v e r L i s t e n e r ) . bind ( ” mouseout ” , {
 5             handler : n
 6         } , e . iframeTracker . mouseoutListener )
 7   }

                                 Code snippet 5.2: After de-minification process

 1   track : function ( source , options ) {
 2       /∗∗ @type { ! Obj ect } ∗/
 3       options . target = source ;
 4       $ . i f r a m e T r a c k e r . h a n d l e r s L i s t . push ( o p t i o n s ) ;
 5       $ ( s o u r c e ) . bind ( ” mouseover ” , {
 6           handler : options
 7       } , $ . i f r a m e T r a c k e r . m o u s e o v e r L i s t e n e r ) . bind ( ” mouseout ” , {
 8           handler : options
 9       } , $ . iframeTracker . mouseoutListener ) ;
10   }

                                  Code snippet 5.3: After beautification process
    Then, a manual analysis was done on the de-minified and beautified code. The
results of the manual analysis showed that certain methods such as tracking mouse
movement were not only used for behavioral detection, but also used for regular website
operations. Thus, reinforcing the idea of possible false positives. These false positives
were largely present as almost all scripts would have these methods applied.
    During the manual reverse analysis we found that for a lot of behavioral detection
scripts, API calls were being made. Since we do a static reverse analysis we ignore
those API calls and focus on the methods we find in the source code. However, if
further research commences regarding this topic this is worth to look into further. For
example, finding out which behavioral detection method is present in one of the scripts
and tracing this method through the API call with dynamic sink and source tracing.
    The amount of bot detection scripts in the current database which were subject
to the automated detection script was 19,393. The way in which these scripts were
gathered structure-wise should be no problem for the data parsing which is done by
the automated script. To make sure any updates on the database do not interfere
with the automatic script, the database structure should be maintained. Since all bot
detection scripts are distributed across more than 9000 folders, scripts are first stored
in one directory. Then, the automatic script is able to iterate over the bot detection
scripts and categorize the patterns in directories according to the behavioral detection
methods table below.

5.2        Identifying known behavioral detection
The re-identification of known behavioral detection in this research was done in two
ways. The usage of pattern matching has been used to compare event types and meth-
ods that attach events to specific elements for behavioral detection. The other form

                                                             17
of re-identification was done by methods that we will call ”re-identification patterns”.
Whereas the pattern matching can lead to false positives, the re-identification patterns
are used to take away these false positives. By checking the patterns used by compa-
nies that we know use behavioral detection against the patterns that might contain
behavioral detection, we are able to confirm whether the patterns that we found to be
possible behavioral detection are indeed behavioral detection.
    In regards to the minification and obfuscation of code, we have not ran into prob-
lems. As we can see in code snippet 5.1, the code that is related to behavioral detection
stays intact and has not been obfuscated. Therefore we do not need a de-obfuscation
method when it comes to checking for behavioral detection patterns.

5.3     Results
In the reverse analysis 19,393 known bot detection scripts have been analysed. In the
reverse analysis we have encountered the behavioral detection methods in table 5.1.
These behavioral detection methods have unique properties which we can use to classify
them. First of all, a lot of behavioral detection methods we have encountered can be
categorised as ’event types’. An event in Java is triggered whenever a change in the
graphical user interface occurs, making it perfect for behavioral detection. This can
be used, for example, to check whether certain buttons are interacted with.
    Besides the event types, we also came across methods which attach events to specific
element (e.g. addEventListener). We categorise these methods as ’event-element-
connections’. For each touch event type an event handler has to be registered. These
touch events are mostly keyboard and mouse usage. Meaning, these patterns will most
likely occur more frequently and can also frequently occur whenever no behavioral
detection method is present.
    Furthermore, there are unique patterns which identify a script or a host. These
patterns highlight the typical style of a script and we can use these patterns to detect
previously known and unknown scripts by re-identification. These ’re-identification
patterns’ are used to check for strings and URLs which are linked to third parties
known for behavioral detection. Meaning, whenever a match is found, the script most
likely has behavioral detection present.

                                           18
Category                     Keyword

                     Event type         Mouse     mousemove
                                                  onmousemove
                                                  mouseOverListener
                                                  mousewheel
                                                  DOMMouseScroll
                                      Keyboard    keydown
                     Event–element connection     trackEvent
                                                  addEventListener
                                                  addBehaviorkey
                     Re-identification patterns   distil
                                                  perimeterx
                                                  adscore
                                                  datadome
                                                  perfdrive

                        Table 5.1: Behavioral detection categories

                Detection method       Pattern                 # Matches

                Mouse movement         mousemove                      4676
                                       onmousemove                    1344
                                       mouseOverListener               126
                Scrolling              mousewheel                     1882
                                       DOMMouseScroll                 1436
                Keyboard               keydown                        4726
                Event trackers         trackEvent                     2523
                                       addEventListener               6754
                                       addBehaviorkey                  611

                   Table 5.2: Behavioral detection method occurrences

   Besides the different patterns found above which can be classified under the same
category as the detection patterns in table 4.1, there were also occurrences of new
patterns for behavioral detection such as a code inclusion by Distil Networks. Distil
Networks is known for its bot detection and its machine learning algorithms used for
behavioral detection1 .
  1
      https://www.imperva.com/

                                            19
Whenever we take a closer look at the scripts we can see the methods work in
practise. The most occurring methods ’mousemove’, ’keydown’ and ’mousewheel’ are
more often than not used to simply detect the movements of the user and adapt the
buttons or content of the web page accordingly (cf. 5). The other methods which
are less used, such as the ’mouseOverListener’, are mostly used in the context of
behavioral-based detection. Whenever we take a look at the full scripts using these
code inclusions we can see that a full user report is built, based on the behavioral
analysis.
   As mentioned before, the most occurring code inclusions are more often than
not used to detect movement of the user, unrelated to behavioral-based detection.
Whenever these code inclusions are picked up however, they are treated as possible
behavioral-based detection. In the grand scheme, this can lead to false positives by
which effects the scoring mechanism with the relatively high amount of matches. For a
more accurate representation of the numbers, an extra step to eliminate false positives
should be taken. A next step towards reaching an even more accurate depiction of
the amount of behavioral-based detection being done, is to use more specific regular
expressions to eliminate the benign use of these code inclusions.

                                          20
Chapter 6

Automatically recognising
behavioral detection

We have chosen to research behavioral detection methods we have found both in the
manual reverse analysis and in literature. Since we have not seen new methods in our
research we can not be certain of the behavioral characteristics that are bound by the
unknown behavioral detection methods. Therefore, at this stage we have deliberately
chosen to not look for and investigate these unknown behavioral detection methods
further, but instead focus on what we have found in the reverse manual analysis and
the literature.

What can we detect and what do we choose for?
In this research we do not focus on finding behavioral detection patterns that we have
not seen, in either literature or the manual reverse analysis. We have decided to shift
our focus away from this, since we can not be certain of the characteristics of the
behavioral detection pattern when we have not found it in the reverse manual analysis
or in the literature. Therefore we are not sure of what we should look for and detection
is therefore not feasible.
    Table 4.1 gives the detection methods we have found in literature and table 5.1
shows the behavioral detection methods we have found in the manual reverse analysis
and are used for automatically identifying behavioral detection.

Challenges and limitations
Automatic detection comes with its challenges. We are only able to perform client-side
detection and no server-side detection. Besides that, when we do perform client-side
detection, we can miss certain behavioral detection methods and misclassify others.
We are able to miss certain behavioral detection methods since we can only identify
detection methods we have encountered in the manual analysis or in literature. Besides
that, we are able to misclassify certain methods as behavioral detection whenever we
perform client-side detection.

                                          21
Data acquisition
Acquiring data in this study means the collection of scripts containing behavioral de-
tection methods. The most efficient way of acquiring this data is through an automated
tool. This tool should be able to traverse the homepage of a web page and return the
static scripts.
    In this research area there are multiple tools that can be used [MSD+ 20]. There
are HTTP clients such as wget, headless browsers such as PhantomJS and automated
user browsers such as OpenWPM [Goß20].
    At first, we tried using the automated user browser OpenWPM to measure the be-
havioral detection on the web. Regarding resource consumption, OpenWPM relatively
uses a lot of resources compared to the other two classes of tools mentioned. However,
the completeness of the OpenWPM tool with respect to scripts downloaded is a lot
higher than the HTTP clients. The completeness is higher because the automated user
browsers is dynamic whereas HTTP clients only find the static scripts. One major dis-
advantage the automated user browser OpenWPM has over the headless browsers and
HTTP clients is the complexity of using the tool. Before using OpenWPM, the differ-
ent commands and code snippets which can be found on the wiki of the tool need to be
understood. Then, separate commands need to be programmed which are in line with
the framework that is set up, to generate the results you are looking for. After running
into issues locally and being able to fix them, these issues were unable to be resolved
when running OpenWPM on a server. Websites which were reachable would give a
404 error (page not found) or a 403 error (forbidden) on multiple occasions. Since it
would cost too much energy and time to fix this and results were more important, we
decided not to use OpenWPM. OpenWPM is not trivially deployable.
    We then decided to look into using headless browsers (e.g. PhantomJS) or a HTTP
client (e.g. wget). Simplicity-wise, HTTP clients are easier in use. Using a headless
browser for the first time requires some learning process, whereas using the HTTP
client wget can be used immediately.
    Moreover, the resource consumption of the HTTP client wget is lower than the
headless browsers. Therefore we have opted to use the HTTP client wget for our
research.

Design decisions
Scraping techniques and other bot-related activities on websites have evolved over the
years. Many websites have implemented countermeasures against bots being able to
circumvent their detection methods. One of the initial techniques to try and counter
bots is the usage of obfuscation. Obfuscation is the task of deliberately changing the
source code in such a way that it is difficult to read and understand. However, in
the manual reverse analysis we have seen that obfuscation techniques do not effect the
outcomes of our research as they do not effect the behavioral detection part of the
scripts.
    Another problem with the evaluation of the scripts is the fact that the vast ma-
jority of the scripts is minified. Minification can be seen as a type of obfuscation as
some variables will be renamed and empty spaces are removed. The main purpose of
minification however, is the reduction of the file size. The JavaScript beautifier atom-

                                          22
beatify, which is a package within the atom IDE was used to make sure the scripts had
    their spacing restored.
        After this process, we can start looking at the content of the scripts and investigate
    whether behavioral detection is being used. The scripts are statically analysed for be-
    havioral detection patterns. The process of checking for behavioral detection patterns
    is done as described in section 6.2.
        Moreover, the choice was made for static analysis instead of dynamic analysis.
    Whereas dynamic analysis has the advantage being certain that the code found is ac-
    tually being executed and used, it has a major problem for this research. Namely, the
    code that is not being used at the time of analysis will not be picked up and analysed
    even though it is actually being used by the website. For this reason we have chosen
    for static analysis.

       In the manual reverse-analysis we have found that some scripts are inconsistent
    with their usage of capital letters. Therefore we have made sure that every line in
    the script was converted to lowercase and matches the lowercase terms we used for
    analyzing whether the script contains behavioral-based detection methods.

1   l i n e = f . r e a d l i n e () . lower ()

                                      Code snippet 6.1: Lowercase conversion

        Analyzing the files there were some problems at first. Due to obfuscations in en-
    coding used by the scripts we needed to use codecs with the ’utf-8’ encoding and we
    ignore the errors thrown. We ignore the errors instead of trying to solve them since it
    was found with manual analysis that these errors thrown were not of interest for the
    research (e.g. differently encoded search strings on the websites).

1   f = c o d e c s . open ( o s . path . j o i n ( s u b d i r ,     file ) , ’r ’ ,
2   e n c o d i n g =’ u t f −8 ’ , e r r o r s =’ i g n o r e ’ )

                                      Code snippet 6.2: Using utf-8 encoding

        Whenever analyzing the files, we came across another problem with the implemen-
    tation. Whenever we would search for re-identification patterns we would generate a
    lot of false positives. For example, code inclusions such as .distilled would come up
    as being a part of the re-identification pattern Distil. Therefore, we needed to use
    regular expressions to limit the search for re-identification patterns to the exact term
    we gave the script instead of simply looping through the code inclusions we stamped
    as being behavioral-detection based and disregarding which extensions were added to
    the functions.

         The re-identification pattern now looked like this:
1   i f r e . s e a r c h ( r ”\b{}\ b ” . format ( d e t e c t o r ) , l i n e ) :

                     Code snippet 6.3: Re-identification pattern regular expression

                                                                     23
6.1    Recognising behavioral detection
To better recognise behavioral detection we have made use of both known methods
found in literature and the manual reverse analysis. These results of these methods
were then combined and used in an automatic tool, analysing the potential behavioral
detection scripts from the top 10,000 Tranco list. We will find methods that we have
encountered in either of these studies. However, other behavioral detection outside of
the behavioral detection found in of the methods described above will not be picked
up by our tool.
    Creating our own analysis strategy, it’s important to note that behavioral detection
is done in a couple of ways as mentioned above and therefore it is important to have
multiple detection categories. We have split up the detection in the following detection
categories:

  1. Event types
     In the manual analysis we have found multiple code inclusions in the form of
     event types, which have been traced back to behavioral detection (cf. 5). These
     code inclusion can indicate behavioral detection being in place, but can also lead
     to false positives.

  2. Event-element connections
     Event-element connections are methods that attach events to specific elements.
     In the reverse-analysis we have seen that a particular subset of these events have
     been largely present in the behavioral detection scripts.

  3. Re-identification patterns
     A re-identification pattern is a pattern which comes from a specific web-bot
     detector. For example, a company such as Distil Networks is known for its web-
     bot detection based on machine learning. The re-identification patterns are used
     for validating the identification of a behavioral detection script. Whenever a
     re-identification pattern is found, it is a certainty that behavioral detection is
     present.

6.2    A scoring mechanism for identifying behavioral de-
       tection
We re-use the concept of Vlot to determine a score based on the appearance of patterns
(static check) [Vlo19]. However, the specific patterns used, the weights of the patterns
and the aggregation are original.
    To categorize the results we have made use of a scoring algorithm. A score is given
to each of the scripts, based on the scoring mechanism we will explain below. If the
accumulated score of a script goes above the threshold mentioned in this same section,
the script will be labeled as a behavioral detection script.
    After looking at the automated reverse-analysis and verifying the results with the
manual reverse-analysis we came up with the following scoring mechanism. Instead of
using arbitrary scores we have chosen to normalize the scores and use percentages to
better depict the chance of behavioral detection being present. Based on the reverse

                                          24
analysis we have determined a threshold which the combined detection categories need
to exceed for the script to be classified as being a behavioral detection script.
    Since the methods that attach events to specific elements have a high chance of
being included when it comes to scripts not containing behavioral detection, the score
of the event types is higher than the event-element connections (20%) at 50% for
the mouse event types and 30% for the keyboard event types. The choices for these
percentages are based on the amount of occurrences in the different scripts and the
outcomes of score calculations after several test runs.
    After several test runs and analysis of the results we have seen that the tool is
accurate but still has some flaws. A scoring mechanism will always be flawed, but
using the normalization we have made its accuracy more precise.

                     Event Types           Methods that attach               Re-identification
                                           events to specific elements       patterns

 Code Inclusion      mousemove             trackEvent                        distil
                     onmousemove           addEventListener                  perimeterx
                     mouseOverListener     addBehaviorKey                    adscore
                     mousewheel                                              datadome
                     DOMMouseScroll                                          perfdrive
                     keydown

 Threshold           Mouse 20              20                                1
                     Keyboard 10

 Score               Mouse +50%            +25%                              100%
                     Keyboard +30%

                            Table 6.1: Scoring mechanism

    It is important to note that adding the score to the total score will only happen
after the threshold is met or exceeded. These thresholds were determined based on
the manual and automatic reverse analysis results.
    Based on what we have seen in the reverse analysis we have decided to split up
the scoring mechanism results into 5 separate categories. The first category consists of
scripts which have no indications of behavioral detection. A score 0%-20% indicates
the threshold was not met for any of the categories in table 6.1. The next category has
some indications of behavioral detection in the form of keyboard event types. These
event types, not in combination with other methods, are in our opinion not enough to
classify a script as having behavioral detection. Category 3 contains the scripts we are
uncertain about. These scripts have some indications of behavioral detection, but do
not have any supporting methods. However, category 4 scripts do have multiple indica-
tions of behavioral detection being present. These scripts contain enough mouse event
types to surpass the threshold and are accompanied by multiple event-element connec-
tions, keyboard event types or both. The category with the score of 100% represents
the scripts of which we know for sure that they contain behavioral detection. These

                                          25
scripts contain known patterns (re-identification patterns) from companies known to
    use behavioral detection. This categorical scoring system has been depicted below.

                      # indications detected                                    Estimation                    Score

                      1. No indications                                         Not present                0%–20%
                      2. Low number of indications                              Probably not             20%–40%
                      3. Mid number of indications                              Uncertain                40%–60%
                      4. High number of indications                             Likely                   60%–95%
                      5. Re-identification pattern found                        Certain                            100%

                         Table 6.2: Estimation and scoring of behavioral detection

        The files are analysed line by line to check for code inclusions of the terms in
    table 6.1. These code inclusions are checked for, by using regular expression. The
    following code snippets shows some examples of what the script was able to detect:
1   loadDataDomeScript ( ) {
2       var e=document . c r e a t e E l e m e n t ( ” s c r i p t ” ) ; e . type=” t e x t / j a v a s c r i p t c r i p t ”
3       } ( window , document , ” s c r i p t ” , ” h t t p s : / / j s . datadome . co / t a g s . j s ”
4   }

           Code Snippet 6.4: Detection pattern: Re-identification pattern (datadome)

1   function () {
2       h ( ” D i s t i l F P 2 S t a r t ” ) ; var t=new s ; t . i n t e r r o g a t e ( f u n c t i o n ( t ) {h ( ”
              DistilFP2End ” )
3   }

               Code Snippet 6.5: Detection pattern: Re-identification pattern (distil)

1   verifiedCaptcha : ! 1 , failedToVerifyCaptcha : ! 1 , failedToDecodeBase64 : ! 1 ,
           errorMessage :””}
2   , n . env=” p u b l i c ” , n . serviceName=”p e r i m e t e r x ”

           Code Snippet 6.6: Detection pattern: Re-identification pattern (perimeterx)

1   document . a d d E v e n t L i s t e n e r ( ’ t o u c h s t a r t ’ , t o u c h s t a r t L i s t e n e r ,
        eventListenersOptions )
2   document . a d d E v e n t L i s t e n e r ( ’ mouseover ’ , m o u s e o v e r L i s t e n e r ,
        eventListenersOptions )

    Code Snippet 6.7: Detection patterns: Mouse event (mouseoverListener) and Event-
    element connection (addEventListener)
        Since we know from our research that the re-identification patterns such as the
    ones above all use behavioral detection these scripts will score 100%. However code
    snippet 6.7 shows 3 pattern matches. As we know, these can be false positives as
    the EventListeners and mouseOverListener can also be used for other purposes on the
    website. Consequently, we would need to analyze the entire script to see whether these
    categories surpass the threshold.

                                                                     26
Chapter 7

Identifying behavioral detection
in the wild

This chapter serves to explain the methodology behind the case study as proposed by
us, the researchers. The methodology is created to investigate behavioral detection
methods on the internet and its existing countermeasures. The methodology has been
inspired by the methodology from the thesis of Gabry Vlot [Vlo19]. Similar to the thesis
of Gabry Vlot we will start with a gathering phase where the scripts will be collected for
manual reverse analysis. Subsequently, the manual analysis will take place, a literature
study will be done and thereafter the reverse analysis will be automated. Afterwards,
behavioral detection will be measured on the web using the insights we have gained
from the reverse analysis and the literature study. This poses the question whether
we find behavioral detection by scripts we have not encountered before. If so, do these
scripts indeed detect bots by their behavior?

7.1     Methodology
We visit the homepages of the top 10,000 websites from the Tranco top 1 million. The
running scripts are extracted and downloaded. The extraction process was done using
wget and is explained in the data acquisition paragraph of chapter 6. After the data
acquisition the scripts are checked for behavioral detection.

                                           27
7.1.1      Setup
Initially, we have split up the detection methods, where it is important to note that
its scoring mechanism is prone to false positives as mentioned in Section 7.1.3.
    Pattern recognition is a common technique to figure out whether someone or some-
thing is out of place. For example, in airports, screening supervisors will have score
sheets and use security camera footage to evaluate whether someone’s behavior is
deemed as suspicious behavior.1 This course of action has now been transferred over
into bot detection, which is where the name behavioral detection comes from. Similar
to the screening of people in airports, our bot detection scripts have a threshold and
whenever this threshold is exceeded, the behavior of the bot is classified as suspicious.
From the results of the case study we can conclude that the patterns mentioned in
Section 6.1 are sophisticated enough to check whether scripts use behavioral-based
detection.
    We have decided to split the behavioral detection methods up into categories. All
three of these categories have been established through results from the manual reverse
analysis and the literature study. One of these categories is event types and contains
Java event types that have been linked to behavioral detection in either the literature
study or in the reverse analysis.
    Besides that, these methods often have other methods which attach these events
to specific elements. These methods that attach events to specific elements have a
separate category which can further confirm the suspicions created by the first category.
    Furthermore, re-identification patterns are used to confirm the suspicions of behav-
ioral detection being present. Through reverse-analysis we found that re-identification
patterns are the best indication of behavioral detection being present. Even though
re-identification patterns are still able to be false positives (e.g. inclusions of these re-
identification patterns in comments), it is more than likely that behavioral detection
is being used whenever these re-identification patterns are included. Moreover, it is
also possible that these re-identification patterns are found when no other methods
relating to behavioral detection have been found. In this case, behavioral detection is
  1
      https://www.asi-mag.com/behaviour-detection-demystified-glimpse-tsas-capability/

                                                 28
You can also read