Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / практический хакинг.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

 

 

 

 

Рис.4.7.Дамп трафика Wireshark кадра DHCP в голосовой сети (Voice VLAN)

Идентификация устройств IoT в сети

Одна из проблем, с которыми вы столкнетесь при попытке иденти- фицировать устройства IoT в сети, состоит в том, что они часто ис- пользуют общие стеки технологий. Например, BusyBox, популярный исполняемый файл на устройствах интернета вещей, обычно запу- скаетодни ите же сетевые службы на всех устройствах.Это затрудня- ет идентификацию устройства на основе его сервисов.

Это означает, что нам нужно углубиться в детали. Мы должны со- здать специальный запрос в надежде получить ответ от целевого устройства, который позволит его однозначно идентифицировать.

Обнаружение паролей службами снятия отпечатков

Ниже продемонстрирован характерный пример того, как иногда вы можете перейти отобнаружения неизвестной службы к обнаружению жестко запрограммированного бэкдора, которым можно злоупотре- бить. Мы будем нацелены на IP-вебкамеру.

Из всех доступных инструментов Nmap имеет наиболее полную базу данных для сервисного снятия отпечатков. Nmap доступен по умолчанию в ориентированных на безопасность­ дистрибутивах Li- nux, таких как Kali, но вы можете получить его исходный код или предварительно скомпилированные двоичные файлы для всех ос- новных операционных систем, включая Linux, Windows и macOS, по адресу https://nmap.org/. Он использует файл nmap-service-probes, рас-

98  Глава 4

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

положенный в корневой папке Nmap, для хранения тысяч подписей

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

для всех видов служб. Эти подписи состоят из зондов, часто отправd-f-x chan

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

e

 

ляемых данных и иногда сотен строк, которые соответствуют извест- ным ответам на определенные службы.

При попытке идентифицировать устройство и службы, которые оно запускает, самая первая команда Nmap, которую вы должны по- пробовать,–сканированиесвключеннымопределениемслужбы(-sV)

иоперационной системы (-O):

#nmap -sV -O <target>

Этого сканирования обычно бывает достаточно, чтобы идентифи- цировать базовую операционную систему и основные службы, вклю- чая их версии.

Но хотя эта информация сама по себе ценна, еще более полезно провести сканирование, которое увеличивает глубину сканирова- ния версий до максимального уровня с помощью аргументов --ver- sion-all или --version-intensity 9. Увеличение глубины сканиро-

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

Когда мы запустили полное сканирование порта (-p-) IP-веб-каме­ ­ ры с включенным обнаружением версии и глубиной, увеличенной до максимума,сканированиеобнаружилоновуюслужбу,работающуюна более высоких портах,которая не была обнаружена при предыдущем сканировании:

# nmap -sV --version-all -p- <target>

Host is up (0.038s latency). Not shown: 65530 closed ports

PORT

STATE

SERVICE

VERSION

21/tcp

open

ftp

OpenBSD ftpd 6.4 (Linux port 0.17)

80/tcp

open

http

Boa HTTPd 0.94.14rc21

554/tcp

open

rtsp

Vivotek FD8134V webcam rtspd

8080/tcp

open

http

Boa HTTPd 0.94.14rc21

42991/tcp

open

unknown

 

1 service

unrecognized despite returning data. If you know the service/version,

please submit

the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service : SF-Port42991-TCP:V=7.70SVN%I=7%D=8/12%Time=5D51D3D7%P=x86_64-unknown-linux SF:-gnu%r(GenericLines,3F3,"HTTP/1\.1\x20200\x20OK\r\nContent-Length:\x209 SF:22\x20\r\nContent-Type:\x20text/xml\r\nConnection:\x20Keep-Alive\r\n\r\ SF:n<\?xml\x20version=\"1\.0\"\?>\n<root\x20xmlns=\"urn:schemas-upnp-org:d SF:evice-1-0\">\n<specVersion>\n<major>1</major>\n<minor>0</minor>\n</spec SF:Version>\n<device>\n<deviceType>urn:schemas-upnp-org:device:Basic:1</de SF:viceType>\n<friendlyName>FE8182\(10\.10\.10\.6\)</friendlyName>\n<manuf SF:acturer>VIVOTEK\x20INC\.</manufacturer>\n<manufacturerURL>http://www\.v SF:ivotek\.com/</manufacturerURL>\n<modelDescription>Mega-Pixel\x20Network

Оценка сети  99

 

 

 

 

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

 

 

 

 

SF:\x20Camera</modelDescription>\n<modelName>FE8182</modelName>\n<modelNum SF:ber>FE8182</modelNumber>\n<UDN>uuid:64f5f13e-eb42-9c15-ebcf-292306c172b SF:6</UDN>\n<serviceList>\n<service>\n<serviceType>urn:Vivotek:service:Bas SF:icService:1</serviceType>\n<serviceId>urn:Vivotek:serviceId:BasicServic SF:eId</serviceId>\n<controlURL>/upnp/control/BasicServiceId</controlURL>\ SF:n<eventSubURL>/upnp/event/BasicServiceId</eventSubURL>\n<SCPDURL>/scpd_ SF:basic\.xml</");

Service Info: Host: Network-Camera; OS: Linux; Device: webcam; CPE: cpe:/ o:linux:linux_kernel,

cpe:/h:vivotek:fd8134v

 

 

 

 

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

 

 

 

 

Обратите внимание,что в зависимости от количества запущенных служб это сканирование может быть очень заметным и трудоемким. Плохо написанное программное обеспечение можеттакже дать сбой, потому что оно получит тысячи неожиданных запросов. Найдите вTwitterзаписисхештегом#KilledByNmap,чтобыувидетьмножество устройств, которые дают сбой при сканировании.

Отлично–обнаружена новая служба на порте 42991.Но даже меха- низмобнаружениясервисовNmapстысячамиподписейнераспознал его, потому что он пометил сервис как неизвестный в столбце серви- са. Однако служба вернула данные. Nmap даже предлагает отправить подпись,чтобы улучшитьсвою базуданных (что мы рекомендуемде- лать всегда).

Если мы обратим более пристальное внимание на частичный от- вет, который показывает Nmap, то можем распознавать XML-файл, содержащий информацию об устройстве,такую как настроенное имя, название и номер модели, а также услуги. Этот ответ выглядит ин- тересным, потому что служба работает на высокопроизводительном необычном порте:

SF-Port42991-TCP:V=7.70SVN%I=7%D=8/12%Time=5D51D3D7%P=x86_64-unknown-linux

SF:-gnu%r(GenericLines,3F3,"HTTP/1\.1\x20200\x20OK\r\nContent-Length:\x209

SF:22\x20\r\nContent-Type:\x20text/xml\r\nConnection:\x20Keep-Alive\r\n\r\

SF:n<\?xml\x20version=\"1\.0\"\?>\n<root\x20xmlns=\"urn:schemas-upnp-org:d

SF:evice-1-0\">\n<specVersion>\n<major>1</major>\n<minor>0</minor>\n</spec

SF:Version>\n<device>\n<deviceType>urn:schemas-upnp-org:device:Basic:1</de

SF:viceType>\n<friendlyName>FE8182\(10\.10\.10\.6\)</friendlyName>\n<manuf

SF:acturer>VIVOTEK\x20INC\.</manufacturer>\n<manufacturerURL>http://www\.v

SF:ivotek\.com/</manufacturerURL>\n<modelDescription>Mega-Pixel\x20Network

SF:\x20Camera</modelDescription>\n<modelName>FE8182</modelName>\n<modelNum

SF:ber>FE8182</modelNumber>\n<UDN>uuid:64f5f13e-eb42-9c15-ebcf-292306c172b

SF:6</UDN>\n<serviceList>\n<service>\n<serviceType>urn:Vivotek:service:Bas

SF:icService:1</serviceType>\n<serviceId>urn:Vivotek:serviceId:BasicServic

SF:eId</serviceId>\n<controlURL>/upnp/control/BasicServiceId</controlURL>\

SF:n<eventSubURL>/upnp/event/BasicServiceId</eventSubURL>\n<SCPDURL>/scpd_

SF:basic\.xml</");

Чтобы попытаться сгенерироватьответотустройствадля его иден- тификации, мы можем отправить случайные данные в службу. Но если мы сделаем это с помощью ncat, соединение просто закроется:

100  Глава 4

 

 

 

 

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

 

 

 

 

# ncat 10.10.10.6 42991 eaeaeaea

eaeaeaea

Ncat: Broken pipe.

 

 

 

 

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

 

 

 

 

Если мы не можем отправить данные на этот порт, почему служба вернула данные, когда мы сканировали их ранее? Давайте проверим файл подписи Nmap, чтобы увидеть, какие данные отправил Nmap. Подпись включает имя зонда, который сгенерировал ответ, – в дан- номслучаеGenericLines.Мыможемпросмотретьэтотзонд,используя следующую команду:

# cat /usr/local/share/nmap/nmap-service-probes | grep GenericLines

Probe TCP GenericLines q|\r\n\r\n|

Внутри­ файла nmap-service-probes мы можем найти имя этого зон- да, за которым следуют данные, отправленные на устройство, разде- ленные символами q | <data> |. Данные показывают, что зонд Ge- nericLines отправляет два возврата каретки и новые строки.

Давайте отправим это прямо на сканируемое устройство, чтобы получить полный ответ, который показывает Nmap:

# echo -ne "\r\n\r\n" | ncat 10.10.10.6 42991

HTTP/1.1 200 OK Content-Length: 922 Content-Type: text/xml Connection: Keep-Alive

<?xml version="1.0"?>

<root xmlns="urn:schemas-upnp-org:device-1-0"> <specVersion>

<major>1</major>

<minor>0</minor>

</specVersion>

<device> <deviceType>urn:schemas-upnp-org:device:Basic:1</deviceType> <friendlyName>FE8182(10.10.10.6)</friendlyName> <manufacturer>VIVOTEK INC.</manufacturer> <manufacturerURL>http://www.vivotek.com/</manufacturerURL> <modelDescription>Mega-Pixel Network Camera</modelDescription> <modelName>FE8182</modelName> <modelNumber>FE8182</modelNumber> <UDN>uuid:64f5f13e-eb42-9c15-ebcf-292306c172b6</UDN> <serviceList>

<service>

<serviceType>urn:Vivotek:service:BasicService:1</serviceType>

<serviceId>urn:Vivotek:serviceId:BasicServiceId</serviceId>

<controlURL>/upnp/control/BasicServiceId</controlURL>

<eventSubURL>/upnp/event/BasicServiceId</eventSubURL> <SCPDURL>/scpd_basic.xml</SCPDURL>

Оценка сети  101

 

 

 

 

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

 

 

 

 

</service>

</serviceList>

<presentationURL>http://10.10.10.6:80/</presentationURL>

</device>

</root>

 

 

 

 

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

 

 

 

 

Служба отвечает большим количеством полезной информации, включая имя устройства, название модели, номер модели и службы, работающие внутри­ устройства. Злоумышленник может использо- вать эту информацию для точного определения модели IP-веб-­ка­ меры и версии прошивки.

Но мы можем пойти дальше. Давайте воспользуемся названием модели и номером,чтобы получить прошивку устройства с веб-сайта производителя и выяснить,как оно генерирует этот XML-файл.(Под- робные инструкции по получению прошивки устройства приведены в главе 9.) Когда у нас есть прошивка, мы извлекаем файловую систе- му внутри­ прошивки с помощью binwalk:

$ binwalk -e <файл прошивки>

Запустив эту командудля прошивки IP-веб-камеры,мы обнаружи- ли незашифрованную прошивку, которую можно проанализировать. Файловая система представлена в формате Squashfs,файловой систе- метолькодлячтениядляLinux,обычновстречающейсявустройствах

IoT.

МыпровелипоисквпрошивкестроквответеXML,которыйвидели ранее, и нашли их внутри­ двоичного файла check_fwmode:

$ grep -iR "modelName"

 

./usr/bin/update_backup:

MODEL=$(confclient -g system_info_extendedmodelname -p 9 -t Value)

./usr/bin/update_backup:

BACK_EXTMODEL_NAME=`${XMLPARSER} -x /root/system/info/

extendedmodelname -f ${BACKUP_SYSTEMINFO_FILE}`

./usr/bin/update_backup:

CURRENT_EXTMODEL_NAME=`${XMLPARSER} -x /root/system/info/

extendedmodelname -f ${SYSTEMINFO_FILE}`

./usr/bin/update_firmpkg:getSysparamModelName()

./usr/bin/update_firmpkg:

sysparamModelName=`sysparam get pid`

./usr/bin/update_firmpkg:

getSysparamModelName

./usr/bin/update_firmpkg:

bSupport=`awk -v modelName="$sysparamModelName" ‚BEGIN{bFlag=0}

{if((match($0, modelName)) && (length($1) == length(modelName))){bFlag=1}}END{print bFlag}'

$RELEASE_LIST_FILE`

 

./usr/bin/update_lens:

SYSTEM_MODEL=$(confclient -g system_info_modelname -p 99 -t

Value)

 

./usr/bin/update_lens:

MODEL_NAME=`tinyxmlparser -x /root/system/info/modelname -f

/etc/conf.d/config_systeminfo.xml`

./usr/bin/check_fwmode:

sed -i "s,<modelname>.*</modelname>,<modelname>${1}</modelname>,g"

$SYSTEMINFO_FILE

 

./usr/bin/check_fwmode:

sed -i "s,<extendedmodelname>.*</extendedmodelname>,<extendedmodeln

ame>${1}</extendedmodelname>,g" $SYSTEMINFO_FILE

102  Глава 4

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Файл check_fwmode содержит желаемую строку, и внутри­ мы так-

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

же нашли нечто ценное: вызов eval(), который включает переменd-f-x chan

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

e

 

ную QUERY_STRING, содержащую неизменяемый пароль, сохраненный непосредственно в коде прошивки:

eval `REQUEST_METHOD='GET' SCRIPT_NAME='getserviceid.cgi' QUERY_STRING='pas swd=0ee2cb110a9148cc5a67f13d62ab64ae30783031' /usr/share/www/cgi-bin/admin/ serviceid.cgi | grep serviceid`

Мымоглибыиспользоватьэтотпарольдлявызоваадминистратив- ного сценария CGI getserviceid.cgi или других сценариев,использу- ющих тот же жестко запрограммированный пароль.

Написание новых инструментов зондирования служб

Nmap

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

Формат отпечатка службы Nmap прост, что позволяет нам быстро разрабатывать новые сигнатуры (описания характерных признаков) для обнаружения новых услуг. Иногда служба включает дополни- тельную информацию об устройстве. Например, антивирусная служ- ба, такая как ClamAV, может возвращать дату обновления вирусных баз, или сетевая служба может включать номер сборки в дополнение к своей версии. В этом разделе мы разработаем новую сигнатуру для службы IP-веб-камеры, работающей на порте 42991, который мы об- наружили в предыдущем разделе.

Каждая строка зонда должена содержать хотя бы одну из команд, показанных в табл. 4.1.

Таблица 4.1.Директивы Nmap Service Probe

Команда

Описание

Exclude

Порты,которые нужно исключить из зондирования

Probe

Строка,определяющая протокол,имя и данные для отправки

Match

Ответ для сопоставления и определения услуги

Softmatch

Аналогичен директиве match,но позволяет продолжить сканирование

ports and sslports

Порты,определяющие,когда выполнять зонд

totalwaitms

Тайм-аут ожидания ответа от зонда

tcpwrappedms

Используется только для проверки NULL для идентификации служб

 

tcpwrapped

rarity

Описывает,насколько распространена услуга

fallback

Определяет,какие зонды использовать в качестве запасных,если

 

совпадений нет

Оценка сети  103

 

 

 

 

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

 

 

В качестве примера рассмотрим NULL-зонд, который выполняет

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

df-x chan

 

o

 

простой захват баннера службы: когда вы его используете, Nmap не

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

отправляетникаких данных; он просто подключится к порту,прослу- шает ответ и попытается сопоставить строку с известным ответом от приложения или службы.

# This is the NULL probe that compares any banners given to us

Probe TCP NULL q||

#Wait for at least 5 seconds for data. Otherwise an Nmap default is used. totalwaitms 5000

#Windows 2003

match ftp m/^220[ -]Microsoft FTP Service\r\n/ p/Microsoft ftpd/ match ftp m/^220 ProFTPD (\d\S+) Server/ p/ProFTPD/ v/$1/

softmatch ftp m/^220 [-.\w ]+ftp.*\r\n$/i

Зонд может иметь несколько строк строгих и мягких совпадений для обнаружения служб, которые отвечают на одни и те же данные запроса. Для простейших отпечатков сервисов, таких как тест NULL, нам нужны только следующие команды: Probe, rarity, ports и match.

Например, чтобы добавить сигнатуру, которая правильно опреде- ляетредкую службу,работающую на веб-камере,добавьте следующие строки в nmap-service-probes в вашем локальном корневом каталоге Nmap. Он загрузится автоматически вместе с Nmap, поэтому нет не- обходимости перекомпилировать инструмент:

Probe TCP WEBCAM q|\r\n\r\n| rarity 3

ports 42991

match networkcaminfo m|<modelDescription>Mega-Pixel| p/Mega-Pixel Network Camera/

Обратите внимание, что мы можем использовать специальные разделители для указания дополнительной информации о службе. Например, p/<имя продукта>/ задает название продукта. Nmap может заполнять другие поля, такие как i/ <дополнительная информация> / для сопутствующей информации или v /<информацияо дополнительной версии>/ дляномеровверсий.Онможетиспользоватьрегулярныевы- ражениядляизвлеченияданныхизответа.Когдамысновасканируем веб-камеру,Nmapдаетследующие результаты по сравнению с нашим ранее не известным сервисом:

# nmap -sV --version-all -p- <целевой хост>

Host is up

(0.038s latency).

 

 

Not shown:

65530 closed ports

 

 

PORT

STATE

SERVICE

VERSION

 

21/tcp

open

ftp

OpenBSD

ftpd 6.4 (Linux port 0.17)

104  Глава 4