Что можно сделать с открытым портом
Как открыть порты на компьютере
Зачем нужно открывать порты?
Проверка порта
Проверить открыт ли тот или иной порт на ПК, можно воспользовавшись специальными сервисами или командной строкой системы. Чтобы сделать это онлайн, потребуется проделать следующее:
Сервис выдаст текущее состояние порта.
Чтобы проверить порт, используя специальную команду вам понадобится:
Перед вами отобразится список открытых на данный момент портов.
Открытие порта в фаерволе
Чтобы настроить порты используя встроенный в систему брандмауэр, потребуется установить правила подключений. Осуществить это можно проделав следующие операции:
В большинстве случаев требуется создать 2 правила – одно для входящих и второе для исходящих соединений.
Те же самые действия нужно проделать с другим протоколом, если приложение для которого вы открываете порт, использует несколько типов соединения.
Настройки маршрутизатора
Открыв доступ в фаерволе, потребуется также изменить настройки маршрутизатора. Для этого нужно осуществить следующие действия:
Обычно это 192.168.1.1 или 192.168.0.1 (точный адрес маршрутизатора можно найти не его панели или в инструкции).
По окончании настройки роутер нужно перезагрузить, после чего порты станут доступны.
Открытие порта в антивирусе
Предоставление доступа в настройках фаервола и маршрутизатора может оказаться недостаточным, так как соединение может блокироваться антивирусным программным обеспечением. Рассмотрим, как можно открыть порт на примере антивируса Касперского. Для этого потребуется проделать следующие действия:
После этого желательно перезагрузить систему. Дополнительно можно добавить приложение, для которого вы настраиваете порт, в исключения, чтобы антивирус его не блокировал.
Процедура доступа к определенному порту не является особо сложной операцией. Действуя в соответствии с данной инструкцией, вы сможете осуществить задуманное без особых проблем.
Как я взломал 40 сайтов за 7 минут (перевод)
Прошлый летом я заинтересовался вопросами информационной безопасности и взлома. Последний год я много играл в wargames, «захват флага», тестирование на проникновение, постоянно совершенствуя навыки взлома и изучая новые способы заставить компьютеры отклоняться от ожидаемого поведения.
Короче говоря, мой опыт ограничивался имитируемой средой, и, считая себя официальным хакером, я никогда не совал нос в бизнес других людей.
Это будет подробная история о том, как я взломал сервер, на котором размещалось 40 (это точное число) веб-сайтов, и о моих находках.
Примечание. Некоторые предварительные знания CS необходимы для понимания технической составляющей статьи.
Друг сообщил мне, что его веб-сайт XSS уязвим, и попросил меня взглянуть. Я попросил у него официальное разрешение на полное тестирование его веб-приложения на его сервере. Ответ был положительным.
В статье я буду ссылаться на сайт моего друга – http://example.com
Первый шаг – найти как можно больше информации о своем враге, пытаясь как можно меньше его тревожить.
На этом этапе мы запускаем наш таймер и начинаем сканирование.
Сканирование завершается по истечении 2 минут.
Множество открытых портов! Судя по тому, что порты FTP (порт 21) и SMB (порты 139/445) открыты, можно предположить, что сервер используется для размещения и совместного использования файлов, а также является веб-сервером (порты 80/443 и прокси на 8080/8081).
При сканировании UDP-порта будет рассмотрено более 1000 портов, если вышеизложенной информации недостаточно. Единственным портом, с которым разрешено взаимодействовать (без учетных данных), является порт 80/443.
Оказывается, путь /admin был «административным инструментом», который позволял аутентифицированным пользователям изменять материал на веб-сервере. Он требует параметры доступа, которых у нас нет (спойлер: gobuster не нашел ничего ценного).
Прошло около 3 минут. Ничего полезного.
Веб-сайт просит нас войти. Нет проблем. Создаем учетную запись с фиктивной электронной почтой, щелкаем по электронной почте подтверждения и входим в систему через несколько секунд.
Веб-сайт приветствует нас, предлагает перейти к профилю и обновить фотографию. Как мило.
Похоже, сайт сделан на заказ. Я собираюсь протестировать уязвимость с неограниченной загрузкой файлов. На моем терминале я выполняю:
Я пытаюсь загрузить «картинку» и – бинго! Загрузчик позволяет загрузить файл exploit.php. Конечно, у него нет эскизов, но это значит, что мой файл где-то загружен.
В конце концов, люди заботятся о безопасности.
Похоже, что webshell готов и работает:
Видим, что веб-сервер запускает perl-скрипты (реально? perl?). Мы берём обратную оболочку perl из нашего любимого cheatsheet, устанавливаем IP/Port и получаем в качестве награды low-privileged оболочку – извините, нет скришота.
5 минут в оценке, и у нас уже есть оболочка с низким уровнем привилегий.
К моему огромному удивлению, на сервере размещался не 1 сайт, а сразу 40 разных. К сожалению, я не сохранил скриншоты каждой детали, но вывод был примерно таким:
Удивительно, но у меня был доступ на чтение ко всем размещенным веб-сайтам, а это означало, что я мог читать весь бэкенд-код сайтов. Я ограничился кодом example.com.
Примечательно, что внутри каталога cgi-admin/pages все скрипты perl соединялись с базой данных mysql как root. Учетные данные для базы данных были в открытом виде. Пусть они будут root:pwned42.
Разумеется, на сервере была запущена MariaDB, и мне пришлось решить эту проблему, прежде чем получить доступ к базе данных. После этого мы выполняем:
И мы находимся в базе данных с привилегиями root.
Через 7 минут у нас есть полный доступ для чтения / записи к содержимому 35 (!) баз данных.
Морально я обязан здесь остановиться и поделиться выводами. Потенциальный ущерб уже огромен.
Что может сделать злоумышленник
Процесс mysql запускался под root, поэтому я решил, что попробовал выполнить \! whoami в надежде получить root. К сожалению, я все еще был apache.
Время отдохнуть. Остановите таймер.
Что может пойти не так?
Я поделился своими выводами и получил разрешение копать глубже.
Прежде чем искать способы повысить свои привилегии до root и иметь возможность причинить огромный потенциальный ущерб, я посмотрел, какие другие интересные файлы мог бы читать, будучи ограниченным пользователем.
Я вспомнил об открытых портах SMB. Это означало, что где-то в папке должна быть другая папка, которая используется в системе среди пользователей. После небольшого поиска в каталоге /home/samba/secure появляется следующее:
Внутри всех этих каталогов были файлы каждого пользователя хостинговой компании. Это включало все виды конфиденциальных данных, среди прочего:
Что может сделать злоумышленник
Потребовалось некоторое время, чтобы пройти через папки и понять, насколько серьезна эта проблема.
Еще один перерыв.
Последний удар
Осмотревшись еще немного как apache, я решил, что пришло время пойти на большую рыбу – получить доступ root. Используя шпаргалки, начинаю перебирать систему.
В процессе исследования на уязвимости я уже перебрал большинство методов и, похоже, не смог найти ничего, что увеличило бы мою точку опоры.
В задачах Capture the Flag, которые я использую для игры, операционная система обычно пропатчена. Это некоторая намеренно неверно настроенная служба, которая в конечном итоге дает вам привилегии root. Однако в реальном мире люди не латают дыры.
Я имею в виду вот что: посмотрите на Equifax (не мог удержаться).
Какой Linux работает на сервере?
Это похоже на старую версию ядра.
Это напоминает вам что-то? Если нет, прочитайте здесь (подсказка: это ОЧЕНЬ серьезно).
Я нашел этот пост в блоге, который указал мне проверить, было ли ядро уязвимым для найденного здесь скрипта.
Временные метки и восстановленные сайты Firefox отредактированы
Игра закончена
Я мгновенно написал электронное письмо, полностью раскрывающее детали и потенциальное влияние каждого шага, как описано выше. Уф.
Что может сделать злоумышленник
На следующий день со мной связался друг (он связался с работающей на сервере компанией) и рассказал, что ошибка в загрузке файлов была исправлена.
Подводя итоги, мы обнаружили следующее:
Наконец, мы злоупотребили непропатченным ядром для получения доступа root.
Решения проблем
Начнем с аплоудера, который дал основной плацдарм. Поскольку бэкенд всего веб-приложения был написан в perl, я не могу предложить решения.
Решение, которое я бы предложил, было бы таким: не использовать perl в 2017 году, но это только мое мнение.
Что касается файловой системы, я рекомендую проявлять большую осторожность при назначении правильных прав доступа к файлам для пользователей в соответствии с принципом наименьших привилегий. Таким образом, даже если низкоприоритетный пользователь, такой как apache, получает доступ, он не может читать конфиденциальные файлы.
Запуск всех веб-сайтов на одном сервере – плохая идея, я не уверен, позволит ли докеризированный подход решить проблему.
Наличие одинаковых учетных данных для всех баз данных – безусловно, плохая идея.
Нежелательно иметь одиночные точки отказа.
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Атака на устройства в локальной сети через уязвимый роутер
Если получен доступ к роутеру, можно ли получить доступ к устройствам в локальной сети? Чтобы ответить на этот вопрос, давайте разберёмся, как работает домашняя локальная сеть.
Как работает домашняя локальная сеть
В домашней локальной сети основой является роутер — довольно сложное сетевое устройство. Это устройство обеспечивает работу локальной сети. При подключении нового устройства к локальной сети роутера, он с помощью протокола DHCP присваивает новому устройству IP адрес. В качестве диапазона IP адресов в домашних сетях обычно используются 192.168.1.0/24, 192.168.0.0/24 или 192.168.100.0/24.
То есть у вашего компьютера или телефона, подключённого к Интернету через роутер, имеется локальный IP адрес.
Возможно вы уже слышали про NAT и даже знаете, что эта технология позволяет Интернет-провайдеру использовать один единственный внешний (белый) IP адрес для всех или для множества его клиентов. Но NAT используется не только на уровне провайдера Интернет услуг, но и уже в вашем роутере. Рассмотрим NAT чуть подробнее.
NAT — это технология, которая позволяет множеству устройств выходить в Интернет используя один и тот же IP адрес. Кстати, в вашей локальной сети, в которой имеется роутер, уже применяется NAT — именно благодаря этому все ваши устройства могут выходить в Глобальную сеть и не нужно каждому из них иметь внешний IP.
Как вы понимаете, это часто используемая технология. Возможно, вы много лет ею пользуетесь, даже не зная про неё. Она действительно приносит очень много пользы, но у неё есть недостаток — она позволяет делать подключения «в одну сторону». То есть если ваш компьютер инициализировал подключение к Интернету, то он отправит его роутеру, роутер сделает две вещи: 1) запомнит, что запрос пришёл с определённого устройства и 2) отправить этот запрос в Интернет. Когда придёт ответ, роутер всё ещё «помнит», что этот запрос был сделан для определённого устройства в локальной сети, и отправит ответ именно этому устройству. И так происходит каждый раз.
Но вот если на роутер придёт новый HTTP запрос из Глобальной сети (не ответ на запрос, а именно новый запрос), то роутер банально не знает, для кого в локальной сети он предназначен (если не настроена переадресация портов). Поэтому с этим поступившим запросом роутер ничего не делает (источник).
Можно ли получить доступ к компьютеру в локальной сети, если есть доступ к роутеру?
Вроде бы, ответ очевиден — технология NAT не даёт такой возможности в принципе: подключение к локальным устройствам, у которых нет белого IP, а есть только локальный IP вида 192.168.0.*, невозможен.
Но я начал с того, что роутер это весьма сложное сетевое устройство. И это устройство поддерживает множество функций по настройке сети, в частности оно поддерживает:
Forwarding портов
Forwarding, который ещё называют «переадресацией» портов, «проброской портов», «перенаправлением портов» или «Port mapping» (сопоставление портов) позволяет делать очень замечательную вещь — с его помощью устройства за NAT, то есть устройство в локальной сети, имеющее локальный IP адрес, могут стать доступными глобально. Правила могут быть настроены весьма гибкой, можно сделать пересылку нескольких портов на один, или с одного на несколько, или несколько на несколько и так далее. Но для наших целей больше всего интересно следующее правило, которое словами можно выразить так:
Запрос, который пришёл на порт роутера 22 перенаправить на порт 22 устройства с IP адресом 192.168.0.5.
Номера портов необязательно должны быть одинаковыми, поэтому правило может быть таким:
Запрос, который пришёл на порт роутера 50080 перенаправить на порт 80 устройства с IP адресом 192.168.0.5.
В результате мы получим доступ к порту 80 (его обычно прослушивает веб-сервер) устройства в локальной сети 192.168.0.5.
Это означает, что мы можем получить доступ к любому открытому порту и запущенному на нём службе в локальной сети! Это может быть веб-сервер, SSH, FTP, сетевые протоколы Windows и т.д.
Просмотр устройств локальной сети. Настройка статических адресов в локальной сети
Чтобы выполнить атаку на устройства в локальной сети через уязвимый роутер, нам нужно знать, какие у этих устройств локальные IP адреса.
Рассмотрим пример. В локальной сети провайдера есть роутер с IP адресом 100.69.64.23 к которому получен административный доступ.
Все (или практически все) роутеры могут показать информацию о подключённых в данный момент клиентах. Эта информация может быть:
Например, на этом роутере информация собрана на странице DHCP Clients List:
Данный роутер показывает всего лишь MAC-адрес и локальный IP адрес устройств. Многие роутеры кроме этой информации также показывают, является ли это мобильным устройством или настольным компьютером. Поскольку здесь такой информации нет, то мне нужно самостоятельно догадаться о типе устройства на основе его производителя. Производителя устройства можно узнать по MAC адресу на этом сервисе: https://suip.biz/ru/?act=mac
Например, для MAC 00:80:92:c4:6a:f9 найдена следующая информация:
Меня не интересуют мобильные телефоны и планшеты — как правило, на них все порты закрыты. Меня интересуют ноутбуки и настольные компьютеры, поскольку на них могут быть запущены службы, которые прослушивают порты.
Из всех устройств самыми интересными мне показались следующие
Причина в следующем:
Если атака планируется длительной, то определённым устройствам можно присвоить статичные IP адреса. Дело в том, что проброска портов настраивается относительно IP адреса. А целевое устройство через некоторое время может сменить IP адрес на произвольный. Если это случиться, то правила переадресации портов будут работать — просто теперь они будут отправлять пакеты другому устройству, которое заняло этот IP адрес.
Чтобы этого избежать можно привязать IP к MAC-адресу — мне ещё не встречались роутеры, которые не умеют этого делать. Настройка выполняется достаточно просто.
Настройка переадресации портов
В зависимости от модели роутера эта вкладка может называться
Например, на рассматриваемом роутере эту вкладку я нашёл по пути Application → Port Forwarding:
Всего портов 1-65535 и роутеры позволяют делать переадресацию диапазонов, то есть 65 тысяч портов не придётся настраивать по одному.
Но есть очень важное замечание — мы не можем настроить переадресацию того порта, на котором работает веб-сервер роутера. То есть если роутер открывается на 80 порту, то этот порт должен стать исключением. Иначе произойдёт следующее: ни мы, ни даже владелец роутера больше не сможем попасть в панель администрирования роутера пока не будут сброшены настройки на заводские.
Обратите внимание, что некоторые роутеры работают не на 80, а на 8080 или 443 порте.
Итак, если веб-интерфейс роутера работает на 80 порту и мы хотим получить доступ к локальным ресурсам устройства с IP 192.168.1.2, то нам нужно установить следующие три правила:
Первые два правила с диапазонами (надеюсь) очевидны. Третьим правилом мы перенаправляем запросы, пришедшие на порт 65535, на 80 порт локального компьютера, поскольку там может быть веб-сервер или что-то другое интересное.
Начнём с того, что сделаем контрольный замер, какие именно порты открыты:
Эта команда покажет открытые порты на роутере:
Добавляем первое правило:
Заново сканируем порты:
Констатируем — нас постигла неудача. 80-й порт — это порт самого роутера, а на устройстве с IP 192.168.1.2 просканированные порты закрыты.
Не отчаиваемся — переделываю все правила на переадресацию портов на IP 192.168.1.3:
И опять сканируем порты:
Поясню, хотя команда Nmap одна и та же, но на самом деле в предыдущий раз мы сканировали порты устройства в локальной сети с IP 192.168.1.2. А последняя команда уже сканирует порты на 192.168.1.3.
А вот здесь нам повезло:
Напомню, что все эти порты, кроме 80, открыты на устройстве, у которого даже нет белого IP адреса, у него IP адрес 192.168.1.3.
А как проверить 80 порт на 192.168.1.3? Делаем это так:
Порт оказался закрыт.
Чтобы собрать информацию об отрытых портах, изучим их баннеры:
Не очень интересно — видимо, это всё функции связанные с принтером.
Чтобы подключиться к HTTPS порту, достаточно открыть ссылку в веб-браузере: https://100.69.64.23:443
А там мы видим интерфейс многофункционального устройства (принтер-копер-сканер) MFC-J5910DW:
Ещё раз для тех, кто потерялся, это устройство с IP адресом 192.168.1.3!
Также я сумел подключиться к FTP:
Заключение
Это самый универсальный способ атаки на локальную сеть с уязвимым роутером, поскольку практически все роутеры поддерживают переадресацию портов.
Другие варианты атак:
Риски открытия портов маршрутизатора для игры в онлайн и как этого избежать
В некоторых случаях для правильной работы программы или игры требуется, чтобы на маршрутизаторе были открыты определенные порты, чтобы они были доступны из Интернета. Однако по возможности рекомендуется держать порты закрытыми. Киберпреступники сканируют порты на предмет уязвимостей и способов проведения атак. Случается так, что иногда, чтобы использовать программу или играть в сети, нам нужно открыть порты. Здесь мы объясним, насколько опасно открывать порты маршрутизатора для игры в сети, а также, в случае, если мы должны это сделать, как мы должны это делать.
Когда мы говорим о транспортном уровне модели TCP / IP, мы должны иметь в виду два типа протоколов: TCP и UDP. Оба могут использоваться при открытии портов.
Как открывать порты и зачем их открывать?
Первое, что нам нужно сделать, чтобы открыть порты маршрутизатора для игры, или что нам нужно, это узнать IP-адрес нашего маршрутизатора. Мы сделаем это с помощью окна командной строки, набрав эту команду:
Затем появится экран, на котором Шлюз по умолчанию это IP нашего роутера.
Затем мы записываем его в интернет-браузере и вводим свой логин и пароль для входа в конфигурацию роутера. Затем мы ищем раздел, который обычно называется NAT, виртуальный сервер или перенаправление портов.
Опасно ли открывать порты роутера для игры?
В этом смысле, открывая порты маршрутизатора для игр или программ, мы должны убедиться, что диапазон как можно меньше. Чем меньше возможностей атаковать мы даем киберпреступникам, тем в большей безопасности мы будем.
Вот еще опасные порты TCP и UDP и как мы можем защитить себя. Эти порты, которые мы вам показали, являются самыми простыми и первыми, которые проверяет киберпреступник. Поэтому, если мы заблокируем все, кроме тех, которые используются и нужны нам, у нас будет очень защищенная система. Помните, что если у нас есть открытый порт, это может быть первым шагом к вторжению.
Проверить открытые порты онлайн
Далее пора проверить открытые порты на вашем роутере. Для этого воспользуемся сайтом теста скорости. Там у них естьтест порта чтобы быстро и легко проверить это онлайн.
После загрузки сети мы помещаем наш общедоступный IP-адрес и устанавливаем порт или порты, которые хотим проверить. Этот инструмент позволяет вам проверять диапазоны портов, а также порты, разделенные запятыми. Наконец, вот мои результаты, в которых вы можете видеть, что порты 21, 22 и 23, о которых мы говорили ранее, закрыты, что является хорошей новостью.