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




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


.text:08000C03             mov    eax, 90h

.text:08000C08             int    80h                  ; LINUX - sys_msync

.text:08000C0A             add    esp, 18h

.text:08000C0D             jmp    loc_8000D18

.text:08000D18 loc_8000D18:                      ; CODE XREF: .text:08000C0D^j

.text:08000D18             dec    eax

.text:08000D19             jns    short loc_8000D53

.text:08000D1B             jmp    short loc_8000D2B

.text:08000D53 loc_8000D53:                     ; CODE XREF: .text:08000D19^j

.text:08000D53             inc    eax

.text:08000D54             mov    [ebp+8000466h], eax

.text:08000D5A             mov    edx, eax

.text:08000D5C             jmp    short loc_8000D6C

Листинг 6 фрагмент файла, зараженного вирусом UNIX.NuxBe.quilt, "размазывающим" себя по кодовой секции

Кстати говоря, рассмотренный нами алгоритм не совсем корректен. Цепочка NOP'ов может встреться в любом месте программы (например внутри функции) и тогда зараженный файл перестанет работать. Чтобы этого не произошло, некоторые вирусы выполняют ряд дополнительных проверок, в частности убеждаются, что NOP'ы расположены между двумя функциями, опознавая их по командам пролога/эпилога.

Внедрение в секцию данных осуществляется еще проще. Вирус ищет длинную цепочку нулей, разделенную читабельными (точнее – printable) ASCII-символами и, найдя таковую, полагает, что он находится на ничейной территории, образовавшейся в результате выравнивая текстовых строк. Поскольку текстовые строки все чаще располагают в секции .rodata, доступной лишь на чтение, вирус должен быть готов сохранять все модифицируемые им ячейки на стеке и/или динамической памяти.

Забавно, но вирусы этого типа достаточно трудно обнаружить. Действительно, наличие не читабельных ASCII-символов между текстовыми строками – явление вполне нормальное. Может быть, это смещения или еще какие структуры данных, на худой конец – мусор, оставленный линкером!

Взгляните на рисунок 5, приведенный ниже. Согласитесь, что факт зараженности файла вовсе не так очевиден:




Содержание  Назад  Вперед