Несанкционированный доступ к терминалам серверов с операционными системами семейства UNIX

Министерство образования российской федерации Липецкий государственный технический университет Кафедра АСОИУ Индивидуальное домашнее задание по дисциплине Операционные системы Несанкционированный доступ к терминалам серверов с операционными системами семейства UNIX. На примере octopus.stu.lipetsk.ru Выполнил Архипов Н.А. Группа АС-99-2 Принял Журавлева М.Г. Липецк 2001 Предисловие План, что и говорить, был превосходный простой и ясный, лучше не придумаешь.Недостаток у него был только один было совершенно неизвестно, как привести его в исполнение.

Л. Кэрролл. Алиса в стране чудес В данном отчете мы попытаемся выявить дыры и изъяны локальной компьютерной сети ЛГТУ LSTU в целом и в частности сервера для изучения операционных систем UNIX octopus.lstu. Для этого мы расскажем о возможных попытках получения доступа к терминалам серверов, в том числе и с правами root a, а так же попытка перегрузить сервер.Здесь не рассматривается такой вид атаки как Социальная инженерия, поскольку наша задача изучение операционных систем, а не психологии.

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

При этом все управляющие сообщения и данные, пересылаемые между объектами распределенной вычислительной системы, передаются по сетевым соединениям в виде пакетов обмена. К сетевым системам, наряду с обычными локальными атаками, осуществляемыми в пределах одной компьютерной системы, применим специфический вид атак, обусловленный распределенностью ресурсов и информации в пространстве так называемые сетевые или удаленные атаки remote или network attacks.

Они характеризуются, во-первых, тем, что злоумышленник может находиться за тысячи километров от атакуемого объекта, и, во-вторых, тем, что нападению может подвергаться не конкретный компьютер, а информация, передающаяся по сетевым соединениям.С развитием локальных и глобальных сетей именно удаленные атаки становятся лидирующими как по количеству попыток, так и по успешности их применения, и, соответственно, обеспечение безопасности ВС с точки зрения противостояния сетевым атакам приобретает первостепенное значение. удаленные атаКИ НА ХОСТЫ iNterNet Многое наша Земля повидала, Но не видала Такого скандала Б. Заходер. География всмятку Анализ сетевого трафика Internet В Internet базовыми протоколами удаленного доступа являются TELNET и FTP File Transfer Protocol.

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

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

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

Возникает вопрос а почему бы не сделать передачу имени пользователя и пароля в зашифрованном виде Видимо, проблема в том, что базовые прикладные протоколы семейства TCPIP разрабатывались очень давно, в период с конца 60-х до начала 80-х годов, и с тех пор абсолютно не изменились.

При этом точка зрения на построение глобальных сетей стала иной. Инфраструктура Сети и ее протоколы разрабатывались исходя, в основном, из соображений надежности связи, но не из соображений безопасности.Таким образом возможно отследить сетевой поток и выявить пакеты содержащие необходимые данные Имя, пароль, и т.д Так как в данном документе рассматривается только сервер ЛГТУ octopus.lstu, то я проанализировав сеть, пришел к выводу, что сервер не всегда находится в активном состоянии.

Таким образом, данный вариант атаки отпадает, да и еще чтобы постоянно отслеживать трафик, необходимо, чтобы все это время в сети находился хотя бы один компьютер, что невозможно из-за финансовых трудностей. Перебор паролей в файле etcpasswd В ранних версиях операционных системах семейства UNIX зашифрованные пароли точнее их хэш-копии хранились в файле etcpasswd. В современных UNIX ах пароли хранятся в etcshadow.Хранение зашифрованных паролей в etcpasswd делает систему сервера octopus.lstu уязвимой.

Здесь используется хэш-функция Data Encryption Standard DES 4864 4K. Поскольку данная шифровка работает только в одну сторону, а проверка подлинности пароля заключается в том, что при вводе пароля пользователя, операционная система шифрует введенную последовательность и сравнивает ее со строкой в файле etcpasswd.Вот пример записи паролей и имен пользователей в etcpasswd rootLyavHDdahFcwU01Superuser malysh7DnDkTMD9wG2100725Olga A. Bocharnikova, AS-98-1userstudentsas98malysh Для перебора паролей мы используем тот же метод, что и операционная система перебираю все возможные комбинации букв латинского алфавита причем имеет значение прописная буква или строчная, цифр и специальных знаков. Здесь можно использовать как функции самой операционной системы, так и написать свою функцию шифровки.

Но нужно быть точно уверенным что за алгоритм используется в данном случае, иначе перебор не приведет ни к каким результатам.

На компьютере octopus используется алгоритм шифрования DES 4864 4K. Так как на octopus e столь неважные, по сегодняшним меркам, аппаратные средства см. следующий пункт, то ни о каком переборе пароля не может идти и речи. Тем более, даже на более быстрых машинах Pentium III 650MHz расшифровка заняла примерно 30 суток . Да и сервер не все время находится в рабочем состоянии, как уже было замечено выше. В отчете прилагается часть программы, для расшифровки паролей файла etcpasswd.

Deny of Service DoS атака. Дословно Deny of Service переводится как отказ в обслуживании. Это означает например, что операционная система не может обслужить запрос пользователя или другой системы. Рассмотрим нарушение работоспособности хоста в сети при использовании направленного шторма ложных TCP-запросов на создание соединения либо при переполнении очереди запросов.Из рассмотренной в предыдущем пункте схемы создания TCP-соединения следует, что на каждый полученный TCP-запрос TCP SYN операционная система должна сгенерировать начальное значение идентификатора ISN и отослать его на запросивший хост. Но так как в Internet стандарта IPv4 не предусмотрен контроль за IP-адресом отправителя сообщения, то проследить истинный маршрут, пройденный IP-пакетом, невозможно и, следовательно, у конечных абонентов сети нет способа ограничить число запросов, принимаемых в единицу времени от одного хоста.

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

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

Таким образом, съедаются все ресурсы системы переполняется очередь запросов, и ОС вынуждена заниматься только их обработкой.Эффективность данного воздействия тем выше, чем больше пропускная способность канала между атакующим и его целью, и тем ниже, чем больше вычислительная мощность атакуемого компьютера число и быстродействие процессоров, объем ОЗУ и т.п Такую атаку можно было предсказать еще лет двадцать назад, когда появилось семейство протоколов TCPIP ее корни находятся в самой инфраструктуре сети Internet, в ее базовых протоколах - IP и TCP. Но каково же было наше удивление, когда выяснилось, что на информационном . WWW-сервере CERT Computer Emergency Respone Team первое упоминание об удаленном воздействии такого рода датировано только 19 сентября 1996 года Там эта атака носила название TCP SYN Flooding and IP Spoofing Attacks наводнение TCP-запросами с ложных IP-адресов.

Другая разновидность атаки отказ в обслуживании состоит в передаче на атакуемый хост нескольких десятков сотен запросов TCP SYN в секунду направленный мини-шторм TCP-запросов на подключение к серверу, что может привести к временному до 10 минут переполнению очереди запросов на сервере см. атаку К. Митника.

Это происходит из-за того, что некоторые сетевые ОС обрабатывают только первые несколько запросов на подключение, а остальные игнорируют, Таким образом, получив N запросов на подключение, ОС сервера ставит их в очередь и генерирует соответственно N ответов.

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

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

При этом циклически изменялись такие параметры запроса, как порт отправителя и значение 32-битного идентификатора SYN. IP-адрес отправителя запроса был выбран так, чтобы, во-первых, этот хост в настоящий момент не был активен в сети и, во-вторых, чтобы соответствующий маршрутизатор, в чьей зоне ответственности находится данный хост, не присылал сообщения Host Unreachable Хост недоступен.

В противном случае хост, от имени с IP-адреса которого посылался запрос TCP SYN, получив неожиданный ответ TCP АСК от атакуемого сервера, перешлет на него пакет TCP RST, закрывая таким образом соединение.При передаче по каналу связи максимально возможного числа TCP-запросов и при нахождении кракера в одном сегменте с объектом атаки атакуемые системы вели себя следующим образом ОС Windows 95, установленная на 486DX2-66 с 8 Мб ОЗУ, замирала и переставала реагировать на любые внешние воздействия в частности, нажатия на клавиатуру ОС Linux 2.0.0 на 486DX4-133 с 8 Мб ОЗУ также практически не функционировала, обрабатывая одно нажатие на клавиатуре примерно 30 секунд.

В результате к этим хостам невозможно было получить не только удаленный, но и локальный доступ.Не менее интересным было поведение атакуемых систем после снятия воздействия ОС Windows 95 практически сразу же после прекращения атаки начала нормально функционировать в ОС Linux 2.0.0 с 8 Мб ОЗУ, по-видимому, переполнился буфер, и более получаса система не функционировала ни для удаленных, ни для локальных пользователей, а занималась только передачей ответов на полученные ранее запросы.

CyberGuard сразу же после снятия воздействия стал доступным для удаленного доступа. Если кракер находился в смежных сегментах с объектом, то во время атаки ОС Windows 95 на Pentium 100 с 16 Мб ОЗУ обрабатывала каждое нажатие с клавиатуры примерно секунду, ОС Linux 2.0.0 на Pentium 100 с 16 Мб ОЗУ практически повисала - одно нажатие за 30 секунд, зато после снятия воздействия нормальная работа возобновлялась.

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

Таким образом, учитывая аппаратные средства сервера octopus.lstu Olivetti 80286 можно без труда осуществить на него DoS атаку. Даже если локальная сеть будет загружена. Можно предположить, что и остальные сервера университета могут быть обездвижены таким способом. Например сервер кафедры прикладной математики IBM 486DX66 16RAM. По аппаратной части серверы кафедры АСУ здесь не имеется ввиду octopus.lstu более устойчивы к DoS атаке.Превышение максимально возможного размера IP-пакета, или Ping Death В максимальный размер IP-пакета 65 535 байт включаются длина IP-заголовка и длина ноля данных в IP-пакете.

Так как минимальный размер IP-заголовка - 20 байт максимальный - 60, то соответственно размер данных, передаваемых в одном IP-пакете, не может превышать 65 535- 20 65 515 байт. А что будет, если превысить это число Тестировать свои программы на предельных критических значениях -стандартный для любого программиста ход. Подобные тесты позволяют выявить такие неприятные ошибки, как всевозможные переполнения буфера, стека, переменной и т. д Но вернемся к IP. В принципе ничто не мешает атакующему сформировать набор фрагментов, которые после сборки превысят максимально возможный размер IP-пакета.

Собственно в этой фразе и сформулирована основная идея данной атаки. Итак, 18 декабря 2000 года на информационном сервере СЕКТ появились сообщения о том, что большинство сетевых операционных систем, поддерживающих протоколы TCPIP, обладают следующей уязвимостью при передаче на них IP-пакета длиной, превышающей максимально допустимое значение, в этих ОС переполняется буфер или переменная, в результате система зависает или перезагружается, то есть налицо отказ в обслуживании.

Был приведен и список потенциально опасных платформ Berkeley Software Design, Inc. BSD Computer Associates, Intl. products for NCR Cray Research Digital Equipment Corporation FreeBSD, Inc. Hewlett-Packard Company IBM Corporation Linux Systems NEC Corporation Open Software Foundation OSF The Santa Cruz Operation, Inc. SCO Sun Microsystems, Inc. Мы с удивлением прочитали этот перечень операционных систем на различных платформах, а потом принялись за эксперименты.

Наше глубочайшее изумление вызвал тот факт, что элементарную ошибку переполнения буфера в модуле IP ядра ОС за почти 20 лет активного функционирования протокола IP разработчики сегодняшних систем до сих пор не замечали. Поэтому мы позволили себе не поверить столь уважаемой организации, как CERT. Но прежде чем начать эксперименты, было решено посмотреть по указанной в CERT ссылке httpwww.sophist.demon.co.ukping на WWW-сервер, где экспертами проводились подобные исследования на различных ОС. На WWW-сервере предлагалось реализовать такое воздействие следующим образом необходимо выполнить на рабочей станции с ОС Windows 95 или Windows NT следующую команду ping -l 65527 victim.destination.IP.address по этой команде атака и получила свое название - Ping Death. Так как обычный размер IP-заголовка составляет 20 байт, а размер 1СМР-заголовка - 8 байт, то подобный ICMP-пакет будет превышать максимально возможный размер IP-пакета на 20 байт 65 527 208-65 535 20. Основываясь на приведенном расчете, эти эксперты декларировали, что обычной командой ping можно нарушить работоспособность практически любой сетевой ОС. В завершение предлагалась следующая таблица тестирования различных операционных систем Операционная системаВерсия ПОСимптомы Solaris x862.4, 2.5, 2.5.1ПерезагрузкаMinix1.7.4, v2.0 и другиеСбойHP3000 MPEiX4.0, 5.0, 5.5Сброс системыConvex SPP-UXВсе версииСбойApple MacMacOs 7.x.xСбойWindows 3.11 with Trumpet winsockСмешанные отчетыNovell Netware3.xСмешанные отчетыWindows 95Все версииСбойAIX3 и 4Сброс системыLinux2.0.23Спонтанная перезагрузка или зависание kernel panic DEC UNIX OSF12.0 и вышезависание kernel panicOpen VMS for AXPРазличныеСмешанные отчетыHP-UX9.0 по 10.20Сбой, перезагрузка, зависание.Windows NT3.5.1Смешанные результатыIrix5.3зависание kernel panicWindows NT4СбойSCO Openserver4.2, 5.0.xУязвимаDEC TOPS-20, TOPS-10ВсеОшибкиDigital FirewallУязвимаAltaVista Firewall for UNIXУязвима здесь она приводится в сокращении, на которые данная удаленная атака якобы произвела необходимый эффект.

Итак, мы начали тестирование и, честно говоря, абсолютно не удивились, когда исследуемые ОС - IRIX, AIX, VMS, SunOs, FreeBSD, Linux, Windows NT 4.0, даже Windows 95 и Windows for WorkGroups 3.11- абсолютно не реагировали на подобный некорректный запрос, продолжая нормально функционировать.

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

Ей оказалась Windows 3.11 с WinQVT - эта ОС действительно зависла.

Этим экспертам, которым столь доверяют CERT и С1АС, мы послали запрос, где попросили прояснить возникшую ситуацию, а также уточнить сведения из вышеприведенной таблицы. В полученном нами ответе говорилось, что успех данной атаки зависит от многих факторов, а именно программного и аппаратного обеспечения, установленного на компьютере, и, самое главное, от фазы Луны. Как говорится, без комментариев.

Для полноты картины мы хотели бы привести описание exploit, созданного для Windows NT 4.0, задача которого, используя ping, завесить собственный компьютер . Сначала предлагалось запустить Web Browser, затем-taskmgr Task Manager так Ping Death якобы лучше работает еще не хватает шаманского бубна.

И наконец, требовалось запустить 18 ping-процессов почему не 100. Если вы думаете, что после всего этого ваша ОС немедленно повиснет, то ошибаетесь В комментариях к exploit до получения эффекта предлагалось ждать примерно 10 минут, а может быть, несколько больше или несколько меньше.

Можно сделать вывод, что опасения по поводу данного воздействия ни на чем не основаны, и нам остается только назвать эту атаку очередной программистской байкой и причислить ее к разряду практически неосуществимых. причины усПЕХА УДАЛЕННЫХ АТАК То, что изобретено одним человеком, может быть понято другим сказал Холме. А. Конан Доил. Пляшущие человечки Использование нестойких алгоритмов идентификации К сожалению, взаимодействие объектов по виртуальному каналу в распределенной ВС не является панацеей от всех проблем, связанных с идентификацией объектов РВС. ВК - необходимое, но не достаточное условие безопасного взаимодействия.

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

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

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

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

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

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

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

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

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

Недостаточные идентификация и аутентификация В базовых протоколах обмена идентификация и аутентификация объектов практически отсутствуют. Так, например, в прикладных протоколах . FTP, TELNET, РОРЗ имена и пароли пользователей передаются по сети в виде открытых незашифрованных сообщений.Использование нестойких алгоритмов идентификации объектов при создании виртуального TCP-соединения Как уже подчеркивалось, протокол TCP является единственным базовым протоколом транспортного уровня, в функции которого заложена защита соединения. Однако использование простейшего алгоритма идентификации объектов при создании виртуального TCP-канала, особенно при условии применения в сетевых ОС простейших времязависимых законов генерации TCP-идентификаторов ISN, сводит на нет все попытки обеспечения идентификации канала и объектов при их взаимодействии по протоколу TCP. Отсутствие криптозащиты сообщений В существующих базовых протоколах семейства TCPIP, обеспечивающих взаимодействие на сетевом и транспортном уровнях, не предусмотрена возможность шифрования сообщений, хотя очевидно, что добавить ее в протокол TCP не составляло труда.

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

При этом базовые протоколы прикладного уровня FTP, TELNET, HTTP и др. также не предусматривали никакого шифрования сообщений. Только не так давно появился общедоступный прикладной протокол SSL, встроенный в Netscape Navigator, позволяющий как надежно зашифровать сообщение, так и подтвердить его подлинность.

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

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

Однако на chuck.stu.lipetsk.ru почему-то у обычных пользователей нет прав на компилирование Си программ.Почему Может это и есть слабое звено в администрировании, или это еще одна предосторожность администратора Хотя на tomcat.am.lstu обычным смертным разрешено Вообще-то взлом octopus.stu.lipetsk.ru был бы неуважением своей же кафедры. Ведь та защита которая там присутствует направлена не для того, чтобы предотвратить проникновение злоумышленника, а для элементарной защиты от неопытных пользователей.

ПРИЛОЖЕНИЕ. В целях безопасности, приводим только фрагменты программы.Файл john.c include stdio.h include string.h include stdlib.h include sysstat.h include arch.h include misc.h include params.h include path.h include memory.h include list.h include tty.h include signals. h include idle.h include common.h include formats.h include loader.h include logger.h include status.h include options.h include config.h include bench.h include charset.h include single.h include wordlist.h include inc.h include external.h include batch.h if CPUDETECT extern int CPUdetect endif extern struct fmtmain fmtDES, fmtBSDI, fmtMD5, fmtBF extern struct fmtmain fmtAFS, fmtLM extern int unshadowint argc, char argv extern int unafsint argc, char argv extern int uniqueint argc, char argv static struct dbmain database static struct fmtmain dummyformat static void johnregisteronestruct fmtmain format if options.format if strcmpoptions.format, format- params.label return fmtregisterformat static void johnregisterall if options.format strlwroptions.format johnregisteronefmtDES johnregisteronefmtBSDI johnregisteronefmtMD5 johnregisteronefmtBF johnregisteronefmtAFS johnregisteronefmtLM if fmtlist fprintfstderr, Unknown ciphertext format name requestedn error static void johnload struct listentry current umask077 if options.flags FLGEXTERNALCHK extinitoptions.external if options.flags FLGMAKECHARSCHK options.loader.flags DBCRACKED ldrinitdatabasedatabase, options.loader if options.flags FLGPASSWD ldrshowpotfiledatabase, LOGNAME database.options- flags DBPLAINTEXTS if current options.passwd- head do ldrshowpwfiledatabase, current- data while current current- next else database.options- flags DBPLAINTEXTS ldrshowpotfiledatabase, LOGNAME return if options.flags FLGSTDOUT ldrinitdatabasedatabase, options.loader database.format dummyformat memsetdummyformat, 0, sizeofdummyformat dummyformat.params.plaintextlength options.length dummyformat.params.flags FMTCASE FMT8BIT if options.flags FLGPASSWD if options.flags FLGSHOWCHK options.loader.flags DBCRACKED ldrinitdatabasedatabase, options.loader ldrshowpotfiledatabase, LOGNAME if current options.passwd- head do ldrshowpwfiledatabase, current- data while current current- next printfsd passwords cracked, d leftn, database.guesscount n , database.guesscount, database.guesscount 1 s , database.passwordcount - database.guesscount return if options.flags FLGSINGLECHK FLGBATCHCHK options.loader.flags DBWORDS else if memsavinglevel options.loader.flags DBLOGIN ldrinitdatabasedatabase, options.loader if current options.passwd- head do ldrloadpwfiledatabase, current- data while current current- next ldrloadpotfiledatabase, LOGNAME ldrfixdatabasedatabase printfLoaded d passwordss, database.passwordcount, database.passwordcount 1 s , database.passwordcount , exiting if database.passwordcount 1 printf with printfdatabase.saltcount 1 d no, database.saltcount printf different salts if database.passwordcount printf s sn, database.format- params.formatname, database.format- params.algorithmname else putcharn if options.flags FLGPWDREQ database.salts exit0 static void johninitint argc, char argv if CPUDETECT if CPUdetect if CPUREQ fprintfstderr, Sorry, s is requiredn, CPUNAME error endif endif pathinitargv cfginitCFGNAME statusinitNULL, 1 optinitargc, argv johnregisterall commoninit siginitidleyield johnload static void johnrun if options.flags FLGTESTCHK benchmarkall else if options.flags FLGMAKECHARSCHK domakecharsdatabase, options.charset else if options.flags FLGCRACKINGCHK if options.flags FLGSTDOUT loginitLOGNAME ttyinit if options.flags FLGSINGLECHK dosinglecrackdatabase else if options.flags FLGWORDLISTCHK dowordlistcrackdatabase, options.wordlist, options.flags FLGRULES 0 else if options.flags FLGINCCHK doincrementalcrackdatabase, options.charset else if options.flags FLGEXTERNALCHK doexternalcrackdatabase else if options.flags FLGBATCHCHK dobatchcrackdatabase statusprint ttydone if options.flags FLGSTDOUT logdone static void johndone pathdone checkabort int mainint argc, char argv char name ifdef DJGPP if argc 0 return 1 if name strrchrargv0, strcpyname 1, argv1 name argv1 argv1 argv0 argv else if argv0 name else if name strrchrargv0, name else name argv0 endif ifdef CYGWIN32 if strlenname 4 if strcmpstrlwrname strlenname - 4, .exe namestrlenname - 4 0 endif if strcmpname, john johninitargc, argv johnrun johndone return 0 if strcmpname, unshadow return unshadowargc, argv if strcmpname, unafs return unafsargc, argv if strcmpname, unique return uniqueargc, argv fprintfstderr, Sorry, I cant find myselfn return 1 Файл desbs.c include string.h include arch.h include DESstd.h include DESbs.h DESbscombined DESbsall int DESbsmemsaving 0 extern void DESbsbody void DESbsinit int index, bit for index 0 index 0x300 index bit DESKbitsindex bit - bit 3 DESbsall.Kpindex DESbsall.K55 - bit void DESbssetsaltARCHWORD salt register int src, dst register ARCHWORD mask mask 1 for dst 0 dst 48 dst if dst 24 mask 1 if salt mask if dst 24 src dst 24 else src dst - 24 else src dst DESbsall.Edst DESbsall.BDESEsrc DESbsall.Edst 48 DESbsall.BDESEsrc 32 mask 1 void DESbsclearkeys memsetDESbsall.K, 0, sizeofDESbsall.K void DESbssetkeychar key, int index register char ptr register int ofs, bit register ARCHWORD value ofs 56 for ptr key ptr ofs ptr bit ofs - 7 value ptr 0x7F do DESbsall.Kbit value 1 index while value 1 void DESbscryptint count register int bit register ARCHWORD R, L memsetDESbsall.B, 0, sizeofDESbsall.B do DESbsbody if count break for bit 0 bit 32 bit R DESbsall.Bbit L DESbsall.Bbit 32 DESbsall.Bbit 32 R DESbsall.Bbit L while 1 ARCHWORD DESbsgetbinarychar ciphertext static ARCHWORD out64 ARCHWORD raw int bit int index, shift int value raw DESrawgetbinaryciphertext out1 out0 0 for bit 0 bit 64 bit index bit 4 Swap L and R here instead of doing it one more time in DESbscrypt index 2 Calculate the number of one of the 16 data bits in rawindex shift bit 0xC 1 bit 3 1 Get the bit value rawindex shift 1 if DESbsmemsaving Memory saving pack the bits into two words outbit 5 value bit 0x1F else We either set or clear all the bits in every word outbit value ARCHWORD0 0 return out int DESbsbinaryhashARCHWORD binary, int count int bit, result if DESbsmemsaving return intbinary 1 count - 1 result 0 for bit 0 bit count bit if binarybit result 1 bit return result int DESbsgethashint index, int count register int bit, result register ARCHWORD mask mask ARCHWORD1 index result 0 for bit 0 bit count bit if DESbsall.Bbit mask result 1 bit return result The trick I used here allows to compare one ciphertext against all the DESbscrypt outputs in just Olog2ARCHBITS operations. int DESbscmpallARCHWORD binary, int count register int bit register ARCHWORD mask mask 0 if DESbsmemsaving for bit 0 bit count 32 count 32 bit mask DESbsall.Bbit binary0 1 bit ARCHWORD0 0 if mask ARCHWORD0 return 0 else for bit 0 bit count bit mask DESbsall.Bbit binarybit if mask ARCHWORD0 return 0 return 1 int DESbscmponeARCHWORD binary, int count, int index register int bit register ARCHWORD mask if DESbsmemsaving for bit 0 bit count bit if DESbsall.Bbit index binarybit 5 bit 0x1F 1 return 0 return 1 mask ARCHWORD1 index for bit 0 bit count bit if DESbsall.

Bbit binarybit mask return 0 return 1.