Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Skabtsov_N_V_-_Audit_bezopasnosti_informatsionnykh_sistem_-_2018.pdf
Скачиваний:
101
Добавлен:
24.01.2021
Размер:
9 Mб
Скачать

3 Получение информации от сетевых сервисов

Введение

Если в прошлой главе мы собирали информацию о целевой организации только из открытых источников, то в данном разделе мы перейдем непосредственно к получению информации от внутренних сетевых сервисов целевой организации.

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

Учитывая вышесказанное, если вашей задачей является проведение аудита ИС таким образом, чтобы об этом не узнал персонал одела ИТ, вам следует уделить повышенное внимание своей анонимности. Это можно сделать, используя различные прокси-серверы или такое ПО, как Tor.

Сканирование портов

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

Сканирование TCP-портов основано на «трехстороннем рукопожатии» (three-way handshake). Сканер посылает пакет SYN на сканируемый порт и в случае, когда порт открыт, получает в ответ пакет ACK, а если порт закрыт — пакет RST.

Сканирование UDP-портов имеет свою особенность, так как протокол UDP, в отличие от TCP, не гарантирует надежной доставки информации и не использует «рукопожатий».

Сканирование портов  41

Если при сканировании обнаруживается, что порт закрыт, сканер получает назад сообщение «порт недоступен». В свою очередь, отсутствие такого сообщения позволяет сканеру принять решение о том, что порт открыт. Но тут есть одна проблема: если перед сервером стоит брандмауэр, который блокирует идущие от сканера запросы, то сканер не будет получать сообщение о неудачном подключении и примет неверное решение о том, что порт открыт.

Определение активных хостов

Определение активных хостов помогает сократить время, которое требуется для проведения аудита. Хорошо, если сеть состоит из 5–10 адресов, но что, если из 2–3 тысяч? Определив активные хосты и сконцентрировавшись только на них, мы можем сэкономить большое количество времени и уменьшить объем работы. Для определения активных хостов можно использовать команду ping:

root@kali:~# ping google.com

 

PING google.com (216.58.211.142) 56(84)

bytes of data.

64

bytes

from arn09s10-in-f14.1e100.net

(216.58.211.142): icmp_seq=1 ttl=128

time=101

ms

 

64

bytes

from arn09s10-in-f14.1e100.net

(216.58.211.142): icmp_seq=2 ttl=128

time=103

ms

 

64

bytes

from arn09s10-in-f14.1e100.net

(216.58.211.142): icmp_seq=3 ttl=128

time=100

ms

 

64

bytes

from arn09s10-in-f14.1e100.net

(216.58.211.142): icmp_seq=4 ttl=128

time=106

ms

 

64

bytes

from arn09s10-in-f14.1e100.net

(216.58.211.142): icmp_seq=5 ttl=128

time=102

ms

 

64

bytes

from arn09s10-in-f14.1e100.net

(216.58.211.142): icmp_seq=6 ttl=128

time=104

ms

 

--- google.com ping statistics ---

6 packets transmitted, 6 received, 0% packet loss, time 5009ms rtt min/avg/max/mdev = 100.708/103.112/106.570/1.985 ms

Ping — стандартная утилита, которая входит в состав любой ОС. Однако у данного метода есть один недостаток — очень часто ICMP, на основе которого и работает ping, заблокирован на уровне брандмауэра. И в этом случае хост, на который мы отправляем запросы, не будет на них отвечать, пусть даже мы точно знаем, что он работает и что к нему можно подключиться из любой точки мира.

Данную ситуацию можно продемонстрировать на примере сайта microsoft.com.

root@kali:~# ping microsoft.com

PING microsoft.com (104.43.195.251) 56(84) bytes of data.

--- microsoft.com ping statistics ---

6 packets transmitted, 0 received, 100% packet loss, time 4999ms

42    Глава 3  •  Получение информации от сетевых сервисов

Хотя к данному серверу может подключиться любой пользователь, используя порт 80, он не отвечает на ping.

На самом деле ping обладает достаточно ограниченной функциональностью. Рассмотрим более интересную утилиту hping3.

hping3 работает не только с ICMP, но и с TCP-протоколом, а это значит, что она может отправлять запросы на любой порт, получать ответы и обрабатывать их. Приведем несколько примеров.

Используем hping3 как обычный ping:

root@kali:~# hping3 microsoft.com

HPING microsoft.com (eth0 104.40.211.35): NO FLAGS are set, 40 headers + 0 data bytes

--- microsoft.com hping statistic ---

5 packets transmitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms

Теперь отправим 1 пакет (-с 1) с установленным флагом АСК (-А) на порт 80 и укажем, что с нашей стороны мы ждем ответ на порт 5050:

root@kali:~# hping3 -c 1 -V -p 80 -s 5050 -A microsoft.com using eth0, addr: 192.168.126.129, MTU: 1500

HPING microsoft.com (eth0 104.43.195.251): A set, 40 headers + 0 data bytes len=46 ip=104.43.195.251 ttl=128 id=4481 tos=0 iplen=40

sport=80 flags=R seq=0 win=32767 rtt=0.2 ms seq=95397285 ack=0 sum=3205 urp=0

--- microsoft.com hping statistic ---

1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.2/0.2/0.2 ms

UDP-сканирование

Как мы уже говорили, принцип работы протокола UDP отличается от TCP. UDP работает без установки предварительного соединения, а это значит, что в нем отсутствует процесс «рукопожатий». Данный протокол не обеспечивает надежной доставки информации и используется в системах реального времени — например, для организации видеоконференций.

Его не принято активно использовать во время сканирования как раз по причине ненадежности, ведь это может привести к потере части информации, необходимой для дальнейшего проведения атаки.

Используем утилиту netcat для проверки интересующих нас портов на целевой машине:

root@kali:~# nc -nv -u -z -w 1 192.168.0.15 150-170 (UNKNOWN) [192.168.0.15] 162(snmp)open

Сканирование портов  43

Поскольку мы послали UDP-пакет на определенный порт и не получили ответа, это означает, что порт открыт. Однако если порт закрыт, мы должны получить ICMP-ответ «порт недоступен».

NMAP

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

Самый простой способ просканировать сервер, например 192.168.10.15, на наличие открытых портов — это ввести команду nmap 192.168.10.15.

root@kali:~# nmap 192.168.10.15

 

 

 

 

Starting Nmap 7.25BETA1 ( https://nmap.org ) at 2016-10-20

07:21 EDTNmap scan

report for mail.org.com (192.168.10.15)Host is

up (0.0026s

latency).Not shown:

991 closed portsPORT

STATE SERVICE22/tcp

open

ssh25/tcp

open smtp80/tcp

open http111/tcp open

rpcbind443/tcp open

https1720/tcp open

H.323/Q.9313306/

tcp open mysql5555/tcp open freeciv8089/tcp open

unknownNmap done: 1 IP address

(1 host up) scanned in 0.46 seconds

 

 

 

 

Итак, мы видим, что было найдено 9 открытых портов, но дело в том, что когда мы запускаем данную утилиту, она не сканирует хост на все открытые порты, а только на самые популярные.

Для того, чтобы nmap просканировал нужный хост на все открытые порты, запустим его с дополнительным параметром (-р).

root@kali:~# nmap

192.168.10.15

 

 

 

 

Starting Nmap 7.25BETA1 ( https://nmap.org ) at 2016-10-20

07:30 EDTNmap scan

report for mail.org.com (192.168.10.15)Host is up (0.0032s

latency).Not shown:

65525

closed portsPORT

STATE SERVICE22/tcp

open

ssh25/tcp

open smtp80/tcp

open

http111/tcp

open

rpcbind443/tcp open

https1012/tcp open

unknown1720/

tcp open H.323/Q.9313306/tcp open mysql5555/tcp open

freeciv8089/tcp open

unknownNmap done:

1 IP address (1 host up) scanned in 24.13 seconds

 

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

Но согласитесь, если перед нами достаточно большая сеть, сканировать каждую отдельную машину будет очень неудобно и долго. Для того чтобы оптимизировать этот процесс, мы можем использовать символ * вместо последнего октета в сетевом адресе.

root@kali:~# nmap 192.168.10.*

 

 

 

 

Starting Nmap 7.25BETA1 ( https://nmap.org ) at 2016-10-20

07:40 EDTNmap scan

report for mail.org.com (192.168.10.15)Host is

up (0.0084s

latency).Not shown:

991 closed portsPORT

STATE SERVICE22/tcp

open

ssh25/tcp

open smtp80/tcp

open http111/tcp open

rpcbind443/tcp open

https1720/tcp open

H.323/Q.9313306/

tcp open mysql5555/tcp open freeciv8089/tcp open

unknown

 

 

44 

Глава 3  • 

Получение информации от сетевых сервисов

 

Nmap

scan report for mail1.org.com (192.168.10.18)

 

 

Host

is up

(0.0084s latency).Not shown: 990 closed portsPORT

STATE SERVICE22/

tcp

open

ssh25/tcp

open smtp80/tcp open

http111/tcp open rpcbind443/

tcp

open

https1720/tcp open

H.323/Q.9313306/tcp open

mysql5555/tcp open

freeciv8080/tcp open

http-proxy8089/tcp open

unknown

 

 

Nmap

scan report for web.org.com (192.168.10.25)Host is up (0.0075s latency).

Not shown:

994 closed portsPORT

STATE SERVICE22/tcp

open

ssh80/tcp open

http443/tcp

open

https1720/tcp open H.323/Q.9313306/tcp open

mysql8089/tcp open

unknown

 

 

 

 

 

 

 

Nmap

done:

256 IP addresses (3 hosts up) scanned in 20.52 seconds

А теперь попробуем получить информацию об установленной ОС на одном из найденных серверов, используя параметр «-О»:

root@kali:~# nmap -O 192.168.10.15

Starting Nmap 7.25BETA1 ( https://nmap.org ) at 2016-10-20 07:55 EDTNmap scan report for mail.org.com (192.168.10.15)Invalid target host specification: 139Host

is up

(0.0014s latency).Not shown:

991 closed portsPORT

STATE SERVICE22/tcp

open

ssh25/tcp

open smtp80/tcp

open http111/tcp open

rpcbind443/tcp open

https1720/tcp open

H.323/Q.9313306/tcp open mysql5555/tcp

open freeciv8089/

tcp open unknownDevice type: general purposeRunning: Linux

2.6.XOS CPE: cpe:/

o:linux:linux_kernel:2.6.22OS details: Linux 2.6.22, Linux 2.6.9 — 2.6.27Network Distance: 3 hopsOS detection performed. Please report any incorrect results at http://nmap.org/submit/ Nmap done: 1 IP address (1 host up) scanned in 2.08 seconds

Мы видим, что наш сервер работает под управлением ОС Linux с версией ядра 2.6.22. К сожалению, эта функция не всегда выдает точный результат и может сбить вас с толку.

Также с помощью nmap можно собрать еще больше информации, используя параметр «–А».

root@kali:# nmap -O 192.168.10.15

Starting Nmap 7.25BETA1 ( https://nmap.org ) at 2016-10-20 08:01 EDTNmap scan report for mail.org.com (192.168.10.15)Host is up (0.0015s latency).Not shown: 991 closed portsPORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 4.1 (protocol 2.0)| ssh-hostkey: 2048 36:af:f0:d8:c9:69:2b:eb:b6:c8:d2:d6:b5:d4:ce

:b9 (DSA)

 

|_2048

a4:0c:5c:fb:5a:d8:a2:4f:5d:fd:d3:37:97:e5:1b:61 (RSA)

25/tcp

open smtp

Exim smtpd|_smtp-commands: mail.org.com, PIPELINING,

SIZE 47700000, ETRN, STARTTLS, AUTH CRAM-MD5 DIGEST-MD5 LOGIN PLAIN, AUTH=CRAM-MD5 DIGEST-MD5 LOGIN PLAIN, ENHANCEDSTATUSCODES, 8BITMIME, DSN, | ssl-cert: Subject: commonName= mail.org.com /organizationName=Org.com/stateOrProvinceName=Spain/ countryName=SP| Not valid before: 2012-05-20T09:02:09+00:00|_Not valid after: 2014-05-18T09:02:09+00:00|_ssl-date: 2013-06-29T14:18:46+00:00; -3s from local

time.

 

 

80/tcp

open http

Apache httpd 2.2.3 ((SuSe))| http-methods: Potentially

risky methods: TRACE|_See http://nmap.org/nsedoc/scripts/http-methods.html|_http-

title: Site

doesn't have a title (text/html;

charset=UTF-8).

 

111/tcp

open rpcbind

2

(RPC #100000)|

rpcinfo: |

program version

port/proto

service|

100000

2

111/tcp rpcbind|

100000

2

 

111/udp

rpcbind|

100024 1

1009/udp

status|_ 100024 1

1012/tcp

status

 

 

 

 

 

 

Сканирование портов  45

443/tcp open ssl/http

Apache httpd 2.2.3 ((SuSe))| http-methods: Potentially

risky methods: TRACE|_See http://nmap.org/nsedoc/scripts/http-methods. html|_http-title: Site doesn't have a title (text/html; charset=UTF-8).| sslcert: Subject: commonName=localhost.localdomain/organizationName=SomeOrganiza tion/stateOrProvinceName=SomeState/countryName=--| Not valid before: 2011-05- 27T11:04:52+00:00|_Not valid after: 2012-05-26T11:04:52+00:00|_ssl-date: 2013-06-

29T14:18:46+00:00;

-3s from local time.

 

1720/tcp

open H.323/Q.931?3306/tcp open mysql

MySQL (unauthorized)5555/

tcp open

omniback

HP OpenView Omniback/Data Protector8089/tcp open ssl/http

Snort httpd|_http-methods: No Allow or Public header in OPTIONS response (status code 501)|_http-title: snortd| ssl-cert: Subject: commonName=SnortServerDefaultC ert/organizationName=SnortUser| Not valid before: 2012-02-03T11:18:41+00:00|_Not valid after: 2015-02-02T11:18:41+00:00|_ssl-date: 2013-06-29T14:18:46+00:00; -3s from local time.|_sslv2: server still supports SSLv2

Device type: general purposeRunning: Linux 2.6.XOS CPE: cpe:/o:linux:linux_ kernel:2.6OS details: Linux 2.6.9 — 2.6.27Network Distance: 3 hopsService Info: Hosts: mail.org.com; OS: Unix

TRACEROUTE (using port 587/tcp)HOP RTT

ADDRESS1 3.00 ms 192.168.25.2542

4.00 ms 192.168.100.13

4.00 ms mail.org.com (192.168.10.15)

OS and Service detection

performed. Please report any incorrect results at http://

nmap.org/submit/ .Nmap done: 1 IP address (1 host up) scanned in 28.98 seconds

Просим обратить внимание на то, что данный метод позволяет собирать все баннеры (то, что система сама может о себе рассказать) со всех открытых сетевых сервисов.

В результате мы получили много интересной информации, а именно: имя и версию почтового агента, имя и версию веб-сервера, точное название ОС и много другой полезной информации.

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

-sT

Сканирование с установлением TCP-соединения. Производится по умолча-

 

нию, если не указано другое

 

 

-sS

SYN-сканирование. Сканирование с использованием полуоткрытых соедине-

 

ний — соединение TCP/IP никогда не открывается полностью. Сканер портов

 

генерирует пакет SYN. Если порт на целевом хосте открыт, с него придет

 

пакет SYN-ACK. Хост сканера отвечает пакетом RST, закрывая тем самым

 

соединение до того, как процесс установления соединения завершился. При

 

использовании данного метода можно остаться незамеченным, ведь отдельные

 

приложения никогда не получают входящее соединение (оно обрывается на

 

этапе установки)

 

 

-sF

FIN-сканирование. Некоторые серверы способны отследить попытку SYN-

 

сканирования их портов. Сканирование с использованием FIN-пакетов

 

позволяет обойти подобные средства защиты. На прибывший FIN-пакет на

 

закрытый порт сервер должен ответить пакетом RST. FIN-пакеты на открытые

 

порты должны игнорироваться сервером. По этому различию становится воз-

 

можным отличить закрытый порт от открытого