FreshRSS

πŸ”’
❌ Secure Planet Training Courses Updated For 2019 - Click Here
There are new available articles, click to refresh the page.
Before yesterdayYour RSS feeds

Hfinger - Fingerprinting HTTP Requests

By: Zion3R


Tool for Fingerprinting HTTP requests of malware. Based on Tshark and written in Python3. Working prototype stage :-)

Its main objective is to provide unique representations (fingerprints) of malware requests, which help in their identification. Unique means here that each fingerprint should be seen only in one particular malware family, yet one family can have multiple fingerprints. Hfinger represents the request in a shorter form than printing the whole request, but still human interpretable.

Hfinger can be used in manual malware analysis but also in sandbox systems or SIEMs. The generated fingerprints are useful for grouping requests, pinpointing requests to particular malware families, identifying different operations of one family, or discovering unknown malicious requests omitted by other security systems but which share fingerprint.

An academic paper accompanies work on this tool, describing, for example, the motivation of design choices, and the evaluation of the tool compared to p0f, FATT, and Mercury.


    The idea

    The basic assumption of this project is that HTTP requests of different malware families are more or less unique, so they can be fingerprinted to provide some sort of identification. Hfinger retains information about the structure and values of some headers to provide means for further analysis. For example, grouping of similar requests - at this moment, it is still a work in progress.

    After analysis of malware's HTTP requests and headers, we have identified some parts of requests as being most distinctive. These include: * Request method * Protocol version * Header order * Popular headers' values * Payload length, entropy, and presence of non-ASCII characters

    Additionally, some standard features of the request URL were also considered. All these parts were translated into a set of features, described in details here.

    The above features are translated into varying length representation, which is the actual fingerprint. Depending on report mode, different features are used to fingerprint requests. More information on these modes is presented below. The feature selection process will be described in the forthcoming academic paper.

    Installation

    Minimum requirements needed before installation: * Python >= 3.3, * Tshark >= 2.2.0.

    Installation available from PyPI:

    pip install hfinger

    Hfinger has been tested on Xubuntu 22.04 LTS with tshark package in version 3.6.2, but should work with older versions like 2.6.10 on Xubuntu 18.04 or 3.2.3 on Xubuntu 20.04.

    Please note that as with any PoC, you should run Hfinger in a separated environment, at least with Python virtual environment. Its setup is not covered here, but you can try this tutorial.

    Usage

    After installation, you can call the tool directly from a command line with hfinger or as a Python module with python -m hfinger.

    For example:

    foo@bar:~$ hfinger -f /tmp/test.pcap
    [{"epoch_time": "1614098832.205385000", "ip_src": "127.0.0.1", "ip_dst": "127.0.0.1", "port_src": "53664", "port_dst": "8080", "fingerprint": "2|3|1|php|0.6|PO|1|us-ag,ac,ac-en,ho,co,co-ty,co-le|us-ag:f452d7a9/ac:as-as/ac-en:id/co:Ke-Al/co-ty:te-pl|A|4|1.4"}]

    Help can be displayed with short -h or long --help switches:

    usage: hfinger [-h] (-f FILE | -d DIR) [-o output_path] [-m {0,1,2,3,4}] [-v]
    [-l LOGFILE]

    Hfinger - fingerprinting malware HTTP requests stored in pcap files

    optional arguments:
    -h, --help show this help message and exit
    -f FILE, --file FILE Read a single pcap file
    -d DIR, --directory DIR
    Read pcap files from the directory DIR
    -o output_path, --output-path output_path
    Path to the output directory
    -m {0,1,2,3,4}, --mode {0,1,2,3,4}
    Fingerprint report mode.
    0 - similar number of collisions and fingerprints as mode 2, but using fewer features,
    1 - representation of all designed features, but a little more collisions than modes 0, 2, and 4,
    2 - optimal (the default mode),
    3 - the lowest number of generated fingerprints, but the highest number of collisions,
    4 - the highest fingerprint entropy, but slightly more fingerprints than modes 0-2
    -v, --verbose Report information about non-standard values in the request
    (e.g., non-ASCII characters, no CRLF tags, values not present in the configuration list).
    Without --logfile (-l) will print to the standard error.
    -l LOGFILE, --logfile LOGFILE
    Output logfile in the verbose mode. Implies -v or --verbose switch.

    You must provide a path to a pcap file (-f), or a directory (-d) with pcap files. The output is in JSON format. It will be printed to standard output or to the provided directory (-o) using the name of the source file. For example, output of the command:

    hfinger -f example.pcap -o /tmp/pcap

    will be saved to:

    /tmp/pcap/example.pcap.json

    Report mode -m/--mode can be used to change the default report mode by providing an integer in the range 0-4. The modes differ on represented request features or rounding modes. The default mode (2) was chosen by us to represent all features that are usually used during requests' analysis, but it also offers low number of collisions and generated fingerprints. With other modes, you can achieve different goals. For example, in mode 3 you get a lower number of generated fingerprints but a higher chance of a collision between malware families. If you are unsure, you don't have to change anything. More information on report modes is here.

    Beginning with version 0.2.1 Hfinger is less verbose. You should use -v/--verbose if you want to receive information about encountered non-standard values of headers, non-ASCII characters in the non-payload part of the request, lack of CRLF tags (\r\n\r\n), and other problems with analyzed requests that are not application errors. When any such issues are encountered in the verbose mode, they will be printed to the standard error output. You can also save the log to a defined location using -l/--log switch (it implies -v/--verbose). The log data will be appended to the log file.

    Using hfinger in a Python application

    Beginning with version 0.2.0, Hfinger supports importing to other Python applications. To use it in your app simply import hfinger_analyze function from hfinger.analysis and call it with a path to the pcap file and reporting mode. The returned result is a list of dicts with fingerprinting results.

    For example:

    from hfinger.analysis import hfinger_analyze

    pcap_path = "SPECIFY_PCAP_PATH_HERE"
    reporting_mode = 4
    print(hfinger_analyze(pcap_path, reporting_mode))

    Beginning with version 0.2.1 Hfinger uses logging module for logging information about encountered non-standard values of headers, non-ASCII characters in the non-payload part of the request, lack of CRLF tags (\r\n\r\n), and other problems with analyzed requests that are not application errors. Hfinger creates its own logger using name hfinger, but without prior configuration log information in practice is discarded. If you want to receive this log information, before calling hfinger_analyze, you should configure hfinger logger, set log level to logging.INFO, configure log handler up to your needs, add it to the logger. More information is available in the hfinger_analyze function docstring.

    Fingerprint creation

    A fingerprint is based on features extracted from a request. Usage of particular features from the full list depends on the chosen report mode from a predefined list (more information on report modes is here). The figure below represents the creation of an exemplary fingerprint in the default report mode.

    Three parts of the request are analyzed to extract information: URI, headers' structure (including method and protocol version), and payload. Particular features of the fingerprint are separated using | (pipe). The final fingerprint generated for the POST request from the example is:

    2|3|1|php|0.6|PO|1|us-ag,ac,ac-en,ho,co,co-ty,co-le|us-ag:f452d7a9/ac:as-as/ac-en:id/co:Ke-Al/co-ty:te-pl|A|4|1.4

    The creation of features is described below in the order of appearance in the fingerprint.

    Firstly, URI features are extracted: * URI length represented as a logarithm base 10 of the length, rounded to an integer, (in the example URI is 43 characters long, so log10(43)β‰ˆ2), * number of directories, (in the example there are 3 directories), * average directory length, represented as a logarithm with base 10 of the actual average length of the directory, rounded to an integer, (in the example there are three directories with total length of 20 characters (6+6+8), so log10(20/3)β‰ˆ1), * extension of the requested file, but only if it is on a list of known extensions in hfinger/configs/extensions.txt, * average value length represented as a logarithm with base 10 of the actual average value length, rounded to one decimal point, (in the example two values have the same length of 4 characters, what is obviously equal to 4 characters, and log10(4)β‰ˆ0.6).

    Secondly, header structure features are analyzed: * request method encoded as first two letters of the method (PO), * protocol version encoded as an integer (1 for version 1.1, 0 for version 1.0, and 9 for version 0.9), * order of the headers, * and popular headers and their values.

    To represent order of the headers in the request, each header's name is encoded according to the schema in hfinger/configs/headerslow.json, for example, User-Agent header is encoded as us-ag. Encoded names are separated by ,. If the header name does not start with an upper case letter (or any of its parts when analyzing compound headers such as Accept-Encoding), then encoded representation is prefixed with !. If the header name is not on the list of the known headers, it is hashed using FNV1a hash, and the hash is used as encoding.

    When analyzing popular headers, the request is checked if they appear in it. These headers are: * Connection * Accept-Encoding * Content-Encoding * Cache-Control * TE * Accept-Charset * Content-Type * Accept * Accept-Language * User-Agent

    When the header is found in the request, its value is checked against a table of typical values to create pairs of header_name_representation:value_representation. The name of the header is encoded according to the schema in hfinger/configs/headerslow.json (as presented before), and the value is encoded according to schema stored in hfinger/configs directory or configs.py file, depending on the header. In the above example Accept is encoded as ac and its value */* as as-as (asterisk-asterisk), giving ac:as-as. The pairs are inserted into fingerprint in order of appearance in the request and are delimited using /. If the header value cannot be found in the encoding table, it is hashed using the FNV1a hash.
    If the header value is composed of multiple values, they are tokenized to provide a list of values delimited with ,, for example, Accept: */*, text/* would give ac:as-as,te-as. However, at this point of development, if the header value contains a "quality value" tag (q=), then the whole value is encoded with its FNV1a hash. Finally, values of User-Agent and Accept-Language headers are directly encoded using their FNV1a hashes.

    Finally, in the payload features: * presence of non-ASCII characters, represented with the letter N, and with A otherwise, * payload's Shannon entropy, rounded to an integer, * and payload length, represented as a logarithm with base 10 of the actual payload length, rounded to one decimal point.

    Report modes

    Hfinger operates in five report modes, which differ in features represented in the fingerprint, thus information extracted from requests. These are (with the number used in the tool configuration): * mode 0 - producing a similar number of collisions and fingerprints as mode 2, but using fewer features, * mode 1 - representing all designed features, but producing a little more collisions than modes 0, 2, and 4, * mode 2 - optimal (the default mode), representing all features which are usually used during requests' analysis, but also offering a low number of collisions and generated fingerprints, * mode 3 - producing the lowest number of generated fingerprints from all modes, but achieving the highest number of collisions, * mode 4 - offering the highest fingerprint entropy, but also generating slightly more fingerprints than modes 0-2.

    The modes were chosen in order to optimize Hfinger's capabilities to uniquely identify malware families versus the number of generated fingerprints. Modes 0, 2, and 4 offer a similar number of collisions between malware families, however, mode 4 generates a little more fingerprints than the other two. Mode 2 represents more request features than mode 0 with a comparable number of generated fingerprints and collisions. Mode 1 is the only one representing all designed features, but it increases the number of collisions by almost two times comparing to modes 0, 1, and 4. Mode 3 produces at least two times fewer fingerprints than other modes, but it introduces about nine times more collisions. Description of all designed features is here.

    The modes consist of features (in the order of appearance in the fingerprint): * mode 0: * number of directories, * average directory length represented as an integer, * extension of the requested file, * average value length represented as a float, * order of headers, * popular headers and their values, * payload length represented as a float. * mode 1: * URI length represented as an integer, * number of directories, * average directory length represented as an integer, * extension of the requested file, * variable length represented as an integer, * number of variables, * average value length represented as an integer, * request method, * version of protocol, * order of headers, * popular headers and their values, * presence of non-ASCII characters, * payload entropy represented as an integer, * payload length represented as an integer. * mode 2: * URI length represented as an integer, * number of directories, * average directory length represented as an integer, * extension of the requested file, * average value length represented as a float, * request method, * version of protocol, * order of headers, * popular headers and their values, * presence of non-ASCII characters, * payload entropy represented as an integer, * payload length represented as a float. * mode 3: * URI length represented as an integer, * average directory length represented as an integer, * extension of the requested file, * average value length represented as an integer, * order of headers. * mode 4: * URI length represented as a float, * number of directories, * average directory length represented as a float, * extension of the requested file, * variable length represented as a float, * average value length represented as a float, * request method, * version of protocol, * order of headers, * popular headers and their values, * presence of non-ASCII characters, * payload entropy represented as a float, * payload length represented as a float.



    JA4+ - Suite Of Network Fingerprinting Standards

    By: Zion3R


    JA4+ is a suite of network FingerprintingΒ methods that are easy to use and easy to share. These methods are both human and machine readable to facilitate more effective threat-hunting and analysis. The use-cases for these fingerprints include scanning for threat actors, malware detection, session hijacking prevention, compliance automation, location tracking, DDoS detection, grouping of threat actors, reverse shell detection, and many more.

    Please read our blogs for details on how JA4+ works, why it works, and examples of what can be detected/prevented with it:
    JA4+ Network Fingerprinting (JA4/S/H/L/X/SSH)
    JA4T: TCP Fingerprinting (JA4T/TS/TScan)


    To understand how to read JA4+ fingerprints, see Technical Details

    This repo includes JA4+ Python, Rust, Zeek and C, as a Wireshark plugin.

    JA4/JA4+ support is being added to:
    GreyNoise
    Hunt
    Driftnet
    DarkSail
    Arkime
    GoLang (JA4X)
    Suricata
    Wireshark
    Zeek
    nzyme
    Netresec's CapLoader
    NetworkMiner">Netresec's NetworkMiner
    NGINX
    F5 BIG-IP
    nfdump
    ntop's ntopng
    ntop's nDPI
    Team Cymru
    NetQuest
    Censys
    Exploit.org's Netryx
    cloudflare.com/bots/concepts/ja3-ja4-fingerprint/">Cloudflare
    fastly
    with more to be announced...

    Examples

    Application JA4+ Fingerprints
    Chrome JA4=t13d1516h2_8daaf6152771_02713d6af862 (TCP)
    JA4=q13d0312h3_55b375c5d22e_06cda9e17597 (QUIC)
    JA4=t13d1517h2_8daaf6152771_b0da82dd1658 (pre-shared key)
    JA4=t13d1517h2_8daaf6152771_b1ff8ab2d16f (no key)
    IcedID Malware Dropper JA4H=ge11cn020000_9ed1ff1f7b03_cd8dafe26982
    IcedID Malware JA4=t13d201100_2b729b4bf6f3_9e7b989ebec8
    JA4S=t120300_c030_5e2616a54c73
    Sliver Malware JA4=t13d190900_9dc949149365_97f8aa674fd9
    JA4S=t130200_1301_a56c5b993250
    JA4X=000000000000_4f24da86fad6_bf0f0589fc03
    JA4X=000000000000_7c32fa18c13e_bf0f0589fc03
    Cobalt Strike JA4H=ge11cn060000_4e59edc1297a_4da5efaf0cbd
    JA4X=2166164053c1_2166164053c1_30d204a01551
    SoftEther VPN JA4=t13d880900_fcb5b95cb75a_b0d3b4ac2a14 (client)
    JA4S=t130200_1302_a56c5b993250
    JA4X=d55f458d5a6c_d55f458d5a6c_0fc8c171b6ae
    Qakbot JA4X=2bab15409345_af684594efb4_000000000000
    Pikabot JA4X=1a59268f55e5_1a59268f55e5_795797892f9c
    Darkgate JA4H=po10nn060000_cdb958d032b0
    LummaC2 JA4H=po11nn050000_d253db9d024b
    Evilginx JA4=t13d191000_9dc949149365_e7c285222651
    Reverse SSH Shell JA4SSH=c76s76_c71s59_c0s70
    Windows 10 JA4T=64240_2-1-3-1-1-4_1460_8
    Epson Printer JA4TScan=28960_2-4-8-1-3_1460_3_1-4-8-16

    For more, see ja4plus-mapping.csv
    The mapping file is unlicensed and free to use. Feel free to do a pull request with any JA4+ data you find.

    Plugins

    Wireshark
    Zeek
    Arkime

    Binaries

    Recommended to have tshark version 4.0.6 or later for full functionality. See: https://pkgs.org/search/?q=tshark

    Download the latest JA4 binaries from: Releases.

    JA4+ on Ubuntu

    sudo apt install tshark
    ./ja4 [options] [pcap]

    JA4+ on Mac

    1) Install Wireshark https://www.wireshark.org/download.html which will install tshark 2) Add tshark to $PATH

    ln -s /Applications/Wireshark.app/Contents/MacOS/tshark /usr/local/bin/tshark
    ./ja4 [options] [pcap]

    JA4+ on Windows

    1) Install Wireshark for Windows from https://www.wireshark.org/download.html which will install tshark.exe
    tshark.exe is at the location where wireshark is installed, for example: C:\Program Files\Wireshark\thsark.exe
    2) Add the location of tshark to your "PATH" environment variable in Windows.
    (System properties > Environment Variables... > Edit Path)
    3) Open cmd, navigate the ja4 folder

    ja4 [options] [pcap]

    Database

    An official JA4+ database of fingerprints, associated applications and recommended detection logic is in the process of being built.

    In the meantime, see ja4plus-mapping.csv

    Feel free to do a pull request with any JA4+ data you find.

    JA4+ Details

    JA4+ is a set of simple yet powerful network fingerprints for multiple protocols that are both human and machine readable, facilitating improved threat-hunting and security analysis. If you are unfamiliar with network fingerprinting, I encourage you to read my blogs releasing JA3 here, JARM here, and this excellent blog by Fastly on the State of TLS Fingerprinting which outlines the history of the aforementioned along with their problems. JA4+ brings dedicated support, keeping the methods up-to-date as the industry changes.

    All JA4+ fingerprints have an a_b_c format, delimiting the different sections that make up the fingerprint. This allows for hunting and detection utilizing just ab or ac or c only. If one wanted to just do analysis on incoming cookies into their app, they would look at JA4H_c only. This new locality-preserving format facilitates deeper and richer analysis while remaining simple, easy to use, and allowing for extensibility.

    For example; GreyNoise is an internet listener that identifies internet scanners and is implementing JA4+ into their product. They have an actor who scans the internet with a constantly changing single TLS cipher. This generates a massive amount of completely different JA3 fingerprints but with JA4, only the b part of the JA4 fingerprint changes, parts a and c remain the same. As such, GreyNoise can track the actor by looking at the JA4_ac fingerprint (joining a+c, dropping b).

    Current methods and implementation details:
    | Full Name | Short Name | Description | |---|---|---| | JA4 | JA4 | TLS Client Fingerprinting
    | JA4Server | JA4S | TLS Server Response / Session Fingerprinting | JA4HTTP | JA4H | HTTP Client Fingerprinting | JA4Latency | JA4L | Latency Measurment / Light Distance | JA4X509 | JA4X | X509 TLS Certificate Fingerprinting | JA4SSH | JA4SSH | SSH Traffic Fingerprinting | JA4TCP | JA4T | TCP Client Fingerprinting | JA4TCPServer | JA4TS | TCP Server Response Fingerprinting | JA4TCPScan | JA4TScan | Active TCP Fingerprint Scanner

    The full name or short name can be used interchangeably. Additional JA4+ methods are in the works...

    To understand how to read JA4+ fingerprints, see Technical Details

    Licensing

    JA4: TLS Client Fingerprinting is open-source, BSD 3-Clause, same as JA3. FoxIO does not have patent claims and is not planning to pursue patent coverage for JA4 TLS Client Fingerprinting. This allows any company or tool currently utilizing JA3 to immediately upgrade to JA4 without delay.

    JA4S, JA4L, JA4H, JA4X, JA4SSH, JA4T, JA4TScan and all future additions, (collectively referred to as JA4+) are licensed under the FoxIO License 1.1. This license is permissive for most use cases, including for academic and internal business purposes, but is not permissive for monetization. If, for example, a company would like to use JA4+ internally to help secure their own company, that is permitted. If, for example, a vendor would like to sell JA4+ fingerprinting as part of their product offering, they would need to request an OEM license from us.

    All JA4+ methods are patent pending.
    JA4+ is a trademark of FoxIO

    JA4+ can and is being implemented into open source tools, see the License FAQ for details.

    This licensing allows us to provide JA4+ to the world in a way that is open and immediately usable, but also provides us with a way to fund continued support, research into new methods, and the development of the upcoming JA4 Database. We want everyone to have the ability to utilize JA4+ and are happy to work with vendors and open source projects to help make that happen.

    ja4plus-mapping.csv is not included in the above software licenses and is thereby a license-free file.

    Q&A

    Q: Why are you sorting the ciphers? Doesn't the ordering matter?
    A: It does but in our research we've found that applications and libraries choose a unique cipher list more than unique ordering. This also reduces the effectiveness of "cipher stunting," a tactic of randomizing cipher ordering to prevent JA3 detection.

    Q: Why are you sorting the extensions?
    A: Earlier in 2023, Google updated Chromium browsers to randomize their extension ordering. Much like cipher stunting, this was a tactic to prevent JA3 detection and "make the TLS ecosystem more robust to changes." Google was worried server implementers would assume the Chrome fingerprint would never change and end up building logic around it, which would cause issues whenever Google went to update Chrome.

    So I want to make this clear: JA4 fingerprints will change as application TLS libraries are updated, about once a year. Do not assume fingerprints will remain constant in an environment where applications are updated. In any case, sorting the extensions gets around this and adding in Signature Algorithms preserves uniqueness.

    Q: Doesn't TLS 1.3 make fingerprinting TLS clients harder?
    A: No, it makes it easier! Since TLS 1.3, clients have had a much larger set of extensions and even though TLS1.3 only supports a few ciphers, browsers and applications still support many more.

    JA4+ was created by:

    John Althouse, with feedback from:

    Josh Atkins
    Jeff Atkinson
    Joshua Alexander
    W.
    Joe Martin
    Ben Higgins
    Andrew Morris
    Chris Ueland
    Ben Schofield
    Matthias Vallentin
    Valeriy Vorotyntsev
    Timothy Noel
    Gary Lipsky
    And engineers working at GreyNoise, Hunt, Google, ExtraHop, F5, Driftnet and others.

    Contact John Althouse at john@foxio.io for licensing and questions.

    Copyright (c) 2024, FoxIO



    Above - Invisible Network Protocol Sniffer

    By: Zion3R


    Invisible protocol sniffer for finding vulnerabilities in the network. Designed for pentesters and security engineers.


    Above: Invisible network protocol sniffer
    Designed for pentesters and security engineers

    Author: Magama Bazarov, <caster@exploit.org>
    Pseudonym: Caster
    Version: 2.6
    Codename: Introvert

    Disclaimer

    All information contained in this repository is provided for educational and research purposes only. The author is not responsible for any illegal use of this tool.

    It is a specialized network security tool that helps both pentesters and security professionals.

    Mechanics

    Above is a invisible network sniffer for finding vulnerabilities in network equipment. It is based entirely on network traffic analysis, so it does not make any noise on the air. He's invisible. Completely based on the Scapy library.

    Above allows pentesters to automate the process of finding vulnerabilities in network hardware. Discovery protocols, dynamic routing, 802.1Q, ICS Protocols, FHRP, STP, LLMNR/NBT-NS, etc.

    Supported protocols

    Detects up to 27 protocols:

    MACSec (802.1X AE)
    EAPOL (Checking 802.1X versions)
    ARP (Passive ARP, Host Discovery)
    CDP (Cisco Discovery Protocol)
    DTP (Dynamic Trunking Protocol)
    LLDP (Link Layer Discovery Protocol)
    802.1Q Tags (VLAN)
    S7COMM (Siemens)
    OMRON
    TACACS+ (Terminal Access Controller Access Control System Plus)
    ModbusTCP
    STP (Spanning Tree Protocol)
    OSPF (Open Shortest Path First)
    EIGRP (Enhanced Interior Gateway Routing Protocol)
    BGP (Border Gateway Protocol)
    VRRP (Virtual Router Redundancy Protocol)
    HSRP (Host Standby Redundancy Protocol)
    GLBP (Gateway Load Balancing Protocol)
    IGMP (Internet Group Management Protocol)
    LLMNR (Link Local Multicast Name Resolution)
    NBT-NS (NetBIOS Name Service)
    MDNS (Multicast DNS)
    DHCP (Dynamic Host Configuration Protocol)
    DHCPv6 (Dynamic Host Configuration Protocol v6)
    ICMPv6 (Internet Control Message Protocol v6)
    SSDP (Simple Service Discovery Protocol)
    MNDP (MikroTik Neighbor Discovery Protocol)

    Operating Mechanism

    Above works in two modes:

    • Hot mode: Sniffing on your interface specifying a timer
    • Cold mode: Analyzing traffic dumps

    The tool is very simple in its operation and is driven by arguments:

    • Interface: Specifying the network interface on which sniffing will be performed
    • Timer: Time during which traffic analysis will be performed
    • Input: The tool takes an already prepared .pcap as input and looks for protocols in it
    • Output: Above will record the listened traffic to .pcap file, its name you specify yourself
    • Passive ARP: Detecting hosts in a segment using Passive ARP
    usage: above.py [-h] [--interface INTERFACE] [--timer TIMER] [--output OUTPUT] [--input INPUT] [--passive-arp]

    options:
    -h, --help show this help message and exit
    --interface INTERFACE
    Interface for traffic listening
    --timer TIMER Time in seconds to capture packets, if not set capture runs indefinitely
    --output OUTPUT File name where the traffic will be recorded
    --input INPUT File name of the traffic dump
    --passive-arp Passive ARP (Host Discovery)

    Information about protocols

    The information obtained will be useful not only to the pentester, but also to the security engineer, he will know what he needs to pay attention to.

    When Above detects a protocol, it outputs the necessary information to indicate the attack vector or security issue:

    • Impact: What kind of attack can be performed on this protocol;

    • Tools: What tool can be used to launch an attack;

    • Technical information: Required information for the pentester, sender MAC/IP addresses, FHRP group IDs, OSPF/EIGRP domains, etc.

    • Mitigation: Recommendations for fixing the security problems

    • Source/Destination Addresses: For protocols, Above displays information about the source and destination MAC addresses and IP addresses


    Installation

    Linux

    You can install Above directly from the Kali Linux repositories

    caster@kali:~$ sudo apt update && sudo apt install above

    Or...

    caster@kali:~$ sudo apt-get install python3-scapy python3-colorama python3-setuptools
    caster@kali:~$ git clone https://github.com/casterbyte/Above
    caster@kali:~$ cd Above/
    caster@kali:~/Above$ sudo python3 setup.py install

    macOS:

    # Install python3 first
    brew install python3
    # Then install required dependencies
    sudo pip3 install scapy colorama setuptools

    # Clone the repo
    git clone https://github.com/casterbyte/Above
    cd Above/
    sudo python3 setup.py install

    Don't forget to deactivate your firewall on macOS!

    Settings > Network > Firewall


    How to Use

    Hot mode

    Above requires root access for sniffing

    Above can be run with or without a timer:

    caster@kali:~$ sudo above --interface eth0 --timer 120

    To stop traffic sniffing, press CTRL + Π‘

    WARNING! Above is not designed to work with tunnel interfaces (L3) due to the use of filters for L2 protocols. Tool on tunneled L3 interfaces may not work properly.

    Example:

    caster@kali:~$ sudo above --interface eth0 --timer 120

    -----------------------------------------------------------------------------------------
    [+] Start sniffing...

    [*] After the protocol is detected - all necessary information about it will be displayed
    --------------------------------------------------
    [+] Detected SSDP Packet
    [*] Attack Impact: Potential for UPnP Device Exploitation
    [*] Tools: evil-ssdp
    [*] SSDP Source IP: 192.168.0.251
    [*] SSDP Source MAC: 02:10:de:64:f2:34
    [*] Mitigation: Ensure UPnP is disabled on all devices unless absolutely necessary, monitor UPnP traffic
    --------------------------------------------------
    [+] Detected MDNS Packet
    [*] Attack Impact: MDNS Spoofing, Credentials Interception
    [*] Tools: Responder
    [*] MDNS Spoofing works specifically against Windows machines
    [*] You cannot get NetNTLMv2-SSP from Apple devices
    [*] MDNS Speaker IP: fe80::183f:301c:27bd:543
    [*] MDNS Speaker MAC: 02:10:de:64:f2:34
    [*] Mitigation: Filter MDNS traffic. Be careful with MDNS filtering
    --------------------------------------------------

    If you need to record the sniffed traffic, use the --output argument

    caster@kali:~$ sudo above --interface eth0 --timer 120 --output above.pcap

    If you interrupt the tool with CTRL+C, the traffic is still written to the file

    Cold mode

    If you already have some recorded traffic, you can use the --input argument to look for potential security issues

    caster@kali:~$ above --input ospf-md5.cap

    Example:

    caster@kali:~$ sudo above --input ospf-md5.cap

    [+] Analyzing pcap file...

    --------------------------------------------------
    [+] Detected OSPF Packet
    [+] Attack Impact: Subnets Discovery, Blackhole, Evil Twin
    [*] Tools: Loki, Scapy, FRRouting
    [*] OSPF Area ID: 0.0.0.0
    [*] OSPF Neighbor IP: 10.0.0.1
    [*] OSPF Neighbor MAC: 00:0c:29:dd:4c:54
    [!] Authentication: MD5
    [*] Tools for bruteforce: Ettercap, John the Ripper
    [*] OSPF Key ID: 1
    [*] Mitigation: Enable passive interfaces, use authentication
    --------------------------------------------------
    [+] Detected OSPF Packet
    [+] Attack Impact: Subnets Discovery, Blackhole, Evil Twin
    [*] Tools: Loki, Scapy, FRRouting
    [*] OSPF Area ID: 0.0.0.0
    [*] OSPF Neighbor IP: 192.168.0.2
    [*] OSPF Neighbor MAC: 00:0c:29:43:7b:fb
    [!] Authentication: MD5
    [*] Tools for bruteforce: Ettercap, John the Ripper
    [*] OSPF Key ID: 1
    [*] Mitigation: Enable passive interfaces, use authentication

    Passive ARP

    The tool can detect hosts without noise in the air by processing ARP frames in passive mode

    caster@kali:~$ sudo above --interface eth0 --passive-arp --timer 10

    [+] Host discovery using Passive ARP

    --------------------------------------------------
    [+] Detected ARP Reply
    [*] ARP Reply for IP: 192.168.1.88
    [*] MAC Address: 00:00:0c:07:ac:c8
    --------------------------------------------------
    [+] Detected ARP Reply
    [*] ARP Reply for IP: 192.168.1.40
    [*] MAC Address: 00:0c:29:c5:82:81
    --------------------------------------------------

    Outro

    I wrote this tool because of the track "A View From Above (Remix)" by KOAN Sound. This track was everything to me when I was working on this sniffer.




    NetProbe - Network Probe

    By: Zion3R


    NetProbe is a tool you can use to scan for devices on your network. The program sends ARP requests to any IP address on your network and lists the IP addresses, MAC addresses, manufacturers, and device models of the responding devices.

    Features

    • Scan for devices on a specified IP address or subnet
    • Display the IP address, MAC address, manufacturer, and device model of discovered devices
    • Live tracking of devices (optional)
    • Save scan results to a file (optional)
    • Filter by manufacturer (e.g., 'Apple') (optional)
    • Filter by IP range (e.g., '192.168.1.0/24') (optional)
    • Scan rate in seconds (default: 5) (optional)

    Download

    You can download the program from the GitHub page.

    $ git clone https://github.com/HalilDeniz/NetProbe.git

    Installation

    To install the required libraries, run the following command:

    $ pip install -r requirements.txt

    Usage

    To run the program, use the following command:

    $ python3 netprobe.py [-h] -t  [...] -i  [...] [-l] [-o] [-m] [-r] [-s]
    • -h,--help: show this help message and exit
    • -t,--target: Target IP address or subnet (default: 192.168.1.0/24)
    • -i,--interface: Interface to use (default: None)
    • -l,--live: Enable live tracking of devices
    • -o,--output: Output file to save the results
    • -m,--manufacturer: Filter by manufacturer (e.g., 'Apple')
    • -r,--ip-range: Filter by IP range (e.g., '192.168.1.0/24')
    • -s,--scan-rate: Scan rate in seconds (default: 5)

    Example:

    $ python3 netprobe.py -t 192.168.1.0/24 -i eth0 -o results.txt -l

    Help Menu

    Scanner Tool options: -h, --help show this help message and exit -t [ ...], --target [ ...] Target IP address or subnet (default: 192.168.1.0/24) -i [ ...], --interface [ ...] Interface to use (default: None) -l, --live Enable live tracking of devices -o , --output Output file to save the results -m , --manufacturer Filter by manufacturer (e.g., 'Apple') -r , --ip-range Filter by IP range (e.g., '192.168.1.0/24') -s , --scan-rate Scan rate in seconds (default: 5) " dir="auto">
    $ python3 netprobe.py --help                      
    usage: netprobe.py [-h] -t [...] -i [...] [-l] [-o] [-m] [-r] [-s]

    NetProbe: Network Scanner Tool

    options:
    -h, --help show this help message and exit
    -t [ ...], --target [ ...]
    Target IP address or subnet (default: 192.168.1.0/24)
    -i [ ...], --interface [ ...]
    Interface to use (default: None)
    -l, --live Enable live tracking of devices
    -o , --output Output file to save the results
    -m , --manufacturer Filter by manufacturer (e.g., 'Apple')
    -r , --ip-range Filter by IP range (e.g., '192.168.1.0/24')
    -s , --scan-rate Scan rate in seconds (default: 5)

    Default Scan

    $ python3 netprobe.py 

    Live Tracking

    You can enable live tracking of devices on your network by using the -l or --live flag. This will continuously update the device list every 5 seconds.

    $ python3 netprobe.py -t 192.168.1.0/24 -i eth0 -l

    Save Results

    You can save the scan results to a file by using the -o or --output flag followed by the desired output file name.

    $ python3 netprobe.py -t 192.168.1.0/24 -i eth0 -l -o results.txt
    ┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
    ┃ IP Address   ┃ MAC Address       ┃ Packet Size ┃ Manufacturer                 ┃
    ┑━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
    β”‚ 192.168.1.1  β”‚ **:6e:**:97:**:28 β”‚ 102         β”‚ ASUSTek COMPUTER INC.        β”‚
    β”‚ 192.168.1.3  β”‚ 00:**:22:**:12:** β”‚ 102         β”‚ InPro Comm                   β”‚
    β”‚ 192.168.1.2  β”‚ **:32:**:bf:**:00 β”‚ 102         β”‚ Xiaomi Communications Co Ltd β”‚
    β”‚ 192.168.1.98 β”‚ d4:**:64:**:5c:** β”‚ 102         β”‚ ASUSTek COMPUTER INC.        β”‚
    β”‚ 192.168.1.25 β”‚ **:49:**:00:**:38 β”‚ 102         β”‚ Unknown                      β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    

    Contact

    If you have any questions, suggestions, or feedback about the program, please feel free to reach out to me through any of the following platforms:

    License

    This program is released under the MIT LICENSE. See LICENSE for more information.



    TrafficWatch - TrafficWatch, A Packet Sniffer Tool, Allows You To Monitor And Analyze Network Traffic From PCAP Files

    By: Zion3R


    TrafficWatch, a packet sniffer tool, allows you to monitor and analyze network traffic from PCAP files. It provides insights into various network protocols and can help with network troubleshooting, security analysis, and more.

    • Protocol-specific packet analysis for ARP, ICMP, TCP, UDP, DNS, DHCP, HTTP, SNMP, LLMNR, and NetBIOS.
    • Packet filtering based on protocol, source IP, destination IP, source port, destination port, and more.
    • Summary statistics on captured packets.
    • Interactive mode for in-depth packet inspection.
    • Timestamps for each captured packet.
    • User-friendly colored output for improved readability.
    • Python 3.x
    • scapy
    • argparse
    • pyshark
    • colorama

    1. Clone the repository:

      git clone https://github.com/HalilDeniz/TrafficWatch.git
    2. Navigate to the project directory:

      cd TrafficWatch
    3. Install the required dependencies:

      pip install -r requirements.txt

    python3 trafficwatch.py --help
    usage: trafficwatch.py [-h] -f FILE [-p {ARP,ICMP,TCP,UDP,DNS,DHCP,HTTP,SNMP,LLMNR,NetBIOS}] [-c COUNT]

    Packet Sniffer Tool

    options:
    -h, --help show this help message and exit
    -f FILE, --file FILE Path to the .pcap file to analyze
    -p {ARP,ICMP,TCP,UDP,DNS,DHCP,HTTP,SNMP,LLMNR,NetBIOS}, --protocol {ARP,ICMP,TCP,UDP,DNS,DHCP,HTTP,SNMP,LLMNR,NetBIOS}
    Filter by specific protocol
    -c COUNT, --count COUNT
    Number of packets to display

    To analyze packets from a PCAP file, use the following command:

    python trafficwatch.py -f path/to/your.pcap

    To specify a protocol filter (e.g., HTTP) and limit the number of displayed packets (e.g., 10), use:

    python trafficwatch.py -f path/to/your.pcap -p HTTP -c 10

    • -f or --file: Path to the PCAP file for analysis.
    • -p or --protocol: Filter packets by protocol (ARP, ICMP, TCP, UDP, DNS, DHCP, HTTP, SNMP, LLMNR, NetBIOS).
    • -c or --count: Limit the number of displayed packets.

    Contributions are welcome! If you want to contribute to TrafficWatch, please follow our contribution guidelines.

    If you have any questions, comments, or suggestions about Dosinator, please feel free to contact me:

    This project is licensed under the MIT License.

    Thank you for considering supporting me! Your support enables me to dedicate more time and effort to creating useful tools like DNSWatch and developing new projects. By contributing, you're not only helping me improve existing tools but also inspiring new ideas and innovations. Your support plays a vital role in the growth of this project and future endeavors. Together, let's continue building and learning. Thank you!"Β 



    DNSWatch - DNS Traffic Sniffer and Analyzer

    By: Zion3R


    DNSWatch is a Python-based tool that allows you to sniff and analyze DNS (Domain Name System) traffic on your network. It listens to DNS requests and responses and provides insights into the DNS activity.Β 

    Features

    • Sniff and analyze DNS requests and responses.
    • Display DNS requests with their corresponding source and destination IP addresses.
    • Optional verbose mode for detailed packet inspection.
    • Save the results to a specified output file.
    • Filter DNS traffic by specifying a target IP address.
    • Save DNS requests in a database for further analysis(optional)
    • Analyze DNS types (optional).
    • Support for DNS over HTTPS (DoH) (optional).

    Requirements

    • Python 3.7+
    • scapy 2.4.5 or higher
    • colorama 0.4.4 or higher

    Installation

    1. Clone this repository:
    git clone https://github.com/HalilDeniz/DNSWatch.git
    1. Install the required dependencies:
    pip install -r requirements.txt

    Usage

    python dnswatch.py -i <interface> [-v] [-o <output_file>] [-k <target_ip>] [--analyze-dns-types] [--doh]
    • -i, --interface: Specify the network interface (e.g., eth0).
    • -v, --verbose: Use this flag for more verbose output.
    • -o, --output: Specify the filename to save results.
    • -t, --target-ip: Specify a specific target IP address to monitor.
    • -adt, --analyze-dns-types: Analyze DNS types.
    • --doh: Use DNS over HTTPS (DoH) for resolving DNS requests.
    • -fd, --target-domains: Filter DNS requests by specified domains.
    • -d, --database: Enable database storage for DNS requests.

    Press Ctrl+C to stop the sniffing process.

    Examples

    • Sniff DNS traffic on interface "eth0":
    python dnswatch.py -i eth0
    • Sniff DNS traffic on interface "eth0" and save the results to a file:
    python dnswatch.py -i eth0 -o dns_results.txt
    • Sniff DNS traffic on interface "eth0" and filter requests/responses involving a specific target IP:
    python dnswatch.py -i eth0 -k 192.168.1.100
    • Sniff DNS traffic on interface "eth0" and enable DNS type analysis:
    python dnswatch.py -i eth0 --analyze-dns-types
    • Sniff DNS traffic on interface "eth0" using DNS over HTTPS (DoH):
    python dnswatch.py -i eth0 --doh
    • Sniff DNS traffic on interface "wlan0" and Enable database storage
    python3 dnswatch.py -i wlan0 --database

    License

    DNSWatch is licensed under the MIT License. See the LICENSE file for details.

    Disclaimer

    This tool is intended for educational and testing purposes only. It should not be used for any malicious activities.

    Contact



    Bryobio - NETWORK Pcap File Analysis

    By: Zion3R


    NETWORK Pcap File Analysis, It was developed to speed up the processes of SOC Analysts during analysis


    Tested

    OK Debian
    OK Ubuntu

    Requirements

    $ pip install pyshark
    $ pip install dpkt

    $ Wireshark
    $ Tshark
    $ Mergecap
    $ Ngrep

    π—œπ—‘π—¦π—§π—”π—Ÿπ—Ÿπ—”π—§π—œπ—’π—‘ π—œπ—‘π—¦π—§π—₯π—¨π—–π—§π—œπ—’π—‘π—¦

    $ https://github.com/emrekybs/Bryobio.git
    $ cd Bryobio
    $ chmod +x bryobio.py

    $ python3 bryobio.py



    ❌