Coder Social home page Coder Social logo

chillimeat / iot_tls_fingerprinter Goto Github PK

View Code? Open in Web Editor NEW

This project forked from simonbhh/iot_tls_fingerprinter

0.0 1.0 0.0 17 KB

The aim of this project is to fingerprint TLSClientHello messages from IoT devices to their servers in the Cloud as well as analysing more in depth the the TLS Handshake.

Python 100.00%

iot_tls_fingerprinter's Introduction

TLS Librairies Fingerprinter

Description

The aim of this project is to fingerprint TLSClientHello messages from IoT devices to their servers in the Cloud as well as analysing more in depth the the TLS Handshake.

PyShark is used in this project in order to extract the relevant packets from wireshark capture files.

The project only runs with Python 3.

How to use

On Linux platforms

First of all the required librairies need to be installed :

pip install -r requirements.txt

Then simply run the following command by specifying the path of the directory containting the pcap files and which analysis method you want to use :

./run.py [pcap_directory] [analysis_method]

To check the different option available you can run :

./run.py -h

How it works

The parser

Here's the different steps of how the program works :

  • Iterating through the pcap files in the specified directory
  • Iterating through the packets present in the pcap files in order to find client_hello and server_hello messages
  • Parsing those packets to store the important TLS fields in the corresponding TLS class, either TLSClientHello, TLSServerHello or TLSCertificate

Analysis methods

Basic fingerprinting methods

Once we created our objects containting all the fields we need, we can perform fingerprinting methods on those. To do so, we take the fields we want and we hash them altogether using the SHA-1 algorithm. Different fingerprint methods using different fields are implemented in the TLSClientHello class :

  • basic_sign : version, cipher suites, compression methods, extentions and sign algorithms
  • csuites_sign : version, cipher suites
  • comp_sign : version, compression methods
  • comp_ext_sign : version, compression methods, extentions, ec point format
  • signalgs_sign : version, sign algorithms
  • comp_ext_signalgs_sign : version, compression methods, extentions, sign algorithms, ec point format
  • random_sign : random
  • random_bytes_sign : random bytes

Advanced fingerprinting methods

Two more advanced fingerprinting methods have been implemented as well :

  • combinations : performs fingerprint with all combinations of the list of all the attributes of the TLSClientHello class
  • libs_compare : compares all the fingerprints of all combinations of the fields like the combinations method right above but by comparing devices to ssl libraries only, it produces a heatmap of the result

Other methods

Other methods have been implemented to analyze more in depth the TLS Handshake :

  • csuites_check : check for outdated advertised cipher suites in each trace
  • cert_check : check for the issuer sequence of each trace, also perform a nmap command on each of them to get more information (unable to recover any info for devices which connect to a server with a port different than 443 usually)
  • version_check : check for the version of the TLS protocol used

iot_tls_fingerprinter's People

Contributors

simonbhh avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.