Rambler's Top100

Берегите Ваши компьютеры, или зачем хакеру нужна информация о Вашей операционной системе

Алексей Волков, Вячеслав Семенов

Кто осведомлен, тот вооружен.

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

«OS». Как много в этом звуке…

Сканирование – вещь хорошая. Хакер, как лазутчик, пробирается в стан врага (атакуемого компьютера) и пытается выяснить, где фельдмаршал (системный администратор) допустил оплошность и создал плохие укрепления. Однако мало обнаружить слабое место – нужно его еще и атаковать. А что, если это ловушка, и там притаилась армия солдат, готовых насадить любого диверсанта на штыки? То же самое может произойти и с хакером, который собрал недостаточно информации и попытался прорваться через обнаруженный им открытый порт.

«А какую еще информацию хакер может получить о моем компьютере?» - спросите вы. Ответ прост – ЛЮБУЮ. Вопрос лишь во времени и средствах. Для осуществления взлома нужно знать минимум две вещи: открытые порты и тип и версию операционной системы (ОС) атакуемого компьютера. Чем точнее определен тип и версия ОС, тем эффективней будет выполнен взлом.

Приведем пример. Вы просканировали порты сервера и обнаружили, что его 139-й порт открыт. На основании этого признака можно предположить, что на компьютере установлена одна из версий ОС Windows (а почему бы и нет?). С выражением радости на лице вы запускаете «нюк», снова сканируете сервер и… НИЧЕГО. Ничего не произошло, сервер по-прежнему работает.

Почему так получилось? Вы ошиблись. На сервере установлена ОС Linux, а на нее «нюки» не действуют. Но если точно определить тип и версию ОС сервера (например, Linux kernel 2.0.35 или Solaris 2.51), то можно соответствующим образом скоординировать свои действия. Достаточно порыскать по Интернету пару часов и поискать последний «эксплойт» для взлома обнаруженной вами ОС (exploit – это готовый сценарий ваших действий; пишется знающими людьми для тех, кто не хочет рыться в теории и немедленно рвется в бой).

Как видите, все очень просто. Остался один нюанс – как же, в конце концов, определить операционную систему? Об этом мы и хотим вам рассказать. Рассмотрим один из наиболее эффективных методов получения подобного рода информации, использующий механизм опроса стека TCP/IP удаленного компьютера. Большую часть рассматриваемых методов можно применить, используя операционную систему Linux или другую UNIX подобную систему. Однако защита от атак актуальна для любой операционной системы, поэтому мы надеемся, что статья будет полезна и пользователям Windows.

На ловца - и зверь бежит

Вы, наверное, думаете: «Ну вот, сейчас разведут демагогию о Линуксах, Юниксах и другой чепухе. Кому это надо?». Мы постараемся максимально упростить материал (как у нас это получится – судить вам, дорогие читатели).

Как вы думаете, кто может по доброй воле дать вам самую достоверную информацию об операционной системе какого-нибудь сервера? Правильно. Сам сервер. Удивительно, но этот метод определения операционной системы остается эффективным и по сей день:

Playground~> telnet hpux.u-aizu.ac.jp

Tryin 163.143.102.12 ...

Connected to hpux.uaizu.ac.jp.

Escape character is ‘^]’.

HP-UX hpux B.10.01.A 9000/715 (ttyp2)

login:

Забавно, правда? Не имеет смысла прибегать к различным ухищрениям, если сервер сам сообщает о своей ОС! Основная масса разработчиков ОС поставляют свои продукты именно с такими заголовками, а многие системные администраторы забывают их отключить. Но даже если вывод заголовка отключен, большинство прикладных программ выдадут информацию, находящуюся в заголовке ОС хоста по первому требованию (если администратор не позаботился об отключении этой возможности). Например, FTP-сервер:

Payfones> telnet ftp.netscape.com 21

Trying 207.200.74.26 ...

Connected to ftp.netscape.com.

Escape character is ‘^]’.

220 ftp29 FTP server (UNIX(r) System V Release 4.0) ready.

Далее, применив команду SYST, вы можете получить более подробную информацию:

SYST

215 UNIX Type: L8 Version SUNOS

Кроме того, если имеется доступ к FTP, вы можете просмотреть bin-файлы в каталоге /bin/ls и определить, в какой ОС они используются. Аналогичную информацию можно получить и от WEB-сервера:

Playground> echo ‘GET / HTTP/1.0\n’ | nc hotboot.com 80 | egrep ‘^Server:’

Server: Microsoft-IIS/4.0

Playground>

Другие методы предусматривают просмотр базы данных сервера службы DNS (неэффективный метод, поскольку только абсолютные «чайники» станут размещать эту информацию на DNS-сервере).

Еще раз о пользе сканирования

Хорошо, когда все получается! Однако в некоторых случаях определить тип ОС не так-то просто. Многие методы сканирования, рассмотренные нами в прошлый раз [1], позволяют в той или иной мере сделать вывод относительно установленной на атакуемом компьютере операционной системе. В этом вы сейчас убедитесь.

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

В дальнейшем, исследуя реакцию сервера с неизвестной ОС с использованием накопленной статистики, можно определить не только тип, но и версию установленной на сервере ОС. Например, возможно точно отличить Solaris 2.4 от Solaris 2.50 или Linux 2.0.30 (для всех Linux указывается версия ядра) от Linux 2.0.35. Для того, чтобы вы имели более четкое представление об этом, приведем основные методы исследования ОС сервера, не вдаваясь в их технические подробности. Чтобы вынудить сервер послать нам необходимый для анализа пакет, можно использовать следующие воздействия:

1.             TCP-пакет с установленным флагом FIN;

2.             Группа TCP-пакетов с установленным флагом SYN;

3.             Группа (8 и более) SYN-пакетов с несуществующим IP-адресом, указанным в поле Source IP-заголовка;

4.             TCP-пакет с установленным флагом SYN и первым битом поля Reserved (флаг BOGUS);

5.             TCP-пакет с установленными флагами SYN|FIN|PSH|URG;

6.             TCP-пакет с установленным набором опций;

7.             Группа UDP-пакетов.

При получении ответа от сервера сохраняем пакет и приступаем к его анализу. Что же  можно «вытянуть» из пакета такого, чтобы хоть как-то охарактеризовать операционную систему, по каким признакам она определяется? Перечислим некоторые из признаков:

1.            Наличие (большинство ОС) или отсутствие (Windows, BSDI, CISCO, HP/UX, MVS, IRIX) RST-пакета в качестве ответа на воздействие 1;

2.            Сохранение поля Reserved (Linux до 2.0.35) в ответе на воздействие 4;

3.            Закон изменения Initial Sequence Number ОС хоста (определяется при анализе поля ISS ответа (TCP SYN|ACK пакета) на воздействие 2):

-         постоянные приращения (старые версии UNIX);

-         случайные приращения (новые версии Solaris, IRIX, FreeBSD, DigitalUNIX, Cray);

-         случайные значения (Linux 2.0.x, OpenVMS, новые версии AIX);

-         время-зависимые приращения (Windows);

-         постоянный (концентраторы 3Com, принтеры Apple LaserWriter).

4.            Значение поля Window ответа (TCP-пакета): 0x3F25 у AIX, 0x402E у Windows NT5, OpenBSD, FreeBSD и т.д.;

5.            Значение поля ACK ответа (TCP-пакета) на воздействие 5;

6.            Значение, число и порядок следования параметров поля Options в заголовке TCP-пакета (ответ на воздействие 6);

7.            Способность ОС противодействовать «затоплению» SYN-пакетами (воздействие 3);

8.            Состояние флага DontFragment IP-заголовка;

9.            Порядок перекрытия IP-фрагментов;

10.       Скорость генерирования и формат ICMP-сообщений Port Unreachable (ответ на воздействие 7).

Используя эти методы, можно составить приблизительную характеристику операционной системы сервера. Однако на практике невозможно различить ОС Windows 95, Windows 98 и Windows NT всех версий, несмотря на то, что Windows 98 вышла позже Windows 95 на 4 года. Этот факт позволяет сделать вывод о том, что стек TCP/IP, положенный в основу Windows 95, был скопирован в Windows NT 4.0 и, может быть, слегка изменен в Windows 98. Поэтому, определив ОС сервера как Windows95/NT, нам достаточно опробовать известные методы атаки на эти ОС (Ping of Death, WinNuke, Teardrop, Land). Тем самым работа сервера так или иначе будет нарушена.

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

Как это делается

Если вы внимательно читали предыдущую главу, вы не могли не заметить то, что методы сканирования портов и определения операционной системы в основном одни и те же. Разница заключается в анализируемых данных ответа сервера. Поэтому ничто не мешает хакеру как бы «заодно» узнать и про операционку компьютера, который он сканирует. Эта возможность реализована и в сканере Nmap (см. рис.1).

Рисунок 1: Сканер Nmap. Помимо своей непосредственной задачи, успешно определяет и операционную систему сканируемого хоста.

Рассмотрим реализацию метода исследования ОС удаленного хоста путем комплексного опроса его TCP/IP стека, называемым иначе методом снятия “отпечатков” стека TCP/IP. Для определения ОС удаленного хоста, версия которой неизвестна, необходимо иметь определенную информацию о том, как ОС известных версий реагируют на определенные виды запросов, описанных выше, иными словами - составить “отпечаток” стека TCP/IP операционной системы. Для этого необходимо удаленный либо локальный сервер, тип и версия ОС которого заранее известны, протестировать всеми описанными выше способами, проанализировать результаты тестов и на основе полученных данных составить общую характеристику (или т.н. “отпечаток”) стека TCP/IP сервера, привязав его к конкретному типу и версии ОС.

Алгоритм получения отпечатка стека TCP/IP следующий. Вначале проводится сканирование портов удаленного компьютера с целью определения открытых портов и служб, функционирующих на исследуемом сервере. Затем проводится несколько тестов, поэтапно выполняющих опрос стека TCP/IP удаленного компьютера с целью выявления рассмотренных выше признаков. На основе полученных от хоста ответов составляется отпечаток, который затем сравнивается с уже имеющейся базой отпечатков, и принимается решение о типе и версии ОС исследуемого сервера.

Для получения «отпечатка» достаточно определить:

1.             Закон изменения Initial Sequence Number;

2.             Параметры TCP-опций;

3.             Метод обработки NULL-пакета (пакета без флагов);

4.             Метод обработки SYN|FIN|PSH|URG-пакета;

5.             Метод обработки FIN|PSH|URG-пакета на закрытый порт;

6.             Метод обработки ACK-пакета;

7.             Метод обработки ACK-пакета на закрытый порт;

8.             Метод обработки SYN-пакета;

9.             Формат ICMP-сообщения Port Unreachable.

Довольно теории! Даешь практику!

Вы, наверное, устали уже от всех этих ACK’ов, SYN’ов и тому подобного. Самое время разбавить немного теоретический материал практическим примером. Представьте себе ситуацию, что сосед поместил ваш почтовый адрес в список рассылки рекламного сервера, и теперь ваш почтовый ящик каждый день раздувается до размеров дирижабля от рекламы. Пробираясь через завал рекламной чепухи, три часа вы рыскали по рекламному серверу и нашли не на шутку замаскированный пункт «unsubscribe» (отмена подписки). Грозно сопя, вы удаляете себя из списка рассылки и решаетесь на месть. Предположим, что вы не знаете, какая операционная система установлена на машине обидчика. Сначала, сканируем порты.

Starting nmap V. 2.53

Interesting ports on dialup15.inetprov.ru (195.161.152.4):

Port          State    Protocol

21 open                 tcp

23 open                 tcp

25 open                 tcp

53 open                 tcp

79 open                 tcp

80 open                 tcp

110           open                 tcp

111           open                 tcp

113           open                 tcp

119           open                 tcp

513           open                 tcp

540           open                 tcp

Nmap run completed – 1 IP address (1 host up) scanned in 8 seconds

На первый взгляд ничего привлекательного. Даже не за что зацепиться. «А вдруг это Windows?» – спросите вы. Вы можете послать «нюки» прямо сейчас, но кроме незначительного увеличения нагрузки на сервер вряд ли причините ему что-нибудь более серьезное. Даже если перед вами Windows, то сервер скорей всего защищен различными фильтрами, прорваться через которые «нюкам» не просто. Ясно, что сначала необходимо определить операционную систему, а затем уже что-либо предпринимать. Запустив Nmap и просканировав хост, с удивлением обнаруживаем, что на нем действительно установлена ОС Windows.

Starting nmap V. 2.53 on dialup15.inetprov.ru (195.161.152.4)

TCP Sequence Prediction: Class=Time Dependent Increments

                                                                 Difficulty=3916950 <Good luck!>

Remote operating system guess: Windows 95/98/NT

Nmap run completed – 1 IP address (1 host up) scanned in 8 seconds

Однако обратимся к списку открытых портов компьютера. Порта 139, как мы видим, в нем нет. А жаль. Что ж, придется действовать другими методами.

Существует большое количество программ, позволяющих удаленно управлять машиной, работающей в сети под управлением ОС Windows. Наиболее известной из них является BackOrifice (потайной ход), созданная группой Cult of the Dead Cow и классифицируемая нашими специалистами-вирусологами как "троянец" (рис.2). На самом деле BackOrifice не является "троянцем" (полезной программой, выполняющей скрытые деструктивные действия), поскольку предназначение его определено создателями четко и никак не маскируется (другое дело маскировка файла-сервера). Однако присутствие BackOrifice в системе может доставить ничего не подозревающему пользователю массу неприятностей (когда экран по чьей-то удаленной воле переворачивается вверх ногами, приятного действительно мало).

Рисунок 2: Экран клиента BackOrifice. Обратите внимание на команды LockUp machine, Reboot machine...

Сразу оговоримся, что применение программы BackOrifice в этих целях противозаконно. BackOrifice состоит из двух основных частей: клиент и сервер (и еще нескольких необязательных, но полезных "примочек"). Сервер устанавливается на атакуемой машине, а клиент используется хакером для осуществления злодейских планов или системным администратором для управления группой компьютеров (палка, как говорится, о двух концах).

Этот "троянец" (или полезная утилита администрирования - в зависимости от вашего положения в обществе) позволяет установить тотальный контроль над всеми ресурсами операционной системы Windows. Вы можете управлять параметрами сети, работать с любыми файлами удаленной машины (запускать, копировать, удалять и т.д.), считывать экран, контролировать мышь и клавиатуру, просто баловаться, открывая-закрывая CD-ROM или вращая экран и даже перезагружать и выключать удаленный компьютер.

Естественно, все эти прелести становятся доступны вам после того, как вы установили программу-сервер на удаленной машине. Именно установка сервера является основной проблемой. Просто скопировать файл на удаленную систему? Можно, но ведь надо его еще и запустить.

Для того, чтобы заставить пользователя сделать то, что нужно хакеру, существуют методы "социальной инженерии". Их основополагающий девиз - "влзомать человека гораздо легче, чем машину". Вспомните хотя бы нашумевшую историю с вирусом "LoveLetter". Простое письмо с сакраментальной темой "Я тебя люблю" и вложенным Script'ом, разрушающим вашу систему. И, представьте себе, пол-Америки «купились» на эту «мякину» и запустили у себя присланный неизвестным любовником файл!

Итак, цели ясны. Для начала необходимо обзавестись программой BackOrifice 2000 (последняя версия) и настроить сервер (инструкции по его настройке есть в соответствующей документации). Мы, конечно, про любовь писать не будем, а напишем пользователю письмецо приблизительно такого содержания: «Вася! Я скачал новый апдейт для форточек, он исправляет ошибку счетчиков Microsoft Foundation Classes. Я себе поставил, проверил – все работает, 2037 год проходит без проблем. Высылаю – с тебя пиво J. Не скучай.». И отправим вложением сервер BO2K.EXE, предварительно переименованный в mspatch.exe. Если у него не стоит хорошего антивирусного монитора, проверяющего запускаемые файлы (типа DrWeb или AVP), то плакала его машина. Убедившись каким-либо образом, что "посылка" получена и запущена (можно, например, позвонить или в гости зайти), запускайте клиента, указывайте параметры и вперед! Компьютер соседа - ваш компьютер.

Этот пример приведен для того, чтобы показать один из способов заставить человека сделать то, что нам нужно. К сожалению, многие пользователи не проверяют полученные по сети файлы и бездумно их запускают, несмотря на то, что получены они неизвестно от кого. И много народу, смотря по телевизору или читая в газетах об очередной "вирусной эпидемии" или крупном взломе, думают, что с ними этого не случится. Мнение это весьма ошибочно.

Позаботься о себе сам

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

Фактически мы выполнили все этапы "взлома" удаленной компьютерной системы (а за это можно угодить в места не столь отдаленные): собрали информацию об атакуемом объекте, выбрали метод атаки, подготовили необходимые средства и осуществили сам "взлом". В реальной ситуации происходит то же самое. Причем для грамотного хакера самым важным этапом является первый - сбор информации об атакуемой системе. При проведении крупномасштабного "взлома" информация собирается и анализируется месяцами для того, чтобы как можно больше узнать об объекте атаки и случайно не наследить.

Пользователь и системный администратор, со своей стороны, должны заботиться о предотвращении утечки какой-либо информации, необходимой злоумышленнику для осуществления своих коварных планов. К такого рода информации относятся пароли пользователей, в большинстве случаев передаваемых в нешифрованном виде (позвоните своему провайдеру и спросите, как у них шифруются пароли доступа к серверу pop3), служебные и специальные сообщения, перехват и анализ которых позволит составить схему организации сети и т.д. Кроме того, у слабо защищенных машин утечка может быть вызвана специально с помощью различных «хакерских» утилит (сканер портов и др.)

Методов сбора информации придумано очень много. К счастью, средств защиты придумано не меньше (баланс сил в природе!). Другое дело, что далеко не все из них являются эффективными. Если вы хотите как-то обезопасить себя от ситуации, когда ваш веб-сервер вдруг перестал работать, или компьютер ни с того ни с сего сам отформатировал жесткий диск, вам придется прибегать к услугам таких средств.

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

Во-первых, приобретите себе хороший лицензионный антивирус (150 рублей за копию вас не отяготят, в Интернете больше денег просадите), с возможностью сканирования всех копируемых, запускаемых и принимаемых по сети файлов. Так вы значительно облегчите себе жизнь, поскольку не надо будет  перед запуском какой-нибудь скачанной программы проверять ее на вирусы (а вообще-то вы это делаете?).

Во-вторых, избегайте регистрации на сомнительных интернетовских сайтах. Не все из них (а особенно хакерские типа cultdeadcow.com) движимы хорошими идеями. Если зарегистрироваться необходимо, то НИКОГДА не указывайте свое настоящее имя и e-mail. Создайте себе почтовый ящик на любом сервере, предоставляемом бесплатные услуги электронной почты (например chat.ru) на имя Иванов Иван Иванович и при регистрации используйте этот адрес и вымышленное имя. Кроме того, создавая ящик, не указывайте адрес форвардера почты (адрес для пересылки сообщений). Никогда не давайте свой настоящий e-mail на различных чат-серверах. У «вредителей» (хакерами их назвать трудно) чат считается едва ли не лучшим способом «раскрутить» неопытного пользователя на e-mail или, что еще хуже, на IP-адрес.

В-третьих, зайдите к вашему интернет-провайдеру в гости и поговорите с системным администратором (или другим грамотным человеком) о мерах безопасности, предпринимаемых их фирмой. Уточните насчет возможности шифрования паролей, защиты от сканирования и привязки вашей учетной записи к конкретному телефонному номеру. Так никто другой не сможет воспользоваться перехваченным у вас паролем. Вы можете самостоятельно проверить вашего провайдера, воспользовавшись сканером Nmap (если вы получили результат даже при использовании примитивного connect-сканирования, то защита у него слабая). Эти действия противозаконны, но если вы позвоните провайдеру и договоритесь о таком мероприятии, ничего предосудительного в этом не будет, грамотные люди пойдут вам навстречу. Если же вы получите категорический отказ, знайте, что услугами этой фирмы пользоваться не желательно: защита у них никуда не годится и каких-либо мер по ее укреплению не предвидится.

И, наконец, позаботьтесь о защите вашего компьютера при работе в сети. Платных и бесплатных  программ в Интернете великое множество. Из бесплатных можно порекомендовать NukeNaber,  Jammer или другие подобные. Лучше всего пользоваться платными средствами персональной защиты. Наиболее эффективным средством, по нашей оценке, является программа Black Ice Defender фирмы NetworkIce (см.рис.3).

Рисунок 4: Black Ice обнаружил и успешно "отбил" удаленную атаку. Nuke Naber в это время скромно молчал...

Результаты исследования работы Black Ice Defender показали, что он способен зарегистрировать и «отбить» практически все известные атаки на Windows-машину. Стоимость Black Ice Defender составляет 40 долларов. Сумма большая (по сравнению со 150-ю рублями), но ваши нервы и данные стоят гораздо дороже! Если хотите посмотреть, что такое Black Ice, то на сервере Network Ice лежит демо-версия, которая только фиксирует атаки, но не фильтрует их.

В заключении приведем некоторые ссылки.

Сайт фирмы Network Ice:

            http://www.networkice.com

Сайт группы Cult of the Dead Cow:

            http://www.cultdeadcow.com

Официальная русская страница программы Nmap размещена по адресу:

http://www.cherepovets-city.ru/insecure

На этом же сайте размещен и Back Orifice c русским описанием, но не для того, чтобы взламывать серверы, а для удаленного администрирования сетевых машин  (значительно облегчает работу системного администратора). Некоторые могут запротестовать, мол, что они распространяют вирусы! Ответим следующее. Все зависит от целей, которые вы преследуете. Nmap тоже ведь можно считать хакерской программой, но грамотные администраторы с удовольствием пользуются аналогичными программами (к примеру, Satan) для сканирования своего сегмента сети. Если ваша задача обнаружить «дыры» в безопасности вашей сети – тогда в добрый путь. Ну а если вы хотите навредить кому-нибудь, то даже Tetris может стать грозным оружием в ваших руках.

Rambler's Top100 ???????@Mail.ru