Содержание статьи
Культ Живой Коровы
По соотношению «обычный пользователь»/«высококвалифицированный IT специалист»
первое место в мире занимает США. Им на пятки наступают техномонокультурные
державы будущего – Китай и Индия.
Но по раскладу «обычный пользователь»/«хакер» прочно лидирует российский
интернет. Связано это с тем, что у нас высокий уровень технического образования
и, в том числе, самообразования, а молодым выпускникам часто выгодней заниматься
взломами, чем работать на информационную безопасность страны или выстругивать
софт зарубежных компаний. В рунете практически нет глубоко законспирированных
хакерских кланов или всемирно известных IT-гуру, каждый знает «по чуть-чуть», но
охотно делится с окружающими специфическими знаниями, увеличивая общую массу
глуповатых, но смертельно опасных для окружающих «хакеров». Там, где мы не можем
взять умением или ловкостью, в дело идёт грубая сила. Хороший пример стадности и
силы русских «хакеров» - атака на Эстонские сайты весной 2007, когда к
ddos атакам попытался приложиться каждый, кто более-менее разбирал значения слов
«пинг» и «сервер». В результате несанкционированных атак в четырёх дневном дауне
пребывали десятки порталов. Это беспрецедентный случай массового кибервторжения.
Ни китайские атаки на серверы США, ни окопная война между программистами джихада
и западной демократией не давали такие результаты в столь короткие сроки.
Для крупномасштабной кибервойны это, конечно, не тактика, но она
демонстрирует блестящую возможность построения опасного и практически
неуничтожимого социума. Нет главной организации, нет авторитетов, нет хакерских
кланов, нет единого фронта атак, нет тактики – рой хаоса, уничтожить который
очень сложно. У роя есть только одно общее – цель, а всё остальное –
индивидуальные предпочтения и уровень образования. Но лишите рой цели – и он
рассыплется как улей без Королевы.
Хороший пример «борьбы ради цели» продемонстрировали русские программисты на
конкурсе по программированию. В импровизированном виртуальном террариуме
всем желающим предложили развить компьютерные программы, имитирующие поведение
травоядных и хищников. Программисты устанавливали свойства существа (дальность
зрения, максимальная скорость движения, сила атаки, сила защиты и т.п. – общая
сумма была ограничена), алгоритмы его поведения (по какой траектории
передвигаться; в каких случаях атаковать; есть все, что обнаружишь, или оставить
немного и т.п.). Задача состояла в том, чтобы как можно больше питаться,
размножиться, вытеснять другие виды животных. Важно учитывать, что по условиям
конкурса, животные не могли напрямую передавать друг другу информацию о
хищниках, еде и других факторах окружающей среды, но могли все вместе
действовать как одна особь. В итоге всех конкурентов победили необычные животные
наших программистов – виртуальные коровы, наделённые минимум необходимых
инстинктов: если корова видела траву – она бежала к траве, если одна корова
видела другую бегущую корову, она начинала бежать в том же направлении. Если в
поле зрения наших коров не было травоядных своего вида, они с максимальной
скоростью съедали всю доступную траву и сами впоследствии гибли от голода.
Лишившись травы, все прочие травоядные в ареале погибали. В результате массового
исчезновения травоядных вымирали и хищники.
Вы уже сложили «2 + 2» и поняли, что хакерское сообщество России живёт по тем же
виртуальным законам. Если есть уязвимость – ковырять её всем вместе. Если можно
что-то взломать, надо это взломать. Если у нас появился враг, надо его хотя бы
укусить. Эта простая модель поведения легко описывается математическими
формулами школьного курса. А математика даст нам ответ, почему хакерство так
эффективно, всеобъемлюще и неистребимо.
Террариум информационной безопасности
На вопрос «почему вирус весит килобайты, а антивирус – мегабайты, то есть в
тысячи раз больше», IT-спецы отвечают мантрами «ломать не строить», «вот будут
каналы позволять – будут вам такой зловредный софт». Большинство программистов,
работающих в сфере безопасности, ничего не знают о высшей математике, теории
хаоса и сингулярной эволюции. Все эти науки разным константами и теориями
описывают сегодняшнюю сферу безопасности, но сходятся в одном: если система
стремится развиваться, а не выживать, она будет увеличиваться в размерах. Вот
так! Выживание и развитие, оказывается, совсем не одно и тоже. Примеров вокруг
масса, рассмотрим самые тривиальные из них.
Динозавры, мамонты и прочие гиганты вымерли тысячи лет назад, в то время как
тараканы, некоторые виды моллюсков и рыб, а так же вирусы (которых вообще сложно
причислить к полноценной органической жизни), спокойно дожили до наших дней и
живут среди нас.
Примерно каждые десять тысяч строк кода содержат хотя бы одну ошибку.
Чем больше программа, тем больше ошибок. Это не из шутливых законов Мерфи, это
закон, который действует от уровня ДНК до суперструн и 23х (предположительно)
измерений метавселенной. Чем больше ДНК – тем больше генетических сбоев, ошибок
и возможных мутаций. Не удивительно, что самые совершенные животные на Земле –
это вирусы (биологические), у них вообще нет ДНК. А самые болезненные и в массе
своей не приспособленные к жизни – люди.
Капля океанской воды устойчивее в пространственно-временном континууме, чем
галактика. Капля испарится, конденсируется, вернётся дождём – ничего ей не
будет. Галактику поглотит сверхмассивная черная дыра – и всё. Не будет больше
ничего. Простота – не просто залог успешной программы и любви пользователей. Это
вселенский закон, настолько всеохватный, что представить масштаб его не
возможно.
Но вернёмся к нашим любимым средствам компьютерной безопасности, каждая новая
версия которых весит больше предыдущей, включает больше функций и оперирует
самыми немыслимыми средствами защиты. Значит ли это, что вирусы, трои, черви и
прочий хоррорсофт становится более совершенным и мощным? Вовсе нет. Более того,
в большинстве случаев никакой антивирус не спасает от действий самого
пользователя, разведённого
каким-нибудь тупым ботом. Нельзя написать программу, которая будет на лету
ломать чистый html, выкорчевывать защиту на уровне ядра и глушить каналы
терабайтным спамом. Зато можно придумать эффективный способ воровать пароли от
ящика, прикидываясь службой технической поддержки или любимой девушкой.
Средства зашиты ВСЕГДА совершеннее и сложнее, чем инструменты взлома. Они
ВСЕГДА на шаг впереди, хотя бы потому, что нельзя взломать защиту, которая ещё
не изобретена. На них ВСЕГДА тратятся огромные деньги, за которые люди
выкладывают все свои идеи и ментальные силы. Но что делает взломщик? Вот
потратили на защиту HD-DVD миллионы долларов, а сколько человеко/часов затратил
хакер, осуществивший взлом защиты от копирования? 20 баксов на пиво? 🙂
На самые разрушительные вирусы в истории их авторы не потратили
НИЧЕГО. Никто не заработал на том, что взломал лицензионный ключ. В то время как
авторы-разработчики софта, защитных систем, получают действительно впечатляющие
гонорары. И логика в этом только одна: жизнь всегда найдёт себе дорогу. Системы,
которые хотят сохранить себе жизнь, не стремятся к развитию, они подчинены
единственному бессознательному чувству – инстинкту самосохранения. Что хочет
автор вируса, заразить тысячи компьютеров и своровать номера кредитных карт?
Глупо. Автор вируса бессознательно стремится к тому, чтобы вирус выжил. Вы же
хотите, чтобы ваши дети жили, не так ли.
Системы, которые развиваются от простого к сложному, обречены на вымирание.
Жизнеспособность определяется следующими факторами: отсутствие единого центра
управления, наличие цели, желание выжить, способность к массовому
саморазмножению, стремление к самопожертвованию особи ради выживания сообщества
в целом, остро-враждебное отношение к представителям других видов, отсутствие
абстрактного мышления. Как видите человеческое общество к выживанию не
приспособлено, а вредоносные программы – вполне.
Идеальный взлом идеальной защиты
Руководствуясь дао-принципами гениальности и простоты попытаемся создать
вирус, который как и виртуальные коровы, уничтожит всех «хищников-антивирусов».
Теория говорит нам, что это возможно.
Ничто не может быть идеальным – это один из фундаментальных законов нашего
мира. Чем более сложна система, тем она менее идеальна. Совокупность сложных
систем по экспоненте двигает надёжность к абсолютному нулю. Иголка с ниткой в
тысячу раз надёжнее швейной машины. Наш квази идеальный вирус в миллион раз
надёжнее, чем компьютер, операционная система, пользователь, сеть, защитный софт
– потому что они совокупные части сверхсложной системы. А у нас только
шестнадцать килобайт кода. Самый слабый элемент системы сильнее, чем вся система
в целом, потому что он проще. Поэтому вирус атакует всю суперсистему в целом.
Сеть, программы, пользователя в конце концов. Вирус, который одновременно влияет
на все элементы системы, практически непобедим. Такой вирус, при правильном
позиционировании, способен разрушить весь интернет. Правда корневая структура
www содержит слишком много разветвлённых элементов, одновременная атака на
которые маловероятна. Это и корневые DNS, и несколько электростанций, и с
десяток dataцентров, пользователи опять же. Однако если в теории ядерная война
интернет не уничтожит (доказано математическим моделированием), но какой-нибудь
глупый и простой МАТЕМАТИЧЕСКИЙ способ, до которого просто никто ещё не
додумался, способен не только интернет отключить, но и жизнь на планете до
уровня бактерий свести. Без всяких солнечных мегатонн.
Если нет возможности построить вирус из восьми байт (а лучше одного!) надо
его собрать из как можно меньшего количества простых блоков. Каждый блок будет
отвечать за свою простую функцию, но будет делать это хорошо и без ошибок. Чем
проще, тем лучше. В идеале: так просто, что никакие защитные средства не
додумаются искать уязвимость ТАМ.
Отгородиться от идеальной атаки можно двумя способами. Закопать нашу
компьютерную систему посреди пустыни, поставить сверху военный городок, окружить
всё роботами и повесить на орбите военные спутники с термоядерными боеголовками.
Но в один прекрасный день хитроумный электротаракан, с загруженным в мозг
простым и надёжным как АК-47 вирусом, проникнет в нашу систему. Потому что
«жизнь всегда найдёт себе дорогу». Сложная система, которая пытается
защититься, будет взломана по определению. Это комический закон и, если
понадобится, вся вселенная подстроится под его осуществление.
Другой способ заключается в том, чтобы регулярно восстанавливать систему и
вычищать от последствий вторжения. Это означает, что систему будут взламывать
постоянно. Однако с каждой успешной атакой взломщиков, она будет становиться
чуть совершеннее. В перспективе её не погубит даже массированное долговременное
вторжение. Система будет малоэффективна в режиме реального времен, но в
долгосрочной работе способна будет существовать без сбоев. Её будут ломать, но
на результатах работы это не отразится. Ваш сервер потрошат хакеры, а
пользователи замечают лишь миллисекундную задержку. Атака прекращена – и
работает всё без последствий.
Оптимальным соотношением станет сочетание этих двух тактик. Причём, в
зависимости от специфики нашей деятельности, одна из тактик будет доминирующей.
Таким образом, оптимальной стратегией можно считать такое отношение большой
доминирующей системы к малой подчинённой, как их сумма к большой системе. Это
называется «золотым сечением» и математически выглядит так: (1 + √5)/2 = 1.618.
До недавнего времени принято было считать, что объекты, содержащие в себе
«золотое сечение», воспринимаются людьми как наиболее гармоничные. Последние
исследования в области теории математики показали, что системы, построенные на
принципах «золотого сечения» более устойчивы к внезапным изменениям окружающей
среды.
В общем виде вы должны понимать, что нельзя создать систему, которую никто
не взломает. Делать это даже опасно! Система должна проектироваться с
расчётом на то, что она будет взломана. И метода защиты непременно должны
включать в себя способы восстановления. Антивирусы и фаерволы – форпосты и
основные инструменты безопасности – в большинстве случаев не предоставляют нам
возможность восстановить систему после атаки. Они действуют по изначально
ущербной методике «не пропустить вторжение!» и «найти и уничтожить!» Как вы
понимаете, компьютерная сеть, безопасность которой охраняется таким образом,
обречена на уничтожение. Простой и примитивный вирус, написанный
студентом-старшекурсником в качестве дипломной работы, способен уничтожить даже
самую надёжную коммерческую систему. Рассмотрим более подробно, почему это
происходит.
По ту сторону огня
«Огненные стены» и антивирусы – продукты в массе своей коммерческие. Пишутся
они за деньги. Задачи, которые должны выполнять защитное ПО, огромны. Никогда не
знаешь откуда ждать вторжения. Чем больше у софта задач, тем в больших
критических ситуациях он может оказаться, пока, в итоге, не придёт к полному
дестрою.
Подобный софт пишет большое количество человек. Каждый человек – это уже
большая сложная система с огромным количеством ежеминутно решаемых задач. Мозг
должен помнить как дышать, решать что купить на ужин, думать почему у жены
задержка – в таких условиях приходится писать и отлаживать код. Люди не
автоматы. Многие люди даже с теорией автоматов и сложных систем не знакомы. Их
ошибки (часто, генетические) переходят их продуктам.
Чем лучше защитная система ожидается на выходе, тем труднее организовать
производство. Простая теория «чёрного ящика». Вы примерно представлять как
организовать работу программистов, эффектно представляете, что должно получиться
в итоге, и совершенно не представляете, что конкретно в эту минуту делает
программист Петров и какие новационные задачи мечтает внести в ваш продукт
Иванов из соседнего отдела. Вы не имеете четких представлений о процессе
создания программного продукта. В результате фатальные ошибки всегда неизбежны.
Люди есть люди.
Но вместо того, чтобы принять это как должное, Лаборатории Касперского и
прочие НИИ сетевой инквизиции с упорством наркоманов латают дыры и выпускают
новые, более «развитые» версии. Наверное, в недрах разрабатывают закон о
смертной казни за хакерство, вместо того, чтобы совершенствовать технологии
восстановления системы. Такие технологии есть, но от сторонних разработчиков.
Никакой интеграции. В итоге имеем две разные, одинаково уязвимые системы,
которые еле сосуществуют на третьей, в конец ненадёжной, под руководством
генетически не совершенного пользователя.
Создать гениальную защиту до смешного просто. Напишите программу,
которая будет следить за работой антивируса и, в случае чего, восстановит его,
докачает потерянные в борьбе файлы. Научитесь работать по принципам хакерского
программирования. Почему антивирус не может саморазмножаться? Это существенное
упущение. Он обязан создавать десятки своих копий.
И это только начало. Самовосстановление должно распространяться на каждый
элемент системы. На пользователя в том числе! Если он полный дебил, не
позволяйте ему делать в системе всё, что он захочет. Закройте ядро, запретите
навсегда открывать папку Windows. Пока вы не возьмёте на вооружение хакерское
оружие, будете гибнуть один за другим. Да-да, разработчики, я к вам обращаюсь!
Большая система не должна быть зависима от своих частей. Разберите её на
части – она будет жить по частям. Вот пример настоящего вредоносного софта. Как
его не кромсай, будет только больше простых и более эффективных (!) частей.
Математический принцип матрёшки. Распараллельте задачи, уберите все критически
важные для функционирования части. И получите идеальный инструмент атаки. Или
защиты. Взломы существуют лишь до тех пор, пока есть разница между системами
защиты и системами атаки. Уберите разницу и мы получим рекурсию. Борьба будет
продолжаться, взломов будет ещё больше, на безопасность будет тратиться
миллиарды долларов, хакеров будут в конце концов подвергать высшей мере
наказания, но конечный пользователь ничего не заметит. Чтобы в итоге, заходя на
любимый Xakep.ru, видеть не «Deface by Pupkin-Zade», а 100 % зеркало оригинала.
И так во всём, весь мир в зеркалах, которые отразят только то, что мы хотим
увидеть.