Суета вокруг Роберта - [14]
Описанный в стандарте алгоритм определяет операции преобразования данных в непонятную непосредственно форму - шифрование, и наоборот расшифрование. Обе операции опираются на некоторое двоичное число, называемое ключом. Ключ состоит из 64 двоичных цифр, из которых 56 битов используются самим алгоритмом, а оставшиеся 8 битов служат для обнаружения ошибок.
Сам алгоритм известен всем его пользователям. Уникальность алгоритму придает использование в каждом приложении уникального ключа. Тот, кто не знает ключа, зная сам алгоритм, не сможет получить скрытые таким образом данные.
стр. 26
пользователей, найденных в учетном файле, и сравнения полученного шаблона с шифрованным паролем данного пользователя - в случае совпадения червь производил попытку запуска оболочки на всех удаленных узлах, где данный пользователь мог работать (что устанавливалось за счет просмотра внутреннего списка доступных узлов и анализа упомянутых выше файлов).
Если пользователь был чуть более искушен, и пароль не совпадал с учетным именем в чистом виде, то производилась аналогичная попытка с использованием учетного имени, преобразованного самым тривиальным образом: например, опробовалось учетное имя, написанное в обратном порядке.
Если и это не давало результата, в качестве шаблонов опробовались зашифрованные 432 общеизвестных слова (типа "cretin", "batman" и т.д.), составлявшие внутренний словарь червя. Этот вариант дал, кстати, наибольший процент раскрытия паролей.
После всех этих шагов в качестве паролей опробовались слова из имевшегося в системе словаря.
Как видите, ничего особенного в примененном методе вскрытия паролей нет, как нет и оправдания халатности пользователей, послужившей причиной того, что червю в отдельных системах удавалось вскрыть пароли более половины пользователей. А ведь каждый новый пароль червь использовал для атаки новых жертв!
"Следующая группа команд содержала список общеиспользуемых
в качестве паролей слов, зашифрованных по DES-алгоритму [D4],
которые сравнивались в таком виде с системным файлом паролей
Дэви, также зашифрованным по DES-алгоритму. Каждый
зашифрованный пароль-шаблон сравнивался с паролями всех законных
пользователей Деви, и каждое полное совпадение запоминалось
вирусом. В Деви червь таким образом смог получить около 20 из
300 паролей, причем один из раскрытых паролей обеспечивал
получение привилегий системного пользователя.
Системный пользователь в UNIX имеет возможность работать с
системными файлами и таблицами безопасности, обращаться к другим
системам, а также читать, писать и чистить файлы по всей
системе.
В этот момент червь стал распространять свои копии по
другим системам университета, но не производил серьезных
разрушений файлов или программ, хотя и мог это делать, - червь,
несомненно, не был запрограммирован на разрушение; единственным
ущербом, нанесенным червем Деви, было существенное замедление
работы других программ."
К счастью для американских пользователей, Моррис был в определенном смысле добропорядочным специалистом, не ставившим себе целью напакостить всем окружающим, вследствие чего созданный им вирус не искажал и не уничтожал данных. Именно поэтому вирус Морриса был отнесен специалистами к категории так называемых "мирных" вирусов, не приносящих пользователям непоправимых бед.
стр. 27
Если бы Моррис добавил к своей программе еще несколько строк, то, по мнению специалистов, ущерб был бы непоправимым.
Как показал анализ червя, имевшее в действительности место неуправляемое размножение вируса в планы Морриса не входило. В процессе работы червь пытался связаться с другой копией, работающей в этой же системе, через заведомо определенное гнездо TCP. Если попытка была успешной, т.е. в системе работала еще одна копия червя, атакующий червь устанавливал в 1 переменную pleasequit, что вызывало саморазрушение червя, но после выполнения им этапа вскрытия паролей. Такая задержка саморазрушения привела к тому, что в одной системе могли одновременно работать несколько копий червя. Более того, сочетание условий в теле червя делала возможной ситуацию, когда сильно загруженная система отказывала новой копии червя в установлении связи, что расценивалось червем как отсутствие в системе других копий и, следовательно, приводила к началу работы новой копии.
Моррис опасался, что системные программисты рано или поздно предпримут попытки запустить имитатор червя, отвечавшего бы на попытки установления связи через порт TCP с целью уничтожения истинных копий червя. Чтобы блокировать такие попытки, червь на основе анализа случайно генеруемого числа (примерно в одном случае из семи) устанавливал внутренние флажки таким образом, что оказывался независимым от результатов проверки наличия других копий червя в системе. Эти "бессмертные" копии вносили значительную лепту в перегрузку инфицируемых систем.
Таким образом, недостаточно корректное программирование механизма размножения независимо от ответа машины было ошибкой, приведшей к выходу вируса из-под контроля. С другой стороны, эта ошибка в программе обусловила и раннее обнаружение вируса. [D3]