Ручная троянизация

Крис Касперски ака мыщъх

Хакер, номер #080, стр. 080-120-1

(FreeBSD@smtp.ru)

Внедряем свой код в приложения под windows

Троянизация приложений - весьма перспективная для хакера штука. Она позволяет ему с невиданной скоростью распространять трояны под видом самых обычных программ. Причем не просто под видом. Программы продолжают работать и нормально функционировать, не выдавая его вредоносного кода, который спокойно и тихо гадит пользователю, снифая клаву, воруя пароли и т.п. Прочитав эту статью, ты поймешь как хакеры внедряют свой вирусный код в приложения, не портя работоспособности последних. Ты, конечно, сообразишь как этот код обнаружить и извлечь.

Наши эксперименты будут носить совершенно невинный характер. Мы возьмем стандартный notepad.exe и будем над ним издеваться - внедрять код, изучать всячески, мучать. Лицензионное соглашение от Microsoft нам придется разорвать. Причем на мелкие куски. Оно нам больше не понадобится. Модификация notepad'а аннулирует все льготы, обязательства и гарантии со стороны Microsoft. Свежую Windows со скидкой уже не получишь! Ну и больно надо! Поставим Linux! Но это потом, а пока…

[джентльменский набор]

Большинство хакерских статей, рассказывающих о троянизации приложений, предлагает напрямую править их в HIEW или любом другом HEX-редакторе. Но это порочная практика (живодерство сплошное)! Полноценную программу в HIEW не напишешь, а если и напишешь, то потом не изменишь, ведь чтобы добавить одну-единственную команду приходится перебивать весь код целиком.

Поступим умнее! Наберем программу в своем любимом редакторе, например, TASMED, WinAsm Studio или FAR'е и откомпилируем ее FASM'ом. Полученный двоичный файл будет легко вставляться HEX-редактором в любой экзешник. Ну, или почти в любой.

Еще нам потребуется IDA Pro или другой приличный дизассемблер, которым мы будем исследовать подопытный файл. Отладчик - SoftIСE, MS DBG или OllyDbg. Он поможет найти ошибки во внедряемом коде. Крайне маловероятно, что написанная нами программа заработает с первого раза, поэтому без отладчика далеко не уплывешь.

Остальные ингредиенты (пиво/квас/сигареты) по вкусу.

[куда податься?]

Проще всего внедряться в свободное место файла. Кстати, предупреждаю, что троянизируемый файл мы будем называть дрозофилой, а внедряемый код - бациллой. Если свободного места нет, можно раздвинуть последнюю секцию и внедриться в нее, но это намного сложнее, поэтому такой способ здесь рассматриваться не будет. Если тебе все-таки интересно, как подобное реализуется - топай на www.wasm.ru за статьей «пути воина - техника внедрения в PE-файлы».

Типичный PE-заголовок вместе с таблицей секций и MZ-заголовком занимает чуть больше 200h байт, а минимальное физическое выравнивание внутри файла (File Alignment), которое только поддерживает Windows, как раз и составляет 200h! Таким образом, в нашем распоряжении оказывается практически 200h незанятых байт или даже больше! Для ускорения загрузки файла большинство линкеров выравнивает адрес начала первой секции не по File Alignment, а по Section Alignment, который никак не меньше 1000h. Как следствие - наши владения увеличиваются до E00h байт. Для ассемблерных программ это целый материк, на котором и слона разместить можно. Ну, если не слона, то полноценную бациллу - точно! В упакованных файлах, заголовок прижат к первой секции практически вплотную, поэтому, перед началом внедрения их необходимо распаковать.

Содержание  Вперед на стр. 080-120-2
ttfb: 3.7040710449219 ms