Сканируем порты.
Social Engineering
По мнению многих специалистов, сканирование портов – это одна из самых захватывающих задач, которые приходится выполнять, когда вы собираете данные OSINT о цели удаленно. Однако информация об открытых портах важна не только при нападении, но и во время защиты в сети.
Представим на мгновенье, что ИТ-менеджер говорит вам установить брандмауэр следующего поколения для фильтрации входящего и исходящего трафика, но вы не до конца понимаете, как это сделать. Чтобы справиться с поставленной задачей, нужно узнать по каким принципам работают открытые порты, почему они так называются и какие из них нужно фильтровать.
Сетевой брандмауэр – это прекрасный инструмент смягчения последствий, но он не сможет помочь вам корректно настроить правила фильтрации. Конечно, некоторые из них обладают подобной функцией, но они не всегда предлагают пользователю безопасную конфигурацию. Более того, не каждый сетевой брандмауэр сообщит вам обо всех необходимых настройках безопасности уже запущенных системных служб.
Когда вы читаете блог, специальное руководство или статьи, касающиеся сканирования портов и их типов, вы увидите много различных советов. Многие из них будут связаны с тем, что пора закрыть открытые порты. Но зачем вам это делать? Действительно ли необходимо закрывать все открытые порты? Являются ли все открытые порты признаком имеющихся уязвимостей?
В этой статье мы постараемся ответить на все эти вопросы.

Что такое открытый порт?
Слово «порт» имеет два значения:
· отверстие, расположенное сзади или сбоку сетевого устройства (к примеру, порт Ethernet);
· понятие, связанное с IP-адресами и интернет-сервисами (виртуальные порты, которые могут быть «открытыми» (используемыми) или «закрытыми» (неиспользуемыми)).
Интернет-серверы имеют множество активных служб. Например, HTTP-сервер, с помощью которого мы можем открыть страницу определенного сайта в Интернете, или почтовый сервер, который позволяет пользователям отправлять и получать письма по электронной почте. Помимо этого, разработчики используют протоколы передачи файлов, такие как FTPS или SSH, для создания зашифрованных туннелей между компьютерами. Они играют важную роль для безопасного обмена данными между хостами.
Как раз здесь и возникает сама "концепция порта". Порт помогает системам идентифицировать, получать и передавать данные между собой.
Каждый порт имеет свой номер. Например, если он открыт (используется), порт получает номер в диапазоне от 1 до 65 535. Таки да, есть 65 535 возможных портов, которые могут быть присвоены различным службам.
Когда вы устанавливаете операционную систему на свой компьютер или виртуальную машину (скажем, это будет Nginx или Exim), вам понадобится порт для того, чтобы эта служба смогла принимать и отправлять данные по сети.
Как только порт начнет свою работу на определенном номере, вы не сможете запускать другие службы на нем. Например, запуск Apache после того, как вы уже развернули Nginx на порту 80, будет невозможен, поскольку порт уже занят.
Знайте, что всякий раз, когда вы просматриваете страницу в сети, вы подключаетесь к портам 80 (для запросов на основе HTTP) или 443 (для запросов на основе HTTPS). Когда же вы запрашиваете информацию от удаленного SSH-сервера, вы, вероятно, используете порт на номере 22.
Как вы уже знаете, открытые порты помогают сетевым устройствам и операционным системам взаимодействовать друг с другом и передавать информацию между ними соответствующим образом.
Закрытые порты – это порты, которые больше не прослушивают никакие службы. Если вы введете команду «service nginx stop», вы разорвете все установленные соединения. Никто больше не сможет открыть ваш сайт, пока вы не «запустите» (откроете) порт снова.
Открытые порты опасны?
Существует распространенное заблуждение о том, что открытые порты опасны. Многие СМИ, связанные с IT-тематикой, советуют всегда закрывать порты. Однако это может быть некорректно для некоторых сценариев, поэтому неверно считать, что все открытые порты опасны.
Открытые порты существовали с момента возникновения Интернета. Именно они помогали (и помогают до сих пор) вам общаться со своими коллегами, друзьями и семьей, когда вы заходите на определенный сервис.
Поэтому нельзя однозначно сказать, что открытые порты опасны. Более точным будет утверждение о том, что неправильно установленные правила безопасности серверов и сетей, а также уязвимое программное обеспечение приводят к "пробелам" в защите... и только на определенных портах.
Это происходит потому, что открытые порты по умолчанию не опасны. Именно то, что мы делаем с открытыми портами на системном уровне, и именно те параметры, которые мы изменяем в службах и приложениях, работающих на этих портах, приводят к возможности возникновения опасности.
Какие самые распространённые открытые порты на данный момент?
Есть множество сканеров портов. Некоторые из них созданы для решения конкретной задачи, а другие являются лишь компонентом в наборе инструментов для выявления уязвимостей. Независимо от того, какую программу вы выберете, нужно понимать, что сканирование является обязательной практикой для обнаружения открытых портов.
Каковы самые распространённые открытые порты сейчас? Взгляните на список ниже. Это краткая сводка популярных открытых портов, используемых во многих подключенных к сети машинах:
· FTP (20, 21) – это порты, используемые при классическом FTP-соединении между клиентом и сервером.
· SSH (22) – это порт сервера OpenSSH, используемый по умолчанию в большинстве сборок Unix/Linux.
· Telnet (23) предназначен для сервера приложений сети Telnet.
· SMTP (25) используется для ретрансляции сообщений между MTA (агентами передачи почты).
· DNS (53) – это порт, на котором работает DNS-сервер. Одной из самых известных служб, использующих этот порт, является Bind.
· DHCP (67, 68): порт 67 используется для DHCP-сервера, а UDP-порт 68 – для DHCP-клиента.
· HTTP (80) – это порт, назначенный веб-серверам; он непосредственно связан с протоколом передачи гипертекста.
· POP3 (110) – это протокол почтового отделения; один из самых традиционных протоколов, используемых почтовыми клиентами для получения данных с удаленных серверов.
· IMAP (143) – это порт IMAP для установления незашифрованных соединений.
· HTTPS (443) – это порт, используемый для обслуживания всех запросов на основе SSL на сайтах.
Какие порты открыты по умолчанию?
Это полностью зависит от операционной системы, которую вы используете, так как не все ОС запускают одни и те же службы. Например, Windows, macOS и Linux имеют разные базовые службы, поэтому порт, открытый на одной ОС, может быть закрыт на другой.
Список открытых портов по умолчанию может быть огромным в зависимости от операционной системы, ее версии или дистрибутива. Например, компания Apple утверждает, что существует около 132 портов, которые потенциально могут быть использованы во многих ее сервисах.
Запуск полного сканирования Nmap на образе Ubuntu приводит к обнаружению портов, открытых по умолчанию:
root@securitytrails-ubuntu:~# nmap -p 1-65535 localhost Starting Nmap 7.60 ( https://nmap.org ) at 2019-12-03 19:11 UTC Nmap scan report for localhost (127.0.0.1) Host is up (0.0000030s latency). Not shown: 65534 closed ports PORT STATE SERVICE 22/tcp open ssh Nmap done: 1 IP address (1 host up) scanned in 6.54 seconds root@securitytrails-ubuntu:~#
Как вы можете видеть, все сборки Ubuntu 18.x DigitalOcean имеют SSH, включенный по умолчанию, работающий на порту 22, что вполне логично, потому что в противном случае у вас не было бы возможности подключиться к серверу.
CentOS, с другой стороны, по умолчанию имел три открытых порта, что видно на следующем скриншоте:

Как узнать, какие порты открыты в моей системе?
Инструмент, способный провести сканирование портов, — это Nmap.
Чтобы просканировать машину локально, нужно выполнить следующую команду:
nmap -p 1-65535 localhost
Если вы хотите запустить сканирование любой удаленной сети, вы можете сделать это с помощью данной команды:
nmap -p 1-1024 X.X.X.X
*где «X. X. X. X» — это IP-адрес удаленной машины, на которую вы хотите нацелиться.
Вы можете просканировать любой диапазон портов (от 1 до 65535), однако имейте в виду, что чем больше он будет, тем дольше будет протекать сканирование.
Если вы хотите просканировать самые популярные порты, это можно сделать с помощью следующей команды:
nmap --top-ports 20 X.X.X.X
*где «20» — это количество популярных портов, на которые вы хотите нацелиться.
Пример вывода:
[research@securitytrails.com ~]# nmap --top-ports 20 localhost Starting Nmap 7.70 ( https://nmap.org ) at 2019-12-03 16:24 -03 Nmap scan report for localhost (127.0.0.1) Host is up (0.000031s latency). Other addresses for localhost (not scanned): ::1 PORT STATE SERVICE 21/tcp closed ftp 22/tcp closed ssh 23/tcp closed telnet 25/tcp closed smtp 53/tcp closed domain 80/tcp closed http 110/tcp closed pop3 111/tcp closed rpcbind 135/tcp closed msrpc 139/tcp closed netbios-ssn 143/tcp closed imap 443/tcp closed https 445/tcp closed microsoft-ds 993/tcp closed imaps 995/tcp closed pop3s 1723/tcp closed pptp 3306/tcp closed mysql 3389/tcp closed ms-wbt-server 5900/tcp closed vnc 8080/tcp closed http-proxy Nmap done: 1 IP address (1 host up) scanned in 0.50 seconds [research@securitytrails.com ~]#
Однако Nmap – это инструмент на базе терминала, поэтому он подходит только настоящим профессионалам.
Surface Browser™ — это одна из утилит Infosec, которая поможет при создании полной сводки OSINT обо всех ваших интернет-активах. Инструмент даст вам возможность узнать, сколько незащищенной информации о вашем сервисе хранится в открытом доступе и «за кулисами» общедоступного Интернета.
Surface Browser™ покажет вам все открытые порты за мгновенье, без необходимости ожидания или проведения ручного сканирования.
Давайте узнаем, насколько легко определить, какие открытые порты доступны для конкретного доменного имени. В практическом примере мы проверим все доступные открытые порты для linode.com.
Как вы видите, мы нашли много интересной информации (в том числе 9 открытых портов):
· 22 – защищенный shell (SSH);
· 80 – протокол передачи гипертекста (HTTP);
· 443 – протокол передачи гипертекста по протоколу TLS/SSL (HTTPS);
· 21 – FTP;
· 6379 – Redis;
· 11211 – memcached;
· 9200 – WSP;
· 5984 – сервер базы данных CouchDB;
· 990 – FTPS.
Мы нашли много открытых портов, включая такие критические службы, как SSH, Memcached и FTP.
Открытые порты, найденные на поддоменах
Одним из главных видов деятельности, выполняемой исследователями безопасности и пентестерами, является перечисление DNS. Эта практика используется для поиска поддоменов и создания цифровой карты всей онлайн-инфраструктуры.
SurfaceBrowser™ дает возможность получить доступ к полной DNS-карте любого доменного имени, включая все поддомены и точное количество открытых портов на каждом хосте. Сводка данных позволяет пользователю быстро переключаться между всей найденной информацией.

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

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

Social Engineering - Канал посвященный психологии, социальной инженерии, профайлингу, НЛП, Хакингу, Анонимности и безопасности в сети интернет, Даркнету и все что с ним связано. Добро пожаловать ;-)
S.E.Book - Литература социального инженера.
S.E.Oblako - Архив социального инженера.
@Social_Engineering_bot - Бот обратной связи.