Вирусы в UNIX, или Гибель Титаника II


Сжатие части оригинального файла - часть 4


 

Рисунок 5 0x00A/0x00B. так выглядел файл cat до (слева) и после (справа) его заражения

Исследователи, имеющие некоторый опыт работы с IDA, здесь, возможно, возразят: мол, какие проблемы? Подогнал курсор к первому символу, следующему за концом ASCIIZ-строки, нажал на <C> и… дизассемблер мгновенно распахнул код вируса, живописно вплетенный в текстовые строки (см. листинг 7). На самом деле так случается только в теории. Среди нечитабельных символов вируса присутствуют и читабельные тоже. Эвристический анализатор IDA, ошибочно приняв последние за "настоящие" текстовые строки, просто не позволит их дизассемблировать. Ну, во всяком случае, до тех пор, пока они явно не будут "обезличены" нажатием клавиши <U>. К тому же вирус может вставлять в начало каждого своего фрагмента специальный символ, являющийся частью той или иной машинной команды и сбивающий дизассемблер с толку. В результате IDA дизассемблирует всего лишь один-единственный фрагмент вируса (да и тот некорректно) после чего заткнется, подталкивая нас к индуктивному выводу, что мы имеем дело с легальной структурной данных, и зловредный машинный код здесь отродясь не ночевал.

Увы! Какой бы могучей IDA ни была она все-таки не всесильна, и над всяким полученным листингом вам еще предстоит поработать. Впрочем, при некотором опыте дизассемблирования, многие машинные команды распознаются в HEX-дампе с первого взгляда (пользуясь случаем, отсылаю вас к "Технике и философии хакерских атак/дизассемблирование в уме", ставшей уже библиографической редкостью, т. к. ее дальнейших переизданий уже не планируется):

 

.rodata:08054140 aFileNameTooLon db 'File name too long',0

.rodata:08054153 ; ------------------------------------------------------------------

.rodata:08054153           mov    ebx, 1

.rodata:08054158           mov    ecx, 8049A55h

.rodata:08054158           jmp    loc_80541A9

.rodata:08054160 ; ------------------------------------------------------------------




- Начало -  - Назад -  - Вперед -