Главная страница
Навигация по странице:

  • Определение типа операционной системы

  • по реализации протокола TCP/IP.

  • по ответам служб.

  • Определение имен работающих служб

  • 162.241.30.65

  • 0 • *

  • IP Address and Domain Name Geolocation Lookup Tool

  • Hostname

  • Continent Code

  • Continent Name

  • Country Code (ISO 3166-1 alpha-2)

  • Country Code (ISO 3166-1 alpha-3)

  • Country Name

  • Country Flag

  • WEb практикум. Web'cepbep


    Скачать 4.76 Mb.
    НазваниеWeb'cepbep
    АнкорWEb практикум
    Дата22.01.2023
    Размер4.76 Mb.
    Формат файлаdocx
    Имя файлаWEB.docx
    ТипДокументы
    #898678
    страница3 из 18
    1   2   3   4   5   6   7   8   9   ...   18

    Исследование

    Допустим, что у вас на примете есть сервер или компьютер, который нужно взло­мать или протестировать на защищенность от взлома. С чего нужно начинать? Что сделать в первую очередь?

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

    Самое первое, с чего начинается взлом или тест ОС на уязвимость, — сканирова­ние портов. Для чего? А для того, чтобы узнать, какие службы (в Linux это демо­ны) установлены в системе. Каждый открытый порт — это программа, установ­ленная на сервере, к которой можно подключиться и выполнить определенные действия. Например, на 21-м порту работает служба FTP. Если вы сможете к ней подключиться, то вам станет доступной возможность скачивания и загрузки фай­лов. Но это только если вы будете обладать соответствующими правами на уда­ленном сервере.

    Сначала следует просканировать первые 1024 порта. Среди них очень много стан­дартных служб типа FTP, HTTP, Telnet и т. д. Открытый порт — это дверь с замоч­ком для входа на сервер. Чем больше таких дверей, тем больше вероятность, что какой-то засов не выдержит натиска и откроется, поэтому на сервере должно быть запущено только то, что необходимо.

    Будет лучше, если вы установите на сервер только те программы, которые реально будут использоваться. Все остальное лучше не запускать, запрещать, а лучше во­обще не устанавливать, чтобы хакер не смог самостоятельно их запустить и ис­пользовать.

    У хорошего администратора открыты только самые необходимые порты. Напри­мер, если это web-сервер, не предоставляющий доступ к электронной почте, то нет смысла держать почтовые службы. Должен быть открыт только 80-й порт, на кото­ром как раз и работает web-сервер. Все остальные порты должны быть не просто закрыты сетевым экраном, а лучше, если соответствующие службы совсем не будут установлены.

    Распространенная ошибка: установлю на всякий случай все, просто не буду запус­кать или прикрою сетевым экраном. Это очень серьезная ошибка, которую я часто вижу у программистов. Им лень тонко настраивать нужные сервисы, им лень смот­реть что именно нужно, а что нет. Хочется просто чтобы все работало и скорей приступить к программированию.

    Если хакер проникнет на вашу систему, то он запустит остановленную службу или приоткроет сетевой экран, чтобы воспользоваться уже запущенной. Я об этом гово­рю уже очень давно, и то, что Microsoft движется в этом направлении, свидетельст­вует о том, что я верно мыслю. Понимаю, что это не я подсказал сотрудникам Microsoft, что не нужно устанавливать лишнее, но это говорит о том, что задумы­ваюсь об этом не только я. Сначала IIS (Internet Information Server) стал устанав­ливаться на компьютеры в минимальной конфигурации. Теперь и MS Windows Server устанавливается в минимальной конфигурации, а вы можете добавлять по­том только нужные вам роли и только нужные вам программы.

    Хороший сканер портов определяет не только номер открытого порта работающего на удаленной системе сервиса, но и показывает название работающей на нем служ­бы. Жаль, но очень часто показывают не настоящее название, а только имя возмож­ного сервера. Так, для 80-го порта будет показано "http". Если сканер не показывает имен служб, то в ОС Windows их можно посмотреть в файлах protocol и services из каталога C:\WINDOWS\system32\drivers\etc. Просто откройте их в Блокноте или лю­бой другой программе просмотра текстовых файлов. В результате вы увидите что- то похожее на следующий список:


    echo

    7/tcp










    echo

    7/udp










    discard

    9/tcp

    sink null







    discard

    9/udp

    sink null







    systat

    11/tcp

    users

    #Active users




    systat

    11/tcp

    users

    #Active users




    daytime

    13/tcp










    daytime

    13/udp










    qotd

    17/tcp

    quote

    #Quote of the

    day

    qotd

    17/udp

    quote

    #Quote of the

    day

    Файл имеет следующую структуру:

    <служба> <номер порта>/<протокол> [псевдонимы...] [#< комментарий>]





    Но не забывайте, что это только описание стандарта, который легко нарушить. Ад­министратор без проблем может запустить web-сервер не на 80-м порту, а на 21-м, и сканер портов напишет нам, что это FTP-сервер.

    Остановитесь и посмотрите сейчас файл services. Здесь описаны наиболее распро­страненные на данный момент службы и порты, на которых они работают. Если вы еще не знакомы с этими номерами, то следует хотя бы что-то из этого оставить в памяти, чтобы знать потом, что искать на атакуемой системе. Я рекомендую обра­тить внимание и запомнить, что на портах 1433 и 1434 протоколов TCP и UDP ра­ботает Microsoft SQL Server и Microsoft SQL Monitor. На порту 1512 работают WINS (Microsoft Windows Internet Name Service, служба имен интернета для сетей Windows), которая далеко не без изъяна. Я весь файл приводить не буду, потому что он большой, а вы и без меня сможете в любой момент его посмотреть.

    Но существуют программы, которые не доверяют стандарту и проверяют получен­ную информацию самостоятельно. Как это определить? Есть несколько способов:

    • по строке приветствия, которая возвращается при подключении к порту. Боль­шая часть служб при подключении возвращает сообщение, которое содержит название и версию службы. Позже мы еще будем говорить о том, что это сооб­щение может быть подделано;

    • по ответу на подключение или по ответу на команду. Например, подключив­шись к 80-му порту, можно попробовать отправить серверу HTTP-команду, и если сервер ответит корректно, то перед нами именно web-сервер. Если мы уви­дим ошибку, то нас пытаются обмануть;

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

    После того как мы определили состояние первых 1024 портов, можно начинать сканировать порты свыше этого. Здесь стандартные службы встречаются редко. Зачем же тогда сканировать? А вдруг кто-то до вас уже побывал на этом месте и оставил открытую дверку или установил на сервер троянскую программу. Боль­шинство троянских программ держит открытыми порты свыше 1024, поэтому если вы администратор и нашли открытый порт в этом диапазоне, необходимо сразу на­сторожиться. Ну а если вы взломщик, то нужно узнать имя троянской программы и найти для нее клиентскую часть, чтобы воспользоваться ею для управления чужой машиной.

    Среди служб, использующих порты выше 1024, встречаются и некоторые коммер­ческие, например СУБД (система управления базами данных). Дело в том, что но­мера из первой тысячи уже давно распределены и использовать какой-то из этого диапазона достаточно проблематично, поэтому современные службы эксплуатиру­ют весь диапазон номеров до 65 535.

    Нередко можно увидеть даже web-службы, которые работают на порту 8080. По умолчанию используется 80-й порт, но когда по каким-то причинам его не получа­ется задействовать, это число удваивают до 8080.

    Первые 1024 порта в ОС Linux обладают еще одним очень важным свойством: за­пустить службу, работающую на таком порту, может только пользователь с права­ми администратора (для UNIX-систем это пользователь с правами root). Таким об­разом система гарантирует, что службы, работающие на портах ниже 1024, запу­щены администратором. Они являются наиболее критичными с точки зрения безопасности сервера, поэтому рядовые пользователи не должны иметь права их запускать.

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

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

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

    1. Определение типа операционной системы

    Сканирование — это всего лишь начальный этап, который дает немного информа­ции для размышления. Ведь мы рассматриваем безопасность web-серверов, а зна­чит, нас больше всего интересует 80-й порт. Тогда зачем нам нужно сканировать остальные? Это поможет узнать, какая ОС установлена на сервере. Ведь если на сер­вере работает MS SQL Server, то там, скорее всего, стоит Windows.

    Желательно иметь сведения о версии, но это удается выяснить не всегда, да и на первых порах изучения системы можно обойтись без конкретизации. Глав­ное — иметь четкое представление об используемой платформе: Windows, Linux, BSD, Mac OS или др. От этого зависит очень многое:

    • какие программы могут быть установлены на сервере;

    • какие команды можно выполнять;

    • где находится информация о пользователях и их паролях;

    • где может быть установлена ОС (в какой папке или в каком разделе);

    • какие существуют уязвимости для данной ОС.

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

    • по реализации протокола TCP/IP. Это низкоуровневый метод, который рабо­тает на уровне пакетов, передаваемых от клиента к серверу. В различных ОС по- разному организован стек протоколов. В основном этот вывод расплывчатый: Windows или Linux. Точную версию таким образом узнать невозможно, потому что в Windows 8 и 10 реализация протокола практически не менялась. В таком случае будет сложно определить разницу. Даже если программа определила, что на сервере установлен Linux, то какой именно дистрибутив, сказать будет слож­но. И поэтому такая информация — это только часть необходимых данных для взлома;

    • по ответам служб. Допустим, что на сервере жертвы есть анонимный доступ по FTP. Вам нужно всего лишь присоединиться к нему и посмотреть сообще­ние при входе в систему. По умолчанию в качестве приглашения используется надпись типа: "Добро пожаловать на сервер FreeBSD4.0, версия FTP-клиента Х.ХХХ". Если вы такое увидели, то еще рано радоваться, так как неизвестно, правда это или нет. Хороший администратор изменяет строку приветствия, чтобы не упрощать взломщику жизнь. Могут не просто изменить, но и вводить в заблуждение, когда на Windows-сервере появится приглашение, например Linux. В этом случае злоумышленник безуспешно потратит очень много вре­мени в попытках взломать Windows, стараясь использовать ошибки Linux. По­этому не очень доверяйте надписям и старайтесь их перепроверить другими способами;

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

    Чтобы вас не обманули, обязательно обращайте внимание на используемые на сер­вере службы. Например, в Linux, скорее всего, не будут работать web-страницы, созданные по технологии ASP. Такие вещи подделывают редко, хотя это и возмож­но — достаточно использовать расширение asp для хранения PHP-сценариев и пе­ренаправлять их интерпретатору PHP. Таким образом хакер увидит, что на сервере работают файлы ASP, но реально это будут PHP-сценарии.

    1. Определение имен работающих служб

    Определение типа ОС — это только начальный этап. После этого переходим к оп­ределению имен служб, которые работают на сервере. Если открыт 80-й порт, то необходимо узнать, какой установлен web-сервер: Apache или IIS. От используемой службы и ее версии зависит, как ее можно взламывать. Например, некоторые вер­сии определенных служб могут содержать одну ошибку, а другие версии — другую ошибку. А бывают даже случаи, когда ошибок вообще нет. Хотя нет, таких случаев практически не бывает. Ошибки, скорее всего, есть, просто их еще никто не нашел, и нужно поискать или подождать, когда найдут другие.

    Иногда хакеры определяют версию ОС или установленных служб по наличию ошибок. Например, если web-сервер IIS версии 5.0 содержал определенную ошибку при получении слишком большого пакета, то можно попытаться отправить такой пакет, и если в ответ мы получим ошибку, то перед нами именно IIS 5.0. Вроде бы все хорошо и метод определения достаточно точный, но не совсем. Дело в том, что наличие ошибки может зависеть и от конфигурации ОС или самой службы. Извест­ная вам ошибка может проявляться только при определенных условиях, и если ошибка не проявилась, то, возможно, не соблюдены необходимые условия (см. разд. 1.3.4).

    Защищающая сторона должна дать противнику как можно меньше информации, чтобы у него было меньше возможности взломать сервер. Да, прятать нужно не только название ОС, но и названия служб. Например, если подделать Apache под IIS, то хакер будет пытаться взломать не тот web-сервер, используя не те програм­мы, что усложнит его задачу.

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

    В случае с web-серверами должен работать как минимум web-сервер, который чаще всего откликается на портах 80, 443 или 8080. Чтобы проверить, нужно сначала уз­нать реальный IP-адрес сайта, с которому мы можем подключиться. Самый простой способ узнать IP — выполнить ping с флагом -f:

    ping -f flenov.ru

    В результате вы должны увидеть что-то типа: flenov.ru [162.241.30.65] with 32 bytes of data:

    Reply from 162.241.30.65: bytes=32 time=164ms TTL=48

    Для некоторых настроек ping может не работать. В таких случаях можно выпол­нить команду nslookup c параметром class=A и указанием домена: nslookup class=A flenov.ru S e rve r: UnKnown

    Address: 162.241.30.65

    Итак, мы нашли IP-адрес 162.241.30.65. Почему именно IPv4 адрес? В принципе можно работать и с 6-й версией, просто из личного опыта могу сказать, что про 4-ю версию проще найти информацию в Google. Сейчас почти все сайты имеют адрес 4-й и 6-й версии, и хотя нам уже давно обещали переход на 6-ю, это произойдет еще не скоро, они оба будут сосуществовать вместе.

    Теперь надо узнать чуть больше информации про этот адрес. Вбиваем в Google этот адрес или воспользуемся следующей ссылкой: https://ipgeolocation.io/browse/ip/ 162.241.30.65. В результате вы должны увидеть что-то похожее на рис 1.1.


    IPGaolocjbon Information all' К

    +

    -ax

    <- С *pg*oloc«ionio

    306$

    0 • * :

    iii Ар*»» ■ Ww* ■ D«




    Oth#. bookmark.

    (®>

    Products

    IP Location Pricing Documentation Blog Sign Up Sign In

    0

    ipgeolocation










    IP Address and Domain Name Geolocation Lookup Tool







    Enter any IPv4. IPv6 address or domain name:




    162 241 30 65

    IQ.




    IP

    162.241.30.65




    Hostname

    box5919. bluehost.com




    Continent Code

    NA




    Continent Name

    North America




    Country Code (ISO 3166-1 alpha-2)

    US




    Country Code (ISO 3166-1 alpha-3)

    USA




    Country Name

    United States




    Country Flag




    I
    1   2   3   4   5   6   7   8   9   ...   18


    написать администратору сайта