Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
cornershot — Amplifier la visibilité réseau depuis plusieurs POV d'autres hôtes. | Kitploit
Outils/GitHubGitHub/zeronetworks/cornershot
ReconnaissanceAnalyse des VulnérabilitésCollecte d'InformationsSécurité RéseauTests d'Intrusion
GitHubzeronetworks/cornershot

cornershot

Amplifier la visibilité réseau depuis plusieurs POV d'autres hôtes.

Voir le dépôt
3114916il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

GitHub release (latest SemVer) GitHub all releases

Qu'est-ce que CornerShot

En temps de guerre, CornerShot est une arme qui permet à un soldat de regarder au-delà d'un coin (et éventuellement de tirer) sans risquer de s'exposer. De la même manière, le package CornerShot permet d'examiner l'accès réseau d'un hôte distant sans avoir besoin de privilèges spéciaux sur cet hôte.

En utilisant CornerShot, une source, ayant un accès réseau à un porteur (carrier), peut déterminer s'il existe un accès réseau entre le porteur et la cible pour un port spécifique p.

Par exemple, supposons qu'une équipe rouge tente de se propager d'un hôte source A "compromis" vers un hôte cible X, pour lequel l'hôte A n'a pas d'accès. S'ils se propagent via l'hôte B, ils découvriront alors seulement qu'il n'y a pas d'accès réseau entre B et X.

En utilisant CornerShot, l'équipe peut découvrir que l'hôte C a en fait accès à la cible X, donc la propagation vers la cible X devrait d'abord passer par l'hôte C.

+-----+        +-----+          +-----+
|     |        |     | filtré    |     |
|  A  +-------->  B  +----X--->(p) X  |
|     |        |     |          |     |
+-----+        +-----+          +-(p)-+
 source      porteur            cible
   +                               ^
   |                               |
   |           +-----+             |
   |           |     |   ouvert    |
   +---------->+  C  +-------------+
               |     |
               +-----+

Comme nmap, CornerShot différencie les états de ports suivants : ouvert, fermé, filtré et inconnu (s'il ne peut pas être déterminé).

La démonstration suivante montre l'exécution de CornerShot contre deux hôtes porteurs 172.0.1.12 & 172.0.1.13, afin de déterminer s'ils ont un accès réseau à 192.168.200.1 :

cornershot demo

En savoir plus ici.

Cas d'utilisation

Déploiement unique pour une visibilité réseau complète

La tâche apparemment simple d'identifier si un hôte B dans le réseau a accès à l'hôte C peut nécessiter un large déploiement de capteurs réseau, d'agents sur les appareils ou la collecte d'une multitude de règles de pare-feu, de configurations de routeurs et de politiques hôtes.

CornerShot peut simplifier ce processus en utilisant un (ou très peu) agent qui peut interroger d'autres hôtes du réseau pour déterminer leur accès à des hôtes distants.

Valider les chemins BloodHound

Les équipes de sécurité qui utilisent BloodHound pour trouver et atténuer les chemins d'élévation de privilèges dans leur réseau luttent souvent contre des millions de chemins logiques découverts par BloodHound.

ShotHound est un outil qui intègre CornerShot à BloodHound afin de découvrir des chemins pratiques soutenus par un accès réseau.

Pour commencer

CornerShot peut être utilisé comme un package ou comme un module autonome. Les seules exigences sont Python 3 et le paquet impacket.

Installation

pip install cornershot

Utilisation autonome

L'utilisation de base nécessite les identifiants d'un utilisateur de domaine valide, un nom de domaine FQDN, une IP de porteur et une IP cible.

python -m cornershot <utilisateur> <mot_de_passe> <domaine> <porteur> <cible>

Pour analyser une gamme de porteurs contre une gamme de cibles, des sous-réseaux ou des plages d'IP peuvent être utilisés dans une liste séparée par des virgules :

python -m cornershot <utilisateur> <mot_de_passe> <domaine> 192.168.1.10-192.168.1.20 192.168.5.0/24,192.168.6.0/24

Par défaut, CornerShot essaiera d'analyser les ports suivants : 135, 445, 3389, 5985, 5986. L'utilisateur peut fournir une liste séparée par des virgules de ports et plages de ports :

python -m cornershot -tp 22,8080,45000-45005 <utilisateur> <mot_de_passe> <domaine> <porteur> <cible>

En tant que package

Dans le code, il faut instancier un objet CornerShot avec le nom d'utilisateur, le mot de passe et le nom de domaine d'un utilisateur de domaine valide. L'ajout de porteurs, cibles et ports se fait via la méthode add_shots. Une fois prêt, la méthode open_fire peut être appelée, qui effectue uniquement les appels RPC pertinents en fonction des ports requis.

from cornershot import CornerShot
cs = CornerShot("nom_utilisateur", "mot_de_passe", "fqdn")
cs.add_shots(porteurs=["192.168.1.1"], cibles=["192.168.1.2","192.168.1.3"])
résultats = cs.open_fire()

Le résultat de open_fire est un dictionnaire avec des clés de porteurs, chaque porteur a un autre ensemble de clés pour les cibles, et enfin, chaque cible contient un dictionnaire de ports et leurs états respectifs. Voici un exemple de format du résultat :

{'porteur_1': 
	{'cible_1': 
		{135: 'inconnu', 445: 'filtré', 3389: 'filtré', 5986: 'filtré', 5985: 'filtré'},
	'cible_2': 
		{135: 'inconnu', 445: 'ouvert', 5985: 'inconnu', 5986: 'filtré', 3389: 'ouvert'}
	}, 
'porteur_2': 
	{'cible_1': 
		{3389: 'filtré', 135: 'filtré', 5985: 'filtré', 445: 'filtré', 5986: 'inconnu'}, 
	'cible_2': 
		{5985: 'filtré', 5986: 'filtré', 445: 'filtré', 135: 'filtré', 3389: 'ouvert'}
	}
}

Comment fonctionne CornerShot ?

CornerShot s'appuie sur diverses méthodes standard d'appel de procédure distante (RPC) bien documentées, utilisées par divers services Microsoft. En utilisant des méthodes qui ne nécessitent qu'un compte authentifié dans le domaine, CornerShot est capable de déclencher du trafic réseau depuis un hôte porteur vers une cible.

CornerShot peut déterminer l'état du port distant en mesurant le temps pris par un appel RPC et en utilisant différents codes d'erreur pour chaque méthode RPC.

Méthodes RPC

Le lecteur connaît peut-être le "printer bug", découvert par Lee Christensen. Bien qu'il soit appelé un bug, il s'agit d'un comportement bien documenté du service d'impression, qui permet à tout utilisateur authentifié de contraindre un serveur distant à s'authentifier sur n'importe quelle machine, en utilisant la méthode RpcRemoteFindFirstPrinterChangeNotificationEx.

CornerShot utilise les méthodes RPC suivantes de plusieurs protocoles Microsoft (il existe de nombreuses méthodes supplémentaires, qui seront implémentées dans les versions futures) :

  • RPRN : RpcOpenPrinter
  • RRP : BaseRegSaveKey
  • EVEN : ElfrOpenBELW
  • EVEN6 : EvtRpcOpenLogHandle

L'implémentation des protocoles eux-mêmes est réalisée via l'excellent paquet impacket.

Télécharger l’outil