Критика святого Криса - 2
by DrMAD
Лизавета Ивановна прочла еще две страницы.
Графиня зевнула.
- Брось эту книгу, - сказала она, - Что за
вздор! Отошли это князю Павлу и вели
благодарить...
А.С. Пушкин. Пиковая дама.
Введение
В прошлом выпуске "Земского Фершала" была опубликована статья,
посвященная рассмотрению работы Криса Касперски "Вирусы -
кибернетический минотавр или мания". Там были следующие слова:
: Вроде бы, после "Техники и философии хакерских атак"
: собирается он пройти бульдозером своего интеллекта и по теме
: вирусологии, написав что - то вроде "Техники и философии
: вирусных атак". Не сомневаюсь, что с "техникой" все будет в
: порядке, но вот с "философией"... Вот почему я с нетерпением
: жду и боюсь этой, еще ненаписанной, книжки.
И вот появились "Записки исследователя компьютерных вирусов",
издательство "Питер", 315 с, тиражом 4000 экз. Сам Бог велел пройтись
паровозом своей критики по этой книжке. J
1. Конкретные глюки, глюконаты, глюкозы и глюкозоиды
Каюсь, я внимательно прочитал с карандашиком не всю книжку. В
некоторых вопросах я не настолько хорошо разбираюсь, чтобы осмеливаться
иметь по ним свое мнение. Но, тем не менее, кой-чего нарыть удалось.
> Стр.. 16. ...Вероятность успешного обнаружения вирусной заразы
> относительно невелика, а о гарантиях ее корректного лечения говорить и
> вовсе не приходится.
"Невелика" относительно чего? Относительно вероятности
НЕобнаружения? Это что же, полный шиндец? Выкидывайте свои антивирусы,
заворачивайтесь в простыню и ползите на кладбище? J
> Стр.. 18. Одна древняя легенда, датируемая первой половиной
> восьмидесятых, гласит, что... к активизации специального модуля,
> который вводит головки винчестера в резонанс... и т.д.
Массовые компьютеры первой половины 80-х не имели винчестеров. Да и
вирусов (в современном понимании этого термина) тогда не было.
> Стр.. 20. Во времена тех же восьмидесятых... существовали мониторы
> типа Hercules, которые легко выводились из строя...
Hercules - это не монитор, а видеоадаптер. Кстати, "легко
выводились из строя" мониторы, работающие не под управлением Hercules,
а под управлением адаптера MDA. По крайней мере, именно он упоминался в
литературе 80-х годов, посвященной этой теме.
> Стр. 22. Если бы LoveSan... хотя бы частично выводил компьютеры из
> строя, мы бы с вами сейчас грелись у костра, сидя на медвежьих
> шкурах...
Лет 60 назад компьютеров вообще не было, тем не менее, у костра в
медвежьих шкурах никто не сидел. Уже существовали телеграф, радио, ТВ,
автомобильный транспорт, авиация... J
> Стр. 23. Программы, способные к самостоятельному размножению,
> протекающему без участия пользователя, принято называть червями.
Кем "принято"? Нигде, кроме как у К. Касперски подобная
классификация не встречается (насколько я знаю). Лет 10 назад
существовала разновидность вирусов - "файловые черви", которые
запускались ИСКЛЮЧИТЕЛЬНО в результате участия пользователя. Почтовые
черви (особенно зараза класса Мелиссы или Анны Курниковой, да и МайДума
тоже, но не Клез-а или Ализ-а) запускаются тоже ИСКЛЮЧИТЕЛЬНО
пользователем. Скорей уж "червь" отличается от "вируса" тем, что не
прикрепляется ни к какому программному объекту, существует сам по себе,
непосредственно (а не опосредованно) использует системные ресурсы. А
пользователь тут вообще лишний фигурант.
> Стр. 27. ...Всякий язык познается лишь при обращении "в живую".
"Вживую" - наречие, и пишется вместе. Это же вам не Штирлиц,
который стреляет "вслепую", а попадает "в слепую". J
> Cтр 27. Русские переводы технической документации... для реальной же
> работы они непригодны.
Интересно, что же такого теряет техническая документация в
результате _перевода_, что становится непригодной для реальной работы?
Имхо, абсолютно ничего. Другое дело, что книжные полки магазинов
заполнены _пересказами_ технической документации, которые хуже
оригинала. Вот это верно. Многие книжки К. Касперски именно такими
пересказами и являются. J
> Стр. 30. Откомпилированная программа просто шифруется статическими
> упаковщиками, которые легко поддаются автоматической/полуавтоматической
> распаковке.
Забавно, но спустя несколько страниц автор высказывает и
обосновывает тезис с ПРЯМО ПРОТИВОПОЛОЖНЫМ смыслом. J
> Стр. 31. С переходом на Windows многое изменилось. Количество
> упаковщиков резко возросло...
Автор просто не в курсе. Этих упаковщиков тоже было до фигища,
просто наиболее популярными были всего 4: PkLite, diet, LZCOM/LZEXE,
AinExe. А про TSCrunch автор что-нибудь слышал? А про EXEPack? А про
PPACK? А про...
> Стр. 33. Ну, скоро мы знаем имя упаковщика, найти готовый
> распаковщик не составит больших проблем...
Нехай автор возьмет любого червяка, созданного в последние пару лет
и упакованного UPX, и попытается его _автоматически_ раз-UPX-ить. Имхо,
вероятность успеха процентов 10 - не больше.
> Стр. 35. В девяностых годах двадцатого века, когда вирусы
> создавались преимущественно на ассемблере и писались преимущественно
> профессионалами...
В точности наоборот. 90% вирусов создавались именно
"непрофессионалами", знающими десяток ассемблерных команд. Году этак в
1993 вирусологи всерьез говорили о скорой гибели компьютерного мира под
натиском десятков тысяч абсолютно примитивных и однотипных "хижняков".
Но обошлось. J
> Стр. 35. ...Любая нормально откомпилированная программа начинается с
> так называемого стартового кода...
А что такое "нормально откомпилированная"? А что тогда значит
"ненормально откомпилированная"? Вообще-то, речь идет о программах,
написанных на ЯВУ, так и и надо было говорить.
> Стр. 35. Сегодня, когда ассемблерные вирусы становятся музейной
> редкостью...
Чушь. J
> Стр. 37 и везде дальше. ...код червя I-Worm.Kilez.h
Блин, еще "I-Worm" добавил, и "h". Это че, попытка замаскировать
свою выдумку под нотацию КаЛаб? Ну нет такого вируса, и никогда не
было. Вот, смотрим:
I-Worm.Klez.h - Лаборатория Касперского,
W32/Klez.gen@MM - McAfee,
W32.Klez.A@mm - Symantec,
Win32.HLLM.Klez.57344 - Doctor Web,
W32/Klez-H - Sophos,
Win32/Klez.H@mm - RAV,
WORM_KLEZ.H - Trend Micro,
W32/Klez.H - H+BEDV,
W32/Klez.H@mm - FRISK,
Win32:Klez - ALWIL,
I-Worm/Klez.H - Grisoft,
Win32.Klez.H@mm - SOFTWIN,
Worm.Klez.H - ClamAV,
W32/Klez - Panda,
Win32/Klez.H - Eset.
> Стр. 38. При внедрении вируса в файл точка входа в него неизбежно
> меняется...
Буквально на следующей странице автор показывает, что можно не
менять ссылку на точку входа, а можно и не менять команды в самой точке
входа. Что бы автор не имел в виду под термином "точка входа", слово
"неизбежно" тут в любом случае лишнее.
> Стр. 39. ...Всякая секция, независимо от ее физического смещения в
> файле, может быть спроецирована по произвольному виртуальному адресу...
Гм... Не совсем понятно, что имеется в виду. Загрузка
(проецирование) секций в память производится по жесткому и однозначно
интерпретируемому алгоритму. RVA секции просто не может быть
"произвольным".
> Стр. 40. ...Ильфака Гуильфанова.
Насколько я в курсе, его зовут Ильфак Гильфанов. Странно, что Крис,
накропавший про ИДу целую книжку, упорно не желает правильно писать
фамилию автора этой самой ИДы. Тоже самое касается и MZ - Марка
ЗбыКовски, а не ЗбыНовски. Вот, пожалуйста:
Mark J. Zbikowski,
Senior Software Designer,
Microsoft Corp. Redmond, WA.
Это же вещи, легко проверяемые несколькими кликами мыша, зачем же в
_печатных_ книжках в течение многих лет распространять заведомо
некорректную информацию?
> Стр. 43. ...Поиском опокода...
Очепятка. Должно быть "опкода".
> Стр. 46. По факту загрузки файла операционной системой вирус
> проделывает обратную операцию, перетягивая таблицу импорта "назад".
> Необходимость последней операции объясняется тем, что система находит
> таблицу импорта по содержимому поля Import Table, а непосредственно сам
> исполняемый файл работает с ней по фиксированным адресам.
Гм? Вообще-то, я доверяю автору в этом вопросе, но обязательно
проверю все это на практике. Читая эти строки, я ни бельмеса не понял.
Нафига козе баян и зачем системе таблица импорта после того, как
загрузка состоялась, все адреса настроены и код получил управление?
> Стр. 55. Достаточно, чтобы ключевая метка отсутствовала более чем в
> половине неинфицированных файлов.
Почему в половине, а не в одной десятой или в двух третях? Вообще,
каким боком тут конкретные цифры?
> Стр. 56. Более совершенные вирусы используют те или иные
> разновидности UUE-кодирования... вроде "UsKL[aS4ijk".
Это не UUE, а Mime (точнее, Base-64).
> Стр. 67. ...Jmp'ы будут блохой скакать по всему файлу
Эх, блин, все-таки одна "блоха" встретилась. JJJ
> Стр. 88. ...Червями принято называть...
См. примечание к стр. 23.
> Стр. 88. От них не защищают никакие превентивные меры, антивирусные
> сканеры и вакцирны до сих пор остаются крайне неэффективными средствами
> борьбы.
См. примечание к стр. 16.
> Стр. 91. Многие из дыр, обнаруженных еще до червя Морриса, остаются не
> заткнутыми до сих пор...
Хотелось бы конкретный примерчик хотя бы одной такой "дыры".
> Стр. 92. По некоторым данным, червю удалось поразить до нескольких
> тысяч машин (на две тысячи больше, чем червю Морриса).
Интересно, если от "нескольких тысяч" отнять "две тысячи" - сколько
получится? J
> Стр. 99. Незашифрованный вирус легко убивается любым сетевым
> фильтром, как-то брандмаузером или маршрутизатором.
Совсем не любым. Более того, такого брандмаузера искать надо,
причем долго.
> Стр. 99. ... На платформе Intel IA-32...
Надо было написать так: "на платформе Intel IA-32 фирмы Intel,
разработанной фирмой Intel". Было бы круче. J (Для тех, кто не вкурил:
IA = Intel Architecture).
> Стр. 99. ...Речь идет о подлинном полиморфизме...
А вот тут хотелось бы очень поподробней. Я конечно, догадываюсь, о
чем речь. По хорошему, в этом месте напрашивался абзац-другой, в
котором автор ввел бы свою классификацию полиморфных программ,
например, такую: "полиморфиками _принято_ считать совсем не то, что
всеми считалось до сих пор" J Но, как бы то ни было, этих абзацев нет,
и автор счастливо избежал водопада критики.
> Стр. 99. Существует несколько независимых стратегий распространения,
> среди которых в первую очередь следует выделить импорт данных из
> адресной книги Outlook Express...
Вообще-то, это в лучших домах Филадельфии называется не
распространением (propagation), а поиском целей (targetting).
> Стр. 106. Попробуйте сгенерировать последовательность случайных байт и
> подсчитайте количество шагов, требующихся для полного покрытия всей
> области от 00до FFh. Очевидно, что за 100h шагов осуществить задуманное
> ни за что не удастся.
Вот это самая грубая ошибка в книге. Хотя и не критическая. Автор
пытается обосновать замедление распространения сетевого вируса,
использующего случайную стратегию поиска целей для заражения. Исходные
предпосылки правильные, выводы тоже (тем более, что их можно найти
практически в любой статье, посвященной изучению распространения
вирусов). А вот в методе доказательства - дырка. На самом деле проблема
в том, что _множество_копий_ червя, сканируя IP-пространство случайным
образом и никак не согласовывая свои действия, неминуемо будут
обращаться к одним и тем же IP-адресам. А в той интерпретации, которую
привел автор ("попробуйте сгенерировать..."), задача решается
элементарно - применением конгруэнтного линейного ДПСЧ - см. статью
"Еще раз о случайных числах" в 5-м выпуске "Земского Фершала". Более
того, развитие этой идеи приводит к весьма интересным результатам - см.
статью "Как считать з-вирей" в 5-м выпуске "Земского Фершала".
> Стр. 107. Рис. 3.2. Зависимость удельной скорости распространения червя
> от времени.
Ни одного пояснения к рисунку, который, к тому же, приходится
рассматривать буквально под микроскопом. K
> Стр.. 112. Важно понять, что антивирусы вообще не могут справиться с
> червями. В принципе.
См. примечание к стр. 16. Кроме того, следовало бы определиться с
понятием "антивирус". Похоже, Крис на протяжении всей книжки имеет в
виду детектор-полифаг типа AidsTest. Да, именно в этом случае, пожалуй,
с его точкой зрения можно было бы согласиться. J
> Стр.. 113. ...подложить вирусу дрозофиллу...
"ДрозофиЛы - род двукрылых насекомых... и т.д." См. Советский
энциклопедический словарь. М: Советская энциклопедия, 1982. Буква "л"
одна.
> Стр. 121. Существуют сотни тысяч публикаций, посвященных проблеме
> переполнения...
Ну да, много. Но нуля три-четыре я бы от этого числа срезал бы. J
> Стр. 123. Автору приходилось сталкиваться с вопиюще небрежными
> листингами, которые работали как часы, потому что были сконструированы
> настоящими профессионалами...
Профессионал - это человек, у которого _все_ направлено на
получение требуемого результата. А запутанная, но работающая программа
(клудж) - это свидетельство крайнего непрофессионализма программиста,
по печальной иронии судьбы обладающего достаточно развитым интеллектом,
чтобы умудриться ее отладить. J
> Стр. 126. В классическом Паскале... указатели отсутствуют.
Гы... В нашей стране сотни ВУЗов обучают миллионы студентов именно
языку Паскаль, и каждый троечник знает, что в Паскале указатели
присутствуют, и в классическом (стандарт ISO) и в "неклассическом"
(Turbo Pascal или Object Pascal) вариантах. А вот Крис Касперски не
знает, и воткнул этот перл в самое видное место своей книжки. J
> Стр. 126. ...BFG-900...
Вообще-то, BFG-9000. J
> Стр. 132. Что интересного можно обнаружить в буферых?
В "буферЫх" - ничего. А в буферах - очень даже много "чего", будь
они программными, вагонными или дамскими. JJJ Очепятка.
> Стр. 142. ...строковой буфер...
СтроковЫй. Очепятка.
> Стр. 142. "трас-поточное"
Имелось в виду "траНс-поточное"? Очепятка.
> Стр. 148. Любители же "классической миссионерской" могут...
А где же слово "позы"? J Очепятка.
> Стр. 150. ...библиотеки NTDLL.DLL и KERNEL32.DLL всегда присутствуют в
> адресном пространстве любого процесса...
В Windows 9X - да. В Windows NT процесс, явно не импортирующий
KERNEL32 и запущенный не под отладчиком, получит шиш с маслом.
> Стр. 153. ...хранитЬся в третьем двойном слове.
Хранится. Очепятка.
> Стр. 159. ...Или впасть в бесконечный цикл (правда, при этом на
> однопроцессорных машинах загрузка ЦП может возрасти до 100%).
Sleep() внутри цикла, и никаких проблем с загруженностью.
> Стр. 159. ...Полувековые традиции вирусописательства...
Ну, на самом деле, лет 35. Да и первые лет 10-15 писались вири в
основном на каком-нибудь Фортране или даже на Бэйсике. J
> Стр.. 200. Дыра в плавающих фреймах затыкается специальной
> заплаткой, выпущенной Microsoft. Просто щелкните по следующей ссылке...
Формально абсолютно корректный, а на деле - абсолютно бесполезный
совет. Насколько я в курсе, для 99% локализованных IE версий 5.0 и 5.5
заплаток просто не существует в природе.
> Стр. 201. Печально, но определить наличие обновления другим путем... -
> невозможно.
В Интернете полным-полно "определялок", написанных "third party".
Вообще, забавно видеть в "хакерской" книжке (и на этой странице, и
далее) советы, рассчитанные на "носорогов". J
> Стр. 202. ...периодически контролируйте ветвь реестра
> HKLM\...\Run... ...Также контролируйте список процессов, вызываемый по
> Alt+Ctrl+Del...
Вообще-то, в этом месте явно и недвусмысленно напрашивалась главка,
наполненная РЕАЛЬНО полезными советами, содержащая полный список
опасных ключей рееста, методы перечисления активных процессов и
потоков, и т.п. Но автор предпочел формально отписаться, просто "шоб
було", воспроизведя без изменений свою же статью 3-4-летней давности,
уже и тогда бесполезную.
> Стр. 202. ...Большой беды не будет, если вы удалите все прописанные
> здесь штатные программы (включая служебные).
Вообще-то, этот "вредный совет" я несколько лет назад читал в
исполнении того же Криса Касперски, кажется, в журнале "Программист". На
самом деле не стоит так поступать (особенно по отношению к "профилю
повера"). "Чревато боком". :/
> Стр. 209. Известно, что на войне наибольшее преимущество получает
> не тот, кто в совершенстве владеет искусством битвы, а тот, кто
> заблаговременно построит больше оборонительных сооружений.
Гы-гы, вот так вот взял и одним махом зачеркнул Александра
Македонского, Тамерлана, Суворова с Кутузовым, генерала Брусилова с
маршалом Жуковым, и даже самого Василиваныча Чапаева. J
> Стр. 207. Boot form secondary device
Должно быть "from". Очепятка.
> Стр. 212. Код, завешивающий многие эвристические анализаторы.
Этот глюк уж года 3 как исправлен. Сколько ж можно тянуть его из
статьи в статью, из книжки в книжку? Ее теперь кулхацкеры будут еще лет
5 читать и делиться друг с другом в форумах "свежими" впечатлениями.
> Стр. 216. ...Утилита DUMPBIN, входящая в штатный комплект поставки
> любого Windows-компилятора.
На самом деле, очень даже не любого.
> Стр. 251. ...Если сбой старушки БЭСМ-6 был настоящим ЧП, то зависание
> современного компьютера...
"Не читайте перед обедом советских газет!" (с) Проф.
Преображенский. J И не стоит путать оригинальность и прогрессивность
аппаратной архитектуры с конкретным изделием. Типичная наработка на
отказ ЭВМ, собранной на отечественной элементной базе и работавшей в
нормальных условиях эксплуатации ... сколько бы вы думали?... всего
несколько десятков часов! А в "ненормальных" условиях и того меньше.
K Это вполне реальные цифры, а не восторженные воспоминания о чужой
комсомольской юности.
> Стр. 254. Исследуя чипсет VIA KT133, автор обнаружил несколько
> критических ошибок планировщика очередей...
Гм... Довольно наглое утверждение. J Может быть, у автора есть
полная фирменная документация на чипсет, включающая принципиальную
схему и алгоритмы работы планировщика очередей? Или он вскрыл
микросхемы паяльником и самостоятельно разобрался в их устройстве и
алгоритмах?
2. Общие впечатления
В последние годы KPNC извлекает 200% из результатов своей
деятельности: сначала публикует отдельные статьи в различных журналах,
потом выкладывает их в Интернет, наконец собирает их вместе и издает в
виде книжки. Получается "тематический сборник статей".
Это, несомненно, зер гут для самого Криса, который проживает в
маленьком городке и бумагомарание (точнее, дискоцарапанье) для него -
единственный источник существования. J Но с точки зрения целостности
книжки дас ист довольно-таки шлехьт. K
Слава Богу, грубых ошибок в книжке я не обнаружил. Но это не
значит, что их нет вообще. Ряд глав (особенно, посвященных UNIXам) я
просто пролистал с вежливым интересом. Думаю, что реальные спецы могли
бы сказать по поводу этих глав множество гораздо более интересных
вещей.
К тому же, как известно, не ошибается тот, кто ничего не делает.
Крис в этой книжке как раз ничего и не сделал. K
Каждая статья начинается с объемной "преамбулы", которые в чисто
журналистской манере содержат массу очень эмоциональных, но весьма
некорректных заявлений. Полным-полно подобного балласта и в теле самих
статей. Заметно, как преамбулы разных статей, прочитанные подряд,
противоречат друг другу (вероятно, потому, что написаны в разное время
и рассчитаны на разные круги читателей). Вообще, книжка временами
производит впечатление откровенной "несвежести". Стоило ли в очередной
раз публиковать сильно устаревшие и местами глюкавые статьи в
их прежнем виде?
Зато это первая книжка Криса, в которой практически отсутствуют
всяческие "опаньки", "тяпнутое пиво", "склеенные ласты", "прыгающая
блоха", "держи Тигру за хвост" и прочие фразеологизЬмы и аллегории,
каковыми весьма густо и не всегда по делу были усыпаны предыдущие опусы
упомянутого автора. Впрочем, взамен появились не менее обильные "пляски
с бубном" и "занятия Кама-Сутрой". J Опечаток в книжке по-прежнему
довольно много ("фе" корректорам издательства "Питер"), да и взятых с
потолка "фактов" тоже хватает ("фе" самому Крису).
Вероятно, кроме редактуры и корректуры книжки подобного плана
должны проходить рецензирование. Чтобы какой-нибудь незаинтересованный
дядька (или тетька) поругал автора не ПОСЛЕ издания, а ДО оного.
В общем и целом книжка меня не удовлетворила. K Она получилась
водянистой и скучной. Ее невозможно использовать ни как справочник для
спеца (ибо конкретной и полной информации в ней нет вообще), ни как
учебник для чайника (ибо некоторые разделы рассчитаны на человека, по
крайней мере пару лет поварившегося в системном программировании).
Новых идей, и даже свежей пищи для размышлений в ней тоже с гулькин нос
и кот наплакал. Есть в ней, конечно, пара-тройка забавных мест
(например, почти вся глава "Побег через брандмаузер" и большие куски из
главы "Вирусы в UNIX"). Но это процентов 10 общего книжного объема.
Впрочем, есть мелкие свидетельства, что Крис решил идти до конца и
сочинить "Записки-2" и "Записки возвращаются" (по крайней мере, уже
валяются в Интернете статьи про загрузку PE-программ и про внедрение в
них вирусов). У Криса же каждое лыко в строку. J Хотя, вполне перхапс
пробабли, что это не будет отдельной книжкой, а войдет в качестве
приложения к какому-нибудь "Предсказанию погоды" или "Разведению
опенков" (как в свое время в "Укрощение Интернета" вошли
астрономические фантазии).
Если из этого получатся опять-таки "Записки-2", то лучше уж Крис
дописал бы "Технику сетевых атак-2" или занялся бы давно обещаным
"Учебником по ассемблеру".
Хау, я все сказал.
|