или даже тысячами неудержимо размножающихся программ.
Вирус выполняет функции обеих вышеописанных программ. Программа (спрятанная, подобно 'троянскому коню', внутри прикладной программы) саморазмножается, пока возможно, а затем взрывается (как логическая бомба).
Логические бомбы опасны, но, по крайней мере, известно, чего от них ждать. Вирусы же и черви, в отличие от логических бомб, не только опасны, но и непредсказуемы. Я убежден, что настоящий хакер никогда не создаст червя, поскольку они слишком деструктивны и бессмысленны. Но он может воспользоваться вирусом, при условии, что вирус не причинит вреда системе, самоуничтожаясь по мере своего продвижения, и ни разу не появится на одном и том же месте дважды.
Вирус может пересылать пароли с помощью электронной почты по определенному адресу, с помощью метода перебора в конце концов проникать в системы и т. п. Существует много путей применения вирусов, но их трудно использовать безопасно.
Ходили слухи об одном микрокомпьютерном вирусе, который, если бы он действительно существовал, согрел бы сердце каждого хакера. Он назывался ATandTack Virus. Скопировав себя на компьютер, он сразу же пытался найти Hayes-модем или совместимый. Если таковой существовал, вирус выключал динамик модема и соединялся с заранее запрограммированным номером. После этого, естественно, любой, кто находился по вызванному им номеру, получал удаленный доступ к вашему компьютеру.
Лично мне кажется, что это не более, чем слух. Разумеется, на данный момент ни одна из коммерчески доступных программ обнаружения вирусов не содержит никаких упоминаний о ATandTack Virus. Но мне кажется, что такая штука лучше работала бы в качестве 'троянского коня', размешенного в графической программе, нежели в качестве вируса.
Одним из достоинств 'троянских лошадок' и вирусов является конструирование каналов для сбора данных и пересылки их к вам в удобочитаемой форме. Допустим, вирус присоединяется к программе загрузки и собирает пароли. Нет смысла отправлять этот вирус гулять по всему свету, не питая надежд заполучить в свои руки те пароли, которые он соберет. Как я уже упоминал, вирус может периодически пересылать вам пароли с помощью электронной почты (но только не в ваш легальный бюджет!).
Можно также шифровать почту перед отправкой. Проблема с шифрованием состоит в том, что вам понадобится ключ. Любой, кто обнаружит ваш вирус или 'троянского коня', легко сможет вычислить ваш ключ и понять, что за почту пересылает вирус (или какие временные файлы создает 'троянский конь'). Значит, вам придется зашифровать этот ключ... а для этого нужен еще один ключ... а его тоже надо как-то обезопасить... значит, еще один ключ... И так - до бесконечности. Но давайте разберемся в ситуации.
Если вы собираетесь так или иначе прибегать к кодированию, будет проще заставить ваш вирус или 'троянского коня' посылать зашифрованные данные в какую-либо большую, не подвергающуюся цензуре конференцию. Недостаток: вам придется мистифицировать почту, иначе кто-либо заметит, что пользователь (который, сам того не зная, приводит в действие ваш вирус) посылает слишком много 'мусора'.
Вы можете также подгрузить зашифрованный файл во входную директорию какого-нибудь анонимного FTP. Убедитесь, что компьютерная зашита позволит вам затем выгрузить файлы из этой директории, поскольку зачастую она не разрешает это делать.
Для пересылки коротких сообщений (например, одного пароля) ваша программа-обманка может временно переименовать какой-либо файл с очень низкой степенью зашиты (атрибуты которого способен изменить кто угодно) в это сообщение. Ваш 'троянский конь',вирус будет входить в директорию, маскируясь под различных пользователей сети, и пытаться переименовать файл в данное сообщение. Ваш 'троянский конь',вирус не должен оставлять сообщение об ошибке. (Вы можете 'вживить' блок постоянного наблюдения, который в виде фоновой задачи будете следить за состоянием этого файла; как изменится имя файла, фоновый процесс сохранит новое имя, а после вернет файлу его первоначальное имя.
Другие короткие сообщения можно пересылать по битам. Например, если файл Х находится в определенной директории, ваша программа посылает вам цифру 1, а если директория пуста - цифру О. Фоновая задача в то же время следит за появлением и исчезновением из вашей директории этого файла. Когда соберется необходимое количество нулей и единиц (восемь для ASCII-кодов), программа переводит их в символы сообщения. Например, 01000001 - это заглавная 'А'. 01000010 - 'В', и т. д. Чтобы послать восьмизначный пароль, вашему вирусу или 'троянскому коню' потребуется 64 уничтожения и восстановления файла X. Биты будут пересылаться по одному, тогда, когда спрятанная программа сможет делать это незаметно.
КАК выбраться ИЗ заточения на волю
Допустим, вы совершили взлом, но единственный доступ, который вы обнаружили, это доступ к двум- трем командам или неинтересному информационному блоку. В этом случае вам придется думать, как выбраться из этой программы-тюрьмы и вернуться на уровень операционной системы. Если прежде вы серьезно занимались программированием, ваша задача облегчится.
Программист знает типы лазеек и ошибок, а также способы их обнаружения. Если он завязнет в бюджете, который запускает информационную программу, то использует все, даже самые неожиданные, способы в поисках вещей, от которых человек, создавший эту программу, не додумался защититься, в надежде получить сообщение об ошибке и вырваться к приглашению ОС.
Вот что можно попробовать.
Вводить неверные, неподходящие или слишком длинные ответы на приглашения; особенно подойдут буквенные ответы вместо требуемых числовых. Или, если вас просят ввести число, которое будет анализироваться функцией, попробуйте ввести слишком маленькое или несуразно большое. Попытайтесь вводить ответы с прерыванием, типа Ctrl-Z, Ctrl-C или даже Ctrl-P. Постарайтесь использовать команду 'Find' для поиска вне доступных ресурсов. Посмотрите, нельзя ли установить программы для несуществующего аппаратного обеспечения или объема памяти.
Если в ловушке имеется нечто вроде текстового редактора, например, программы для пересылки почты системным операторам, попробуйте создать резервный файл и послать ваше сообщение в качестве команды на выполнение. Можно также попробовать создавать несоразмерно большие сообщения. Если в редакторе имеются специальные функции проверки текста, напишите громадный абзац, поместите в буфер и скопируйте под первый. Затем проделайте то же самое с двумя абзацами, и т. д., до тех пор, пока программа либо не даст сбой, либо не разрешит вам продолжать. Если это письмо, посмотрите, что получится, если вы попытаетесь сохранить или послать все сообщение целиком.
Вы можете оказаться в программе, похожей на обычную ОС или управляющую программу, в которой меню со списком опций либо недоступно, либо вызывается с помощью команды HELP. Вам выдается приглашение к вводу команды. К некоторым прикладным командам добавляется имя файла, с которым вы собираетесь работать (например, для редактирования файла с помощью текстового процессора:
'WORDPROCSTORY.DOC'). Если система работает в режиме онлайн, попробуйте ввести таким образом слишком много данных ('WORDPROCSTORY.DOC FILE.ONE FILE.TWO...') или неподходящие данные. Например:
WORDPROCWORD.PROC WORDPROCdirectoryname WORDPROCnonexistent-filename WORDPROC,etc,date,4.
Тактика 'неподходящих данных' с успехом применялась до последнего времени. Можно прибегнуть также к переполнению стека команд, т. е. размещению множества команд в одну линию. Команды могут быть разделены пробелами, скобками, слешами, или другими знаками пунктуации. Синтаксический анализатор может оказаться не в состоянии интерпретировать слишком большое количество команд. Если строчный редактор не разрешит вам вводить столько строк, попробуйте с помощью программирования создать впечатление, что большой стек команд послан прямо с клавиатуры.
Если в вашем распоряжении имеется язык программирования или компилятор, попробуйте поставить какие-либо величины на места, вовсе для этого не предназначенные. Возможно, вам удастся откомпилировать программу в специальные области памяти, записав ее поверх машинной программы, которая препятствует вашему продвижению вперед, или заставить программу переместиться в новое положение, где можно будет прибегнуть к дополнительным инструкциям.
Наконец, попробуйте загрузить программу в редактор электронной почты, или любой другой, или программу-доктор, и изменить ее так, чтобы она разрушалась при запуске.
Дефекты наиболее часто встречаются в следующих видах программного обеспечения: Новое ПО