Société de Sécurité Informatique - Audit Firewall Appliances
La sécurité informatique - La sécurité des informations

aquatone, des outils pour faire de la reconnaissance des noms de domaines


AQUATONE en bref


AQUATONE est un ensemble d'outils permettant d'effectuer des reconnaissances sur des noms de domaine. Il peut découvrir des sous-domaines sur un domaine donné en utilisant des sources ouvertes ainsi que l’approche par force brute en utilisant un dictionnaire de sous-domaines les plus courants. Après la découverte du sous-domaine, AQUATONE peut alors analyser les hôtes pour les ports Web communs et les en-têtes HTTP, les corps HTML et les captures d'écran peuvent être rassemblés et consolidés dans un rapport pour une analyse facile d'une attaque de surface.

Installation


Les dépendances


AQUATONE dépend de Node.js et du gestionnaire de paquets NPM pour ses capacités de capture de page Web. Suivez ce guide pour les instructions d'installation.
Vous aurez également besoin d'une version plus récente de Ruby installée. Si vous envisagez d'utiliser AQUATONE sous Kali Linux, vous êtes déjà configuré avec cela. Sinon, il est recommandé d'installer Ruby avec RVM.
Enfin, l'outil lui-même peut être installé avec la commande suivante dans un terminal :
$ gem install aquatone

IMPORTANT: les capacités de capture d'écran d'AQUATONE dépendent de son exécution sur un système doté d'un environnement de bureau graphique. Il est fortement recommandé d'installer et d'exécuter AQUATONE dans une machine virtuelle Kali_linux.
Je ne fournirai pas de support ou de correction de bogue pour d'autres systèmes que Kali Linux.

Utilisation


Découverte


La première étape d'une évaluation AQUATONE est l'étape de découverte où des sous-domaines sont découverts sur le domaine cible à l'aide de sources ouvertes, de services et de l'approche par force brute du dictionnaire la plus courante:
$ aquatone-discover --domain example.com

aquatone-discover va trouver les serveurs de noms de la cible et mélanger les recherches DNS entre eux. Si une recherche échoue sur les serveurs de noms du domaine cible, aquatone-discover utilisera les serveurs DNS publics de Google pour optimiser la découverte. Les serveurs DNS de secours peuvent être modifiés avec l'option --fallback-nameservers :
$ aquatone-discover --domain example.com --fallback-nameservers 87.98.175.85,5.9.49.12

Tuning
aquatone-discover utilisera 5 threads par défaut pour effectuer des recherches DNS simultanées. Ceci fournit des performances raisonnables mais peut être ajusté pour être plus ou moins agressif avec l'option --threads :
$ aquatone-discover --domain example.com --threads 25

Les systèmes de détection d'intrusion peuvent potentiellement attaquer un serveur DNS avec des erreurs de recherche. Si cela vous préoccupe, vous pouvez rendre plus discret Aquatone-Discover avec les options --sleep et --jitter. --sleep accepte un nombre de secondes entre chaque recherche DNS pendant que --jitter accepte un pourcentage de la valeur --sleep pour ajouter ou soustraire aléatoirement à l'intervalle de veille ou le supprimer afin de rompre le cycle de sommeil et de le rendre moins prévisible.
$ aquatone-discover --domain example.com --sleep 5 --jitter 30

Veuillez noter que la définition de l'option --sleep force le nombre de threads à un. L'option --jitter ne sera prise en compte que si l'option --sleep a également été définie.
Clés d'API
Certains collecteurs passifs nécessiteront des clés API ou des identifiants similaires pour fonctionner. La définition de ces valeurs peut être effectuée avec l'option --set-key:
$ aquatone-discover --set-key shodan o1hyw8pv59vSVjrZU3Qaz6ZQqgM91ihQ

Toutes les clés seront enregistrées dans~/aquatone/.keys.yml.
Résultats
Lorsque aquatone-discover est terminé, il va créer un fichier hosts.txt dans le dossier ~/aquatone/<domain>, donc pour une analyse de example.com il serait situé à ~/aquatone/example.com/hosts.txt. Le format sera une liste de noms d'hôte séparés par des virgules et leur adresse IP, par exemple:
example.com,93.184.216.34
www.example.com,93.184.216.34
secret.example.com,93.184.216.36
cdn.example.com,192.0.2.42
...

Outre le fichier hosts.txt, il génèrera également un fichier hosts.json contenant les mêmes informations mais au format JSON. Ce format peut être préférable si vous souhaitez utiliser les informations dans des scripts et des outils personnalisés. hosts.json sera également utilisé par les outils aquatone-scan et aquatone-collecte.
Voir aquatone-discover --help pour plus d'options.

Scanner


AQUATONE énumère les hôtes découverts pour les ports TCP ouverts couramment utilisés pour les services Web:
$ aquatone-scan --domain example.com

L'option --domain recherchera hosts.json dans le répertoire d'évaluation AQUATONE du domaine. Dans l'exemple ci-dessus, elle recherchera ~ / aquatone / example.com / hosts.json. Ce fichier devrait être présent si aquatone-discover --domain example.com a déjà été exécuté.
Ports
Par défaut, aquatone-scan analyse les ports TCP suivants: 80, 443, 8000, 8080 et 8443. Ces ports sont très courants pour les services Web et offrent une couverture raisonnable. Si vous souhaitez spécifier votre propre liste de ports, vous pouvez utiliser l’option --ports :
$ aquatone-scan --domain example.com --ports 80,443,3000,8080

Au lieu d'une liste de ports séparés par des virgules, vous pouvez également spécifier l'un des alias de liste intégrés:
Exemple:
$ aquatone-scan --domain example.com --ports large

Réglage
Comme l'aquatone-discovery, vous pouvez rendre l'analyse plus ou moins agressive avec l'option --threads qui accepte un certain nombre de threads pour les analyses de port simultanées. Le nombre de threads par défaut est 5.
$ aquatone-scan --domain example.com --threads 25

Comme aquatone-scan effectue un balayage des ports, il est évident qu’il peut être capté par des systèmes de détection d’intrusion. Bien qu'il tente de réduire le risque de détection en répartissant les hôtes et les ports de manière aléatoire, vous pouvez davantage accorder la furtivité aux options --sleep et --jitter, qui fonctionnent comme les options portant le même nom pour aquatone-discover. N'oubliez pas que la définition de l'option --sleep force le nombre de threads à un.
Résultats
Lorsque aquatone-scan est terminé, il créera un fichier urls.txt dans le répertoire ~/aquatone/<domain>, donc pour une analyse de example.com il serait situé à ~/aquatone/example.com/urls.txt. Le format sera une liste d’URL, par exemple:
http://example.com/
https://example.com/
http://www.example.com/
https://www.example.com/
http://secret.example.com:8001/
https://secret.example.com:8443/
http://cdn.example.com/
https://cdn.example.com/
...

Ce fichier peut être chargé dans d'autres outils tels que EyeWitness.
aquatone-scan générera également un fichier open_ports.txt, qui est une liste d'hôtes séparés par des virgules et leurs ports ouverts, par exemple:
93.184.216.34,80,443
93.184.216.34,80
93.184.216.36,80,443,8443
192.0.2.42,80,8080
...

Voir aquatone-scan --help pour plus d'options.

Rassemblement


La dernière étape est la partie de rassemblement, où les résultats des étapes de découverte et d’analyse sont utilisés pour interroger les services Web découverts afin de récupérer et de sauvegarder les en-têtes de réponse HTTP et les corps HTML, ainsi que les captures d'écran des pages Web. comme avec un navigateur Web, pour faciliter les analyses. La capture d'écran se fait avec la bibliothèque Nightmare.js Node.js. Cette bibliothèque sera installée automatiquement si elle n'est pas présente dans le système.
$ aquatone-gather --domain example.com

aquatone-gather cherchera hosts.json et open_ports.txt dans le répertoire d'AQUATONE du domaine donné et demandera et capturera chaque adresse IP de chaque nom de domaine pour une couverture maximale.
Réglages
Comme pour aquatone-discover et aquatone-scan, vous pouvez rendre le rassemblement plus ou moins agressif avec l'option --threads qui accepte un certain nombre de threads pour les requêtes simultanées. Le nombre de threads par défaut est 5.
$ aquatone-gather --domain example.com --threads 25

Aquatone-collecte interagit avec les services Web et peut être capté par des systèmes de détection d'intrusion. Bien qu'il tente de réduire le risque de détection en répartissant les hôtes et les ports de manière aléatoire, vous pouvez davantage accorder la furtivité aux options --sleep et --jitter, qui fonctionnent comme les options portant le même nom pour aquatone-discover. N'oubliez pas que la définition de l'option --sleep force le nombre de threads à un.
Résultats
Lorsque aquatone-gather est terminé, il aura créé plusieurs répertoires dans le répertoire d'évaluation AQUATONE du domaine:

Reprise de sous-domaine (Subdomain Takeover)


La prise en charge de sous-domaines est un problème de sécurité très répandu et potentiellement critique qui se produit généralement lorsqu'une organisation attribue un sous-domaine à un fournisseur de services tiers, puis interrompt son utilisation, mais oublie de supprimer la configuration DNS. Cela laisse le sous-domaine vulnérable à une reprise complète par des attaquants en s’inscrivant sur le même fournisseur de services et en revendiquant le sous-domaine en suspens.
aquatone-takeover peut être utilisé pour vérifier les hôtes découverts par aquatone-discover pour les vulnérabilités potentielles de prise de contrôle de domaine:
$ aquatone-takeover --domain example.com

aquatone-takeover peut détecter des situations de prise de contrôle de sous-domaines potentiels de la part de 25 fournisseurs de services différents, y compris GitHub Pages, Heroku, Amazon S3, Desk et WPEngine.
Résultats
aquatone-takeover créera un fichier takeovers.json dans le répertoire d'évaluation du domaine qui contiendra des informations au format JSON sur toutes les vulnérabilités potentielles de prise de contrôle de sous-domaine:
{
"shop.example.com": {
"service": "Shopify",
"service_website": "https://www.shopify.com/",
"description": "Ecommerce platform",
"resource": {
"type": "CNAME",
"value": "shops.myshopify.com"
}
},
"help.example.com": {
"service": "Desk",
"service_website": "https://www.desk.com/",
"description": "Customer service and helpdesk ticket software",
"resource": {
"type": "CNAME",
"value": "example.desk.com"
}
},
...
}

Contribution


Les rapports de bogues et les demandes de pull sont les bienvenus sur GitHub sur https://github.com/michenriksen/aquatone.

Licence


AQUATONE est disponible en open source selon les termes de la licence MIT.

Avertissement


L'utilisation de ce programme ne peut se faire que dans le cadre légal d'un audit de vulnérabilités, basé sur le consentement mutuel. Il est de la responsabilité de l'utilisateur final de ne pas utiliser ce programme dans un autre cadre. SecuriteInfo.com n'assume aucune responsabilité et n'est pas responsable de toute mauvaise utilisation ou de tout dommage causé par ce programme.

Téléchargement



Partager cet article

Envoyer cet article par Email ! Imprimer cet article ! Exporter cet article en PDF ! Facebook Twitter Google Bookmarks

SecuriteInfo.com est une entreprise française de sécurité informatique. Nous proposons différentes solutions matérielles et prestations de services permettant de sécuriser les données des Systèmes d'Information d'entreprises ou de collectivités. Notre périmètre d'intervention couvre l'intégralité de votre système d'information : Sécurité périmétrique, réseaux, accès distants, VPN, solutions anti-spam et anti-malwares, différents audits réseaux et systèmes, vérification de la politique de sécurité, hébergement sécurisé ...
Facebook SecuriteInfo.com
Twitter de SecuriteInfo.com
Github de SecuriteInfo.com
Calculs scientifiques distribués contre les maladies, équipe SecuriteInfo.com
Profil Virustotal de SecuriteInfo.com
© 2004-2019 - Tous droits réservés - SecuriteInfo.com