Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
cornershot — Расширьте видимость сети с нескольких точек зрения других хостов. | Kitploit
Инструменты/GitHubGitHub/zeronetworks/cornershot
РазведкаАнализ уязвимостейСбор информацииСетевая безопасностьТестирование на Проникновение
GitHubzeronetworks/cornershot

cornershot

Расширьте видимость сети с нескольких точек зрения других хостов.

Репозиторий
31149222 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

GitHub release (latest SemVer) GitHub all releases

Что такое CornerShot

В военном деле CornerShot — это оружие, позволяющее солдату заглянуть за угол (и, возможно, сделать выстрел), не подвергая себя риску. Подобным образом пакет CornerShot позволяет проверить сетевой доступ удалённого хоста без необходимости иметь какие-либо особые привилегии на этом хосте.

С помощью CornerShot источник, имеющий сетевой доступ к носителю, может определить, есть ли сетевой доступ между носителем и целью для конкретного порта p.

Например, предположим, что красная команда пытается распространиться от «скомпрометированного» хоста-источника A к целевому хосту X, к которому у хоста A нет доступа. Если они будут распространяться через хост B, то лишь тогда обнаружат, что между хостом B и X нет сетевого доступа.

Используя CornerShot, команда может выяснить, что на самом деле хост C имеет доступ к цели X, поэтому для распространения к цели X сначала нужно пройти через хост C.

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

Как и nmap, CornerShot различает следующие состояния портов: open, closed, filtered и unknown (если определить не удаётся).

На следующей демонстрации показан запуск CornerShot против двух хостов-носителей 172.0.1.12 и 172.0.1.13 для определения, имеют ли они сетевой доступ к 192.168.200.1:

демонстрация cornershot

Подробнее читайте здесь.

Варианты использования

Единое развёртывание для полной видимости сети

Казалось бы, простая задача — определить, имеет ли хост B в сети доступ к хосту C — может потребовать массового развёртывания сетевых датчиков, агентов на устройствах или сбора множества правил брандмауэра, конфигураций маршрутизаторов и политик хостов.

CornerShot может упростить этот процесс, используя одного (или очень мало) агентов, которые могут опрашивать другие хосты в сети для определения их доступа к удалённым хостам.

Проверка путей BloodHound

Команды безопасности, использующие BloodHound для поиска и устранения путей повышения привилегий в своей сети, часто сталкиваются с миллионами логических путей, обнаруженных BloodHound.

ShotHound — это инструмент, который интегрирует CornerShot с BloodHound для обнаружения практических путей, поддерживаемых сетевым доступом.

Начало работы

CornerShot можно использовать как пакет или как отдельный модуль. Единственные требования — Python 3 и пакет impacket.

Установка

pip install cornershot

Использование в качестве отдельного модуля

Для базового использования требуются учётные данные действительного доменного пользователя, полное доменное имя домена, IP-адрес носителя и целевой IP-адрес.

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

Для сканирования диапазона носителей и диапазона целей можно использовать подсети или диапазоны IP-адресов, перечисленные через запятую:

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

По умолчанию CornerShot пытается сканировать следующие порты: 135, 445, 3389, 5985, 5986. Пользователь может указать список портов и диапазонов портов через запятую:

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

Как пакет

В коде необходимо создать экземпляр объекта CornerShot с именем пользователя, паролем и именем домена действительного доменного пользователя. Добавление носителей, целей и портов осуществляется через метод add_shots. Когда всё готово, можно вызвать метод open_fire, который выполняет только необходимые вызовы RPC на основе требуемых портов.

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()

Результат open_fire — это словарь, ключами которого являются носители, у каждого носителя — ещё один набор ключей для целей, и, наконец, каждая цель содержит словарь портов и их соответствующих состояний. Пример формата результата:

{'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'}
	}
}

Как работает CornerShot?

CornerShot использует различные, хорошо задокументированные стандартные методы удалённого вызова процедур (RPC), которые применяются в различных сервисах Microsoft. Используя методы, для которых требуется только аутентифицированная учётная запись в домене, CornerShot может инициировать сетевой трафик от хоста-носителя к цели.

CornerShot определяет состояние порта удалённого хоста, измеряя время выполнения вызова RPC и используя различные коды ошибок для каждого метода RPC.

Методы RPC

Возможно, читатель знаком с "printer bug", обнаруженным Lee Christensen. Хотя это называют ошибкой, это хорошо задокументированное поведение службы печати, которое позволяет любому аутентифицированному пользователю принудить удалённый сервер к аутентификации на любой машине с помощью метода RpcRemoteFindFirstPrinterChangeNotificationEx.

CornerShot использует следующие методы RPC из нескольких протоколов Microsoft (существует множество дополнительных методов, которые будут реализованы в будущих версиях):

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

Реализация самих протоколов осуществляется с помощью замечательного пакета impacket.

RpcOpenPrinter

Этот метод принимает параметр printerName. Имя принтера может быть путём к локальному файлу, удалённому файлу или даже к веб-принтеру. Указав имя, соответствующее формату WEB_PRINT_SERVER, можно опросить любой удалённый порт. Пример имени веб-принтера, которое инициирует HTTP-трафик к удалённому хосту и порту: "http://<target_ip>:<target_port>/printers/ppp/.printer".

Скачать инструмент