Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / практический хакинг.pdf
Скачиваний:
24
Добавлен:
19.04.2024
Размер:
31.35 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Рис.6.2.Теперь веб-интерфейс доступен через внешнее соединение

Злоупотребление UPnP через интерфейсы WAN

Попробуем использовать UPnP удаленно через WAN-интерфейс. Эта тактика может позволить внешнему злоумышленнику нанести неко- торый ущерб, например переадресовать порты с хостов внутри­ ло- кальной сети или выполнить другие полезные команды IGD, такие как самоочевидные GetPassword или GetUserName. Вы можете выпол- нить эту атаку в ошибочных или небезопасных реализациях UPnP.

Для выполнения этой атаки мы будем использовать Umap, инстру- мент, написанный специально для этой цели.

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

В целях безопасности­ большинство устройств обычно не принимает пакеты SSDP через интерфейс WAN, но некоторые из них могут при- нимать команды IGD через открытые контрольные точки SOAP. Это означает, что злоумышленник может взаимодействовать с ними на- прямую из интернета.

По этой причине Umap пропускает этап обнаружения стека UPnP (этап, на котором устройство использует SSDP для обнаружения дру- гих устройств в сети) и пытается напрямую сканировать файлы опи- сания XML. Если он находит такой файл, он затем переходит к этапу управления UPnP и пытается взаимодействовать с устройством, от- правляя ему запросы SOAP,направленные на URL-адрес в файле опи- сания.

На рис. 6.3 показана блок-схема сканирования внутренних сетей при помощи Umap.

Umap сначала пытается найти контрольные точки IGD, проверяя множество известных расположений файлов XML (таких как /root- Desc.xml или /upnp/IGD.xml). После успешного их обнаружения Umap пытается угадать блок IP внутренней локальной сети. Помните, что вы сканируете внешний IP-адрес (выходящий в интернет), поэтому адреса за устройством NAT будут другими.

Затем Umap отправляет команду сопоставления портов IGD для каждого общего порта, перенаправляя этот порт в глобальную сеть. Далее он пытается подключиться к этому порту.Если порт закрыт,он

Использование сети с нулевой конфигурацией  161

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

отправляет команду IGD для удаления сопоставления порта. В про-

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

df-x chan

 

o

 

тивном случае он сообщает, что порт открыт, и оставляет сопостав-

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

ление портов как есть. По умолчанию сканируются следующие об- щие порты (жестко запрограммированные в переменной commonPorts

в umap.py):

commonPorts = ['21','22','23','80','137','138','139','443','445','3389', '8080']

Начало

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.Распознавание

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.Сканирование

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

внутреннего

 

 

 

 

 

 

 

 

 

 

 

 

 

 

контрольных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IP-адреса

 

 

 

 

 

 

 

 

 

 

 

 

 

 

точек IGD

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

локальной сети

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.Сопоставленный

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

портTCP

 

 

 

 

Конец цикла

Для каждого

 

 

3.Добавить

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

общего порта

 

 

сопоставление портов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

из WAN в LAN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нет

 

 

5.Открытли

Да

Конец

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

порт?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6а.Удалить

 

 

 

 

 

6b.Сообщитьоб

 

 

 

 

 

 

 

 

 

сопоставление

 

 

 

 

 

 

 

 

 

 

 

 

 

 

порта

 

 

 

 

 

открытом порте

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Попробоватьдругой портв commonPorts

 

 

7.Выполнено

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

с текущим

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

портом

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.6.3.Блок-схема Umap для сканирования хостов

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

# nmap --top-ports 100 -v -oG –

Nmap 7.70 scan initiated Mon Jul 8 00:36:12 2019 as: nmap --top-ports 100 -v -oG -

# Ports scanned: TCP(100;7,9,13,21-23,25-26,37,53,79-81,88,106,110- 111,113,119,135,139,143-144,179,199,389,427,443-445,465,513-515,543- 544,548,554,587,631,646,873,990,993,995,1025-1029,1110,1433,1720,1723,1755,1900,2000- 2001,2049,2121,2717,3000,3128,3306,3389,3986,4899,5000,5009,5051,5060,5101,5190,5357,5432,56- 31,5666,5800,5900,6000-6001,6646,7070,8000,8008-8009,8080-8081,8443,8888,9100,9999- 10000,32768,49152-49157) UDP(0;) SCTP(0;) PROTOCOLS(0;)

162  Глава 6

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

t

 

 

P

D

 

 

 

 

 

 

 

 

o

 

 

 

 

 

NOW!

r

 

 

 

 

 

 

BUY

 

 

Получение и использование Umap

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

p

df

 

 

 

 

e

 

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

Umap был впервые представлен на Defcon 19 Даниэлем Гарсиа; по-

 

 

 

 

 

 

 

следнюю версию инструмента можно найти на веб-сайте его авто- ра: https://toor.do/umap-0.8.tar.gz. После распаковки сжатого tar-архива Umap вы также можете установить SOAPpy и iplib:

#apt-get install pip

#pip install SOAPpy

#pip install iplib

UmapнаписаннаPython2,которыйофициальнобольшенеподдер- живается; поэтому, если в вашем дистрибутиве Linux нет доступного диспетчера пакетов Python 2,вам нужно будет загрузить его вручную с https://pypi.org/project/pip/#files. Загрузите последнюю версию исход- ного кода и запустите ее так:

#tar -xzf pip-20.0.2.tar.gz

#cd pip-20.0.2

#python2.7 setup install

Запустите Umap следующей командой (заменив IP-адрес на внеш- ний IP-адрес вашей цели):

# ./umap.py -c -i 74.207.225.18

После запуска Umap будет реализовывать блок-схему просмотра, показанную на рис. 6.3. Даже если устройство не объявляет команду IGD (что означает, что команда не обязательно должна быть указа- на как controlURL в XML-файле описания), некоторые системы все равно принимают команды из-за ошибочной реализации UPnP. Таким образом, вы всегда должны проверять их все в надлежащем тесте безопасности­ . Таблица 6.1 содержит список тестируемых команд IGD.

Обратите внимание, что последняя общедоступная версия Umap (0.8) не выполняет автоматическую проверку этих команд. Вы мо- жете найти более подробную информацию о них в официальной спецификации по адресу http://upnp.org/specs/gw/UPnP-gw-ANPPPConnec- tion-v1-Service.pdf/.

После того как Umap обнаружит доступную через внешний интер- нет службу IGD, вы можете использовать Miranda для ручного тести- рования этих команд. В зависимости от команды вы должны полу- чить различные ответы.Например,вернувшись к нашему уязвимому маршрутизатору OpenWrt и запустив против него Miranda,мы можем увидеть вывод некоторых из этих команд:

Использование сети с нулевой конфигурацией  163

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

Таблица 6.1.Список возможных команд IGD

 

 

 

 

 

w

 

 

 

 

w Click

 

 

 

 

 

o

m

 

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

 

 

e

 

Устанавливает определенный тип соединения

 

 

 

 

 

 

SetConnectionType

 

 

 

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

GetConnectionTypeInfo

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

 

 

 

 

 

 

 

 

 

 

 

соединения

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

ConfigureConnection

Отправьте эту команду для настройки PPP-соединения на устройстве

 

WAN и измените статус соединения ConnectionStatus из «Не

 

конфигурировано» на «Отключено»

RequestConnection

Инициирует подключение к экземпляру службы подключения с уже

 

определенной конфигурацией

RequestTermination

Отправьте эту команду любому экземпляру подключения в состоянии

 

«Подключено»,«Подключение» или «Аутентификация»,чтобы

 

изменить состояние подключения на «Отключено»

ForceTermination

Отправьте эту команду любому экземпляру подключения

 

в состоянии «Подключено»,«Подключение»,«Проверка

 

подлинности»,«Ожидание отключения» или «Отключение»,чтобы

 

изменить ConnectionStatus на «Отключено»

SetAutoDisconnectTime

Устанавливает время (в секундах),по истечении которого активное

 

соединение автоматически разрывается

SetIdleDisconnectTime

Указывает время простоя (в секундах),после которого соединение

 

может быть разорвано

SetWarnDisconnectDelay

Указывает количество секунд предупреждения для каждого

 

(потенциально) активного пользователя соединения,прежде чем

 

соединение будет прервано

GetStatusInfo

Извлекает значения переменных состояния,относящихся

 

к состоянию соединения

GetLinkLayerMaxBitRates

Получает максимальные скорости передачи данных в восходящем

 

и нисходящем направлении для соединения

GetPPPEncryptionProtocol

Извлекает протокол шифрования канального уровня (PPP)

GetPPPCompressionProtocol

Извлекает протокол сжатия канального уровня (PPP)

GetPPPAuthenticationProtocol

Извлекает протокол аутентификации канального уровня (PPP)

GetUserName

Извлекает имя пользователя,используемое для активации

 

соединения

GetPassword

Извлекает пароль,используемый для активации соединения

GetAutoDisconnectTime

Извлекает время (в секундах),по истечении которого активное

 

соединение автоматически отключается

GetIdleDisconnectTime

Получает время простоя (в секундах),после которого соединение

 

может быть разорвано

GetWarnDisconnectDelay

Получает количество секунд предупреждения для каждого

 

(потенциально) активного пользователя соединения,прежде чем

 

соединение будет прервано

GetNATRSIPStatus

Получает текущее состояние NAT и Realm-Specific IP (RSIP) на шлюзе

 

для этого подключения

GetGenericPortMappingEntry

Извлекает сопоставления портов NAT по одной записи за раз

GetSpecificPortMappingEntry

Сообщает о статическом сопоставлении портов,указанном

 

уникальным кортежем RemoteHost,ExternalPort и

 

PortMappingProtocol

AddPortMapping

Создает новое сопоставление портов или перезаписывает

 

существующее сопоставление с тем же внутренним клиентом.

 

Если пара ExternalPort и PortMappingProtocol уже сопоставлена

 

с другим внутренним клиентом,возвращается ошибка

DeletePortMapping

Удаляет ранее созданное сопоставление портов.По мере удаления

 

каждой записи массив уплотняется,а значение переменной

 

PortMappingNumberOfEntries уменьшается на единицу

GetExternalIPAddress

Получает значение внешнего IP-адреса в этом экземпляре

 

подключения.

164  Глава 6