Денис Ферри - Секреты супер хакера
Какие действия, помимо секретных, могут выполнять "троянские кони"? Вот несколько предложений:
Можно тайно перепрограммировать саму BBS так, чтобы в ней оказалась лазейка. Если программа BBS написана на интерпретируемом языке, "троянский конь" может добавлять несколько строк, которые дадут вам операторский доступ при вводе определенного кодового слова. Именно так и произошло с популярной электронной доской объявлений Commodore 64, написанной на Бейсике.
Вы можете запрограммировать "троянскую лошадку" так, что она будет заглядывать в файл, содержащий пароли, и каким-либо образом пересылать содержащиеся в нем данные обратно к вам. Во многих BBS существует секция текстовых файлов. Можно сделать так, что ваша программа будет зашифровывать пароли, добираясь до них, а затем присоединять в конец одного из текстовых файлов. Затем вам останется только загрузиться, просмотреть файлы, взять закодированные пароли и расшифровать их. Другие люди, читая текстовые файлы в режиме онлайн, примут случайно расположенные на первый взгляд символы за помехи в линии передачи или безвредное искажение файла.
Другой способ отправить себе информацию о паролях состоит в использовании функции электронной почты BBS. Дабы избежать подозрений (системные операторы обожают читать электронную почту, которую пользователи посылают друг другу), вам следует, опять же, закодировать информацию и включить ее в какую-либо другую порцию электронной почты.
"Троянский конь" может содержать приближенную версию какой-либо ключевой части самой программы BBS. Затем "лошадка" извлекает искомый кусок и копирует его поверх легальной версии, записанной на диске.
Как скрыть деятельность "Троянских коней"
Когда вы загружаете в систему программу, содержащую "троянского коня", вам следует иметь в виду два момента: Вашу "лошадку" могут обнаружить в процессе ее работы. Ее могут обнаружить либо до, либо после прогона.
Давайте по очереди рассмотрим эти две проблемы.
Во время работы
Рациональному хакеру легче избежать этой опасности, чем злонамеренному разрушителю системы. Дело в том, что, если Юнец Джо напишет программу, которая тайно переформатирует жесткий диск, в то время как лампочки жесткого диска будут непрерывно зажигаться, на экране должно происходить нечто, способное отвлечь внимание пользователя. Юнцу Джо следует с умом соорудить некий не интерактивный "тайм-киллер", который будет развлекать пользователя на протяжении всего времени, которое понадобится для форматирования диска или для уничтожения файлов. Это может быть порнографическая картинка (возможно, дополненная цифровыми звуковыми эффектами: "О! О, детка! М-м-м..."), или цифровая музыкальная партитура; программа может также посылать графическое изображение на принтер. Между тем ваши быстродействующие "троянские кони" ("спринтеры") будут в срочном порядке делать свое дело.
Никогда не допускайте вашу программу на жесткий диск (или любое периферийное устройство), если системный оператор не сможет увидеть причины для этого. В то время как "троянский конь" будет заниматься своим делом, на экране должно быть сообщение, дезинформирующее оператора о работе программы. Например, если "лошадка" спрятана в игре, она должна посылать на экран сообщение вроде: "Сохранение вашего последнего счета...", тогда как на самом деле программа будет копаться в пользовательских файлах доступа (или делать что-то еще, на ваше усмотрение). Не забудьте о том, что попутно программа действительно обязана сохранить новое количество очков пользователя, а общее время ее работы должно быть весьма кратким. Как только "троянский конь" закончит работу, программе следует стереть с экрана сообщение; это позволит убедиться в том, что работа программы с жестким диском не вызвала подозрений. Если будет возможность, сотрите сообщение с экрана посреди работы "троянского коня", чтобы создать иллюзию очень малого времени обращения к жесткому диску.
Другой способ незаметно добраться до диска состоит в том, чтобы в начале работы программы выдать на экран нечто типа:
AutoCheck Virus Detection Program v1.3 (c)opyright 1992 Paul Bradley Ascs.
Scanning file FILENAME.1 for viruses..... Scanning file FILENAME.2 for viruses...
А тем временем "троянский конь" будет "проверять" жесткий диск компьютера на пароли!
В качестве FILENAME.1, FILENAME.2 и т. д. можно вставить имена программ и файлов данных, которые были загружены вместе с приложением. Замечательным штрихом будет не мгновенное, а постепенное появление на экране скобок (...) после каждого обращения к жесткому диску, дабы создать впечатление, что программа действительно проверяет файлы на вирусы.
"Прикрыть" деятельность "троянского коня" (в соответствующих обстоятельствах) можно также с помощью сообщений типа: открытие файла данных, чтение данных, сохранение выбора перед выходом,
Загрузка текста
Сообщения всегда должны соответствовать тому, что в действительности происходит в видимой части программы.
"Троянские кони", выполняющие функции BBS (такие, как изменение паролей), должны, если возможно, делать это путем прямого доступа к диску, не используя программу BBS. Это позволит вам обойти любые защитные протоколы и распечатки подозрительных действий.
До и после
Системные операторы, администраторы систем и даже обычные пользователи стали теперь осторожнее относиться к пересылке файлов. Они, как минимум, опасаются вирусов, и изучают программы перед тем, как их использовать, более тщательно, чем когда бы то ни было раньше.
Это означает, что они будут проверять ваши подгруженные программы на вирусы с помощью сканера. Такая проверка практически неизбежна, но бояться нечего, так как существующие программы проверки на вирусы не смогут обнаружить вашего "троянского коня" ни в одном из законных файлов. Вам следует опасаться только того, что системный оператор или менеджер станет собственноручно изучать ваши подгруженные программы в поисках нецензурных слов или ошибок.
Как и в предыдущем случае, сознательным разрушителям и системным вандалам придется труднее, чем вам. У них есть текст, который им придется прятать внутри своих программ. Например, всем известен вирус, или логическая бомба, которая вопит "GOTCHA!!" ("Попался!"), когда записывается поверх таблицы размещения файлов. Существующие программы ищут в файлах именно подобные веши. Даже если у оператора не имеется соответствующей программы, но он достаточно наблюдателен, разрушительское "GOTCHA!!" будет замечено еще до того, как программа начнет работать.
Ваших "троянских коней" не придется прятать слишком тщательно. Весь текст в ваших программах будет состоять из текста, который так или иначе будет выведен на экран: текст, либо являющийся частью прикладной программы, либо текст, который исходит из программы, а на самом деле прикрывает деятельность "троянского коня". К тому же в вашей программе не будут торчать, подобно ослиным ушам, команды типа "format с:". Таким образом, ваша работа легче, чем у кракера, хотя далеко не является пустяком.
В вашей программе могут быть команды чтения, записи или изменения хранящихся в BBS личных файлов. Системный оператор не должен обнаружить ни таких команд, ни, тем более, имен файлов. Использовать для кодирования команд и имен шифр "на одну букву выше" нежелательно, так как существуют программы, которые сканируют файл и выводят на экран содержащийся в нем удобочитаемый текст. Если вы просто замените все буквы следующими по порядку (т.е. PASS превратится в QBTT, и т. п.), в программе все равно останется текст в закодированном виде, и оператор может догадаться, что он означает. Лучше, если вы закодируете текст, используя цифры, символы или иностранные алфавиты.
Программа, в которую вы вставите "троянскую лошадку", может являться не откомпилированным исходником или пакетным файлом. В этом случае, чтобы спрятать "троянских коней", вам понадобится некоторая ловкость рук. НИКОГДА не загружайте пакетный файл просто так, в его первоначальном виде. Представьте себе состояние системного оператора, получившего от пользователя следующее:
cd BBSUSERS
open USERINFO.TXT
read USERINFO.TXT: User#44
set systemlevel 3 == systemlevel 99
close
exit
Это не настоящая программа. Я привел ее в качестве примера наглой попытки повышения уровня доступа, которая неминуемо привлечет внимание системного оператора.
Один из способов избежать этой проблемы - заставить ведущую прикладную программу создавать пакетные файлы и другие программы, которые для этого требуются. Пакетные команды запускаются как закодированная абракадабра в прикладной программе. Требуется подпрограмма, которая открывала бы текстовый файл, расшифровывала команды, наполняла ими файл, а затем делала свое дело. Создание и использование файла могут происходить в различные промежутки времени, чтобы не удлинять время нелегального доступа к диску.
В легко читаемых источниках "троянская лошадка" также не должна стоять в самом начале или в конце листинга. Засуньте ее поглубже в программу. Добавьте комментарии, способные отвлечь внимательного читателя. И помните, если ваша прикрывающая программа будет особенно умно сделанной, системному оператору может захотеться проанализировать ее, чтобы понять, как это вы добились столь выдающихся результатов! Это означает, что прикрывающая программа может оказаться объектом пристального внимания, и вашего "троянского коня" могут случайно обнаружить.