Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
cornershot — Ampliar la visibilidad de la red desde múltiples puntos de vista de otros hosts | Kitploit
Herramientas/GitHubGitHub/zeronetworks/cornershot
ReconocimientoAnálisis de VulnerabilidadesRecopilación de InformaciónSeguridad de RedesPruebas de Penetración
GitHubzeronetworks/cornershot

cornershot

Ampliar la visibilidad de la red desde múltiples puntos de vista de otros hosts

Ver Repositorio
3114915hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

GitHub release (latest SemVer) GitHub all releases

¿Qué es CornerShot?

En la guerra, CornerShot es un arma que permite a un soldado mirar más allá de una esquina (y posiblemente disparar) sin arriesgarse a ser expuesto. De manera similar, el paquete CornerShot permite observar el acceso de red de un host remoto sin necesidad de tener privilegios especiales en ese host.

Usando CornerShot, una fuente, con acceso de red a carrier, puede determinar si existe acceso de red entre el carrier y el target para un puerto específico p.

Por ejemplo, supongamos que un equipo rojo intenta propagarse desde un host fuente A "comprometido" a un host destino X, al cual el host A no tiene acceso. Si se propagan a través del host B, solo entonces descubrirán que no hay acceso de red entre el host B y X.

Usando CornerShot, el equipo puede descubrir que el host C realmente tiene acceso al destino X, por lo que la propagación hacia el destino X debe pasar primero por el host C.

+-----+        +-----+          +-----+
|     |        |     | filtered |     |
|  A  +-------->  B  +----X--->(p) X  |
|     |        |     |          |     |
+-----+        +-----+          +-(p)-+
 source      carrier        target
   +                               ^
   |                               |
   |           +-----+             |
   |           |     |   open      |
   +---------->+  C  +-------------+
               |     |
               +-----+


De manera similar a nmap, CornerShot diferencia entre los siguientes estados de puertos: open, closed, filtered y unknown (si no se puede determinar).

La siguiente demostración muestra la ejecución de CornerShot contra dos hosts carriers 172.0.1.12 y 172.0.1.13, para determinar si tienen acceso de red a 192.168.200.1:

cornershot demo

Lea más aquí.

Casos de Uso

Despliegue Único para Visibilidad Completa de la Red

La tarea aparentemente simple de identificar si algún host B en la red tiene acceso al host C puede requerir un gran despliegue de sensores de red, agentes de dispositivos o la recopilación de una multitud de reglas de firewall, configuraciones de enrutadores y políticas de host.

CornerShot puede simplificar este proceso usando uno (o muy pocos) agentes que puedan consultar a otros hosts en la red para determinar su acceso a hosts remotos.

Validar Rutas de BloodHound

Los equipos de seguridad que utilizan BloodHound para encontrar y mitigar rutas de escalada de privilegios dentro de su red a menudo luchan con millones de rutas lógicas descubiertas por BloodHound.

ShotHound es una herramienta que integra CornerShot con BloodHound para descubrir rutas prácticas respaldadas por acceso de red.

Primeros Pasos

CornerShot se puede usar como un paquete o como un módulo independiente. Los únicos requisitos son Python 3 y el paquete impacket.

Instalación

pip install cornershot

Uso Independiente

El uso básico requiere credenciales de un usuario de dominio válido, un nombre de dominio FQDN, una IP de carrier y una IP de destino.

python -m cornershot <user> <password> <domain> <carrier> <target>

Para escanear un rango de carriers contra un rango de destinos, se pueden usar subredes o rangos de IP en una lista delimitada por comas:

python -m cornershot <user> <password> <domain> 192.168.1.10-192.168.1.20 192.168.5.0/24,192.168.6.0/24

Por defecto, CornerShot intentará escanear los siguientes puertos: 135, 445, 3389, 5985, 5986. El usuario puede proporcionar una lista delimitada por comas de puertos y rangos de puertos:

python -m cornershot -tp 22,8080,45000-45005 <user> <password> <domain> <carrier> <target>

Como Paquete

Dentro del código, es necesario instanciar un objeto CornerShot con el nombre de usuario, contraseña y nombre de dominio de un usuario de dominio válido. Agregar carriers, destinos y puertos se logra mediante el método add_shots. Una vez listo, se puede llamar al método open_fire, que realiza solo las llamadas RPC relevantes según los puertos requeridos.

from cornershot import CornerShot
cs = CornerShot("username", "password", "fqdn")
cs.add_shots(carriers=["192.168.1.1"],targets=["192.168.1.2","192.168.1.3"])
results = cs.open_fire()

El resultado de open_fire es un diccionario con claves de carriers, cada carrier tiene otro conjunto de claves para destinos y, finalmente, cada destino contiene un diccionario de puertos y sus respectivos estados. Este es un formato de ejemplo de un resultado:

{'carrier_1': 
	{'target_1': 
		{135: 'unknown', 445: 'filtered', 3389: 'filtered', 5986: 'filtered', 5985: 'filtered'},
	'target_2': 
		{135: 'unknown', 445: 'open', 5985: 'unknown', 5986: 'filtered', 3389: 'open'}
	}, 
'carrier_2': 
	{'target_1': 
		{3389: 'filtered', 135: 'filtered', 5985: 'filtered', 445: 'filtered', 5986: 'unknown'}, 
	'target_2': 
		{5985: 'filtered', 5986: 'filtered', 445: 'filtered', 135: 'filtered', 3389: 'open'}
	}
}

¿Cómo Funciona CornerShot?

CornerShot se basa en varios métodos de Llamada a Procedimiento Remoto (RPC) estándar y bien documentados utilizados por varios servicios de Microsoft. Al usar métodos que solo requieren una cuenta autenticada en el dominio, CornerShot puede desencadenar tráfico de red desde un host carrier hacia un destino.

CornerShot puede determinar el estado del puerto remoto midiendo el tiempo que tomó una llamada RPC y utilizando diferentes códigos de error para cada método RPC.

Métodos RPC

El lector puede estar familiarizado con el "printer bug", que fue descubierto por Lee Christensen. Aunque se le llama error, es un comportamiento bien documentado del servicio de impresión, que permite a cualquier usuario autenticado coaccionar a un servidor remoto para que se autentique en cualquier máquina usando el método RpcRemoteFindFirstPrinterChangeNotificationEx.

CornerShot utiliza los siguientes métodos RPC de varios protocolos de Microsoft (hay muchos métodos adicionales que se implementarán en versiones futuras):

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

La implementación de los protocolos en sí se logra mediante el magnífico paquete impacket.

Descargar herramienta