Суета вокруг Роберта - [14]

Шрифт
Интервал

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

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

стр. 26

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

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

Если и это не давало результата, в качестве шаблонов опробовались зашифрованные 432 общеизвестных слова (типа "cretin", "batman" и т.д.), составлявшие внутренний словарь червя. Этот вариант дал, кстати, наибольший процент раскрытия паролей.

После всех этих шагов в качестве паролей опробовались слова из имевшегося в системе словаря.

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

"Следующая группа команд содержала список общеиспользуемых

в качестве паролей слов, зашифрованных по DES-алгоритму [D4],

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

Дэви, также зашифрованным по DES-алгоритму. Каждый

зашифрованный пароль-шаблон сравнивался с паролями всех законных

пользователей Деви, и каждое полное совпадение запоминалось

вирусом. В Деви червь таким образом смог получить около 20 из

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

получение привилегий системного пользователя.

Системный пользователь в UNIX имеет возможность работать с

системными файлами и таблицами безопасности, обращаться к другим

системам, а также читать, писать и чистить файлы по всей

системе.

В этот момент червь стал распространять свои копии по

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

разрушений файлов или программ, хотя и мог это делать, - червь,

несомненно, не был запрограммирован на разрушение; единственным

ущербом, нанесенным червем Деви, было существенное замедление

работы других программ."

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

стр. 27

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

Как показал анализ червя, имевшее в действительности место неуправляемое размножение вируса в планы Морриса не входило. В процессе работы червь пытался связаться с другой копией, работающей в этой же системе, через заведомо определенное гнездо TCP. Если попытка была успешной, т.е. в системе работала еще одна копия червя, атакующий червь устанавливал в 1 переменную pleasequit, что вызывало саморазрушение червя, но после выполнения им этапа вскрытия паролей. Такая задержка саморазрушения привела к тому, что в одной системе могли одновременно работать несколько копий червя. Более того, сочетание условий в теле червя делала возможной ситуацию, когда сильно загруженная система отказывала новой копии червя в установлении связи, что расценивалось червем как отсутствие в системе других копий и, следовательно, приводила к началу работы новой копии.

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

Таким образом, недостаточно корректное программирование механизма размножения независимо от ответа машины было ошибкой, приведшей к выходу вируса из-под контроля. С другой стороны, эта ошибка в программе обусловила и раннее обнаружение вируса. [D3]