BurpSuite:Sequencer

From aldeid
Jump to navigation Jump to search

Burp Sequencer

Qu'est-ce que Burp Sequencer?

Burp Sequencer est un module permettant de tester la fiabilité d'éléments générés aléatoirement (cookies de session par exemple). Le mode "live capture" permet une analyse pendant la navigation alors que le mode "manual load" permet une analyse a posteriori de composants de pages déjà capturées par BurpSuite. L'onglet option permet de paramétrer les différents paramètres de l'analyse.

Tests effectués par Burp Sequencer

Les tests effectués

Deux familles de tests sont effectués :

  • les tests sur les caractères
  • les tests sur les bits : Chaque caractère est transcrit sous forme de bit (série de 1 et de 0)
Les tests sur les caractères

  • Analyse de comptage des caractères : analyse de la distribution des caractères à chaque position.
  • Analyse de transition des caractères : analyse la probabilité qu'un caractère soit suivi par un autre entre deux tokens, à chaque position
Les tests sur les bits

  • FIPS monobit test : l'équilibrage de distribution des 0 et des 1 est analysée à chaque position au sein du bit afin de déterminer l'entropie du token
  • FIPS poker test : effectue un découpage de segments de 4 bits continus et représente la distribution sur une courbe du khi2 afin de déteminer l'entropie du token.

  • FIPS runs tests : comptabilise le nombre de runs (suites de 0 successifs, et suites de 1 successifs) afin d'en étudier la distribution par longueur de run.
  • FIPS long runs test : identifie l'entropie du token en fonction de la longueur du plus long "run" comparée à l'échantillon.
  • spectral tests : effectue une représentation dans un espace multi-dimensionnel afin de tester l'entropie du token. Si le token est généré aléatoirement, la distribution doit être uniforme.
  • correlation tests : Ce test étudie les corrélations entre bits.
  • compression tests : effectue une compression ZLIB des séquences de bits à chaque position afin d'étudier la probabilité d'un génération aléatoire. Plus la compression est importante, et moins la séquence testée est susceptible d'être générée aléatoirement.
Note
FIPS (Federal Information Processing Standards) correspond à une norme de traitement de l'information validée par le NSIT (National Institute of Standards and Technology).
Entropie (stat.) : Grandeur caractérisant le désordre d'un système.

Interprétation des résultats

Seuil de signification

Les résultats doivent être comparés à un seuil de signification ("significance level"). Le seuil de signification est le niveau au-dessous duquel les erreurs ou risques d’erreurs relevés ne sont pas de nature à remettre en cause l'hypothèse testée (c'est à dire le postulat de départ : le token est généré aléatoirement). En d'autres termes, le seuil de signification correspond au risque d'erreur accepté. Plus celui-ci est bas, et plus les résultats obtenus sont fiables. Inversement, plus celui-ci est élevé, plus le risque d'erreur est important.

Fiabilité des résultats obtenus

Afin de maximiser la fiabilité des résultats obtenus, l'échantillon doit idéalement être composé de 20000 tokens. Néanmoins, il est possible d'analyser les résultats dès obtention de 100 tokens, afin d'avoir un bref apercu. Par ailleurs, il est possible d'obtenir de mauvais résultats alors que le token est généré aléatoirement (faux négatifs) et a contrario, d'obtenir de bons résultats alors que l'échantillon est généré en répondant à une logique non détectée avec les tests du "sequencer" (faux positifs).

Rapport d'analyse

Le rapport d'analyse produit des graphique par onglets. Le premier rapport est un résumé (summary) de l'analyse. Il note de manière globale le degré de fiabilité des tokens (excellent, good, poor, extremely poor, ...). Par ailleurs, un graphique affiche également le degré d'entropie des tokens analysés. Les figures suivantes montrent deux rapports aux résultats opposés : l'un mauvais, l'autre excellent.

Comment utiliser Burp Sequencer?

Les modes

  • live capture : permet une analyse sur base d'une page déjà visitée et présente dans l'historique du proxy
  • manual load : permet l'analyse d'un fichier de tokens

Live capture

token location

La première étape consiste à envoyer une requête au sequencer. Pour ce faire, le plus simple est de se rendre à l'onglet proxy > history, de sélectionner une requête possédant une information dans la colonne cookies, puis de sélectionner l'option "send to sequencer" à partir du menu contextuel (clic droit).

Se rendre ensuite sur l'onglet "sequencer" puis choisir le mode "live capture" si l'onglet n'est pas déjà sélectionné. Dans la requête, sélectionnez la chaîne à analyser, comme le montre la capture ci-contre. Cliquez ensuite sur "start capture".

Note
Les autres modes de sélection (cookie, form field) permettent une reconnaissance des chaînes, mais la sélection manuelle reste la plus efficace.
capture options

Les options du mode "live capture" sont les suivantes :

  • threads : spécifie le nombre de threads (traitements parallèles) afin d'augmenter la vitesse de récupération des tokens
  • throttle (millis) : spécifie un temps à observer entre deux récupérations de tokens
  • ignore token whose length deviates by X characters : rejet des tokens dont la longueur dévie de plus de X caractères par rapport à celle sélectionnée initialement.

Manual load

Ce mode permet le chargement d'un fichier de token à des fins d'analyse. Les boutons sont les suivants :

  • load : permet de charger un fichier (ouvre une fenêtre afin de rechercher le fichier)
  • paste : permet de coller une chaîne précédemment copiée dans le presse-papier
  • clear : permet de purger la liste des tokens chargés
  • analyse now : lance l'analyse

Options

  • tokens : ces options permettent de spécifier le comportement du sequencer dans le cas de tokens à longueur variable
    • pad short tokens at start/end
    • pad with (single character or 2-digit ASCII hex code)
    • base64 decode before analysing
  • character-level analysis : permet de sélectionner les rapports à afficher lors d'une analyse
  • bit-level analysis : permet de sélectionner les rapports à afficher lors d'une analyse