SensePost Crowbar

From aldeid
Jump to navigation Jump to search

Crowbar

Description

Crowbar est développé par SensePost. C'est un outil qui permet de brute forcer des applications Web génériques, c'est à dire :

  • Cracker les mots de passe faibles (weak passwords)
  • Enumérer des identifiants de connexion (certaines applications renvoient un message différent lorsque l'identifiant est bon mais le mot de passe est erroné)
  • Décrypter des cookies par brute force
Warning
Crowbar n'est compatible qu'avec Windows, et vous devrez installer .Net Framework.

Installation

Crowbar est disponible à l'adresse suivante : https://www.sensepost.com/restricted/crowbar094-installer.zip (Enregistrement préalable requis)

Utilisation

Description de l'interface

[1] Requête envoyée à l'application attaquée lors d'une tentative d'authentification


[2] Requête de réponse. Ce cadre est mis à jour manuellement en cliquant sur le bouton "Base response" du cadre [6] et est automatiquement raffraîchi lors du lancement d'une attaque.


[3] Liste des combinaisons testées. En cliquant avec le bouton droit de la souris, il est possible d'appliquer des filtres ou de consulter le détail de la réponse.


[4] Spécifications techniques du premier paramètre. Si ce paramètre est numérique et que l'on souhaite tester toutes les valeurs comprises dans un intervalle, il est possible d'utiliser l'option "Numeric". Dans les autres cas, les valeurs à tester doivent être stockées dans un fichier dictionnaire contenant les entrées sur des lignes séparées.


[5] Spécifications techniques du deuxième paramètre.


[6] Actions

  • Start : démarre l'attaque
  • Stop : stoppe une attaque en cours
  • Pause : met une attaque en cours en pause
  • Base response : Affiche la requête de réponse dans le cadre [2]
  • threads : nombre de threads simultannés pour l'attaque

[7] Target

  • SSL : spécifie que l'attaque porte sur le protocole HTTPS (port 443 par défaut)
  • Target : IP ou nom de la machine attaquée
  • Port : Port sur lequel porte l'attaque
  • Time out : latence (exprimée en millisecondes) avant d'abandonner l'éssai en cours
  • Retry : nombre maximum d'essais avant d'abandonner la combinaison en cours

[8] Fuzzy Logic Trigger

  • Low : borne inférieure du filtre de l'index
  • High : borne supérieure du filtre de l'index
  • Type
    • = : n'affiche que les combinaisons pour lesquelles l'index est égal à la valeur spécifiée dans le champ "Low"
    • != : n'affiche que les combinaisons pour lesquelles l'index est différent de la valeur spécifiée dans le champ "Low"
    • All : pas de filtre
    • <> : n'affiche que les combinaisons pour lesquelles l'index est compris entre les valeurs spécifiées dans les champs "Low" et "High"
    • >< : n'affiche que les combinaisons pour lesquelles l'index est en dehors de la plage Low-High.
  • Ignore FLT (Fuzzy Logic Trigger) : ne tient pas compte des réglages effectués dans cette section
  • Recalc : raffraichit le cadre [3] en fonction des filtres
  • Export : Exporte au format texte la liste des combinaisons filtrées

[9] Content extraction

  • Start token : masque de début de chaîne pour l'exploitation des données
  • End token : masque de fin de chaîne pour l'exploitation des données

[10] Progress : affichage du nombre total de requêtes pour terminer l'attaque + barre de progression.

Exemple d'utilisation : Brute force par dictionnaire sur un formulaire d'authentification

Soit le programme simple en PHP suivant :

<?php
if(isset($_POST["l"]) && isset($_POST["p"])) {
  if($_POST["l"] == "admin" && $_POST["p"] == "adventure") {
    header("Location: success.php");
  } else {
    echo("Invalid credentials");
  }
}
?>
<html>
<body>
  <form method="post" action="index.php">
    <div style="float:left">Username: </div><div><input type="text" name="l" /></div>
    <div style="float:left">Password: </div><div><input type="password" name="p" /></div>
    <input type="submit" />
  </form>
</body>
</html>

Ce programme affiche un formulaire d'authentification. Si le couple login/mot de passe est égal à admin/adventure, une redirection à la page success.php est effectuée. Dans le cas contraire, le message "Invalid credentials" est affiché et l'accès est refusé.

Crowbar peut être utilisé pour brute-forcer l'accès sur base de dictionnaire. Pour les besoins de l'exercice, nous avons constitué le dictionnaire suivant (fichier dictionnaire.txt) :

accent
admin
adventure
asterix
beta
bolivia
bernard
champignon
criterium
danser
elephant
fabien
glouton
obelix
pacman
pass
password
La première étape est d'analyser (avec WebScarab par exemple) la requête renvoyée lors d'une saisie invalide de login/mot de passe
Copier ce contenu puis collez-le dans la fenêtre en haut à gauche de Crowbar :
Paramétrez ensuite la fenêtre "Target" afin de préciser l'adresse de l'hôte attaqué ainsi que le port :
En cliquant sur le bouton "Base response" de la section "Actions", un retour du site attaqué apparaît dans la fenêtre de gauche
Il est ensuite nécessaire de préciser à Crowbar où se situent les paramètres (login et mot de passe). Pour ce faire, remplacez les chaînes "test" utilisées pour le login et le mot de passe respectivement par ##1## et ##2##.
Cliquez sur "Start" pour lancer l'attaque. La capture suivante montre Crowbar en action. Comme on peut le voir, des lignes au format suivant apparaissent :
Index_de_comparaison:paramètre_1:paramètre_2:iteration

L'une d'entre elle se distingue des autres, elle correspond à la bonne combinaison