Encryption: practice ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ> Blade Runner This will be a fix section in 29A in which we'll see many of the weirdest decryption routines, and the way to use them so as to decrypt its owners. In this first issue i'll center on easy viruses with no antidebugging, so that people who've just started may understand everything easily. In fur- ther issues i'll include more difficult viruses, and then this will get pretty interesting ;-) ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ²² 1.-VIRUS:ABR-1171.COM infected by PS-MPC.c virus ²²±± ²² 2.-VIRUS:AC-255.COM infected by Arcv.Made.225 virus ²²±± ²² 3.-VIRUS:AC-330.COM infected by Arcv.330 virus ²²±± ²² 4.-VIRUS:AC-839.COM infected by Arcv.Friends virus ²²±± ²² 5.-VIRUS:AC-916.COM infected by Arcv.Joanna {1} virus ²²±± ²² 6.-VIRUS:ANTIMIT.COM infected by Anti-Mit virus ²²±± ²² 7.-VIRUS:ARARA.COM infected by Arara virus ²²±± ²² 8.-VIRUS:ATOMANT.COM the ATOMANT.UNK1 virus or variant ²²±± ²² 9.-VIRUS:AUS-369B.COM Found the AUSSIE.PARASITE.369 ²²±± ²² 10.-VIRUS:BETA0575.COM infected by Beta_Boys virus ²²±± ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²±± ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ³³³³³ 1 VIRUS:ABR-1171.COM infected by PS-MPC.c virus ³³³³³ ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ c No checksum / recovery information (Anti-Vir.Dat) available. F Suspicious file access. Might be able to infect a file. S Contains a routine to search for executable (.COM or .EXE) files. # Found a code decryption routine or debugger trap. This is common for viruses but also for some copy-protected software. O Found code that can be used to overwrite/move a program in memory. B Back to entry point. Contains code to re-start the program after modifications at the entry-point are made. Very usual for viruses. T Incorrect timestamp. Some viruses use this to mark infected files. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Let's disassemble the virus; i personally use DOS's debug for this kinda jobs, but use whatever debugger you like. -u100 14CF:0100 E99004 JMP 0593 ; Jumpt to the address 593h 14CF:0103 3F AAS ; The rest of the code, as you 14CF:0104 95 XCHG BP,AX ; can see, is encrypted and has 14CF:0105 D7 XLAT ; no sense at all %-) 14CF:0106 29A6C13F SUB [BP+3FC1],SP 14CF:010A 8FD7 POP DI 14CF:010C 29A2C13F SUB [BP+SI+3FC1],SP 14CF:0110 16 PUSH SS 14CF:0111 D7 XLAT 14CF:0112 7F6E JG 0182 Now we go to address 593h and find rest of the decrypted code: -u593 14CF:0593 BE0001 MOV SI,0100 ; 100h address of actual jmp 593h 14CF:0596 56 PUSH SI ; Save SI 14CF:0597 B94A02 MOV CX,024A ; Number of bytes to decrypt 14CF:059A C70429D8 MOV WORD PTR [SI],D829 ; d829 at 100h 14CF:059E C64402C1 MOV BYTE PTR [SI+02],C1 ; c1h at 102h 14CF:05A2 8134C1D7 XOR WORD PTR [SI],D7C1 ; d7c1h at SI. If we look ; at 100h we'll find a ; call c212h If we now look at the header being decrpyted, we find that at address 100h, instead of a jmp 593h there's this instruction: call c212h. -u100 14CF:0100 E80FC1 CALL C212 ; 100h address right now 14CF:0103 3F AAS We continue decrpyting... 14CF:05A6 46 INC SI ; Increase SI, we get 101h 14CF:05A7 46 INC SI ; Increase SI, we get 102h 14CF:05A8 E2F8 LOOP 05A2 ; We decrpyt 24ah bytes which in CX 14CF:05AA 31F6 XOR SI,SI; Get a 0 at SI 14CF:05AC 31C9 XOR CX,CX; Get a 0 at CX 14CF:05AE C3 RET 14CF:05AF 0000 ADD [BX+SI],AL And we finally have the decrypted virus and look into it; this decryption method is not difficult; it's just tracing the code as we have no anti- debugging catch. The disassembled code starting at 100h looks like this after decrypted; look at the original 100h and this one to see that the virus is ready for execution. -u100 14CF:0100 E80F00 CALL 0112 14CF:0103 E85400 CALL 015A 14CF:0106 E87100 CALL 017A 14CF:0109 E84E00 CALL 015A 14CF:010C E87500 CALL 0184 14CF:010F E8D700 CALL 01E9 14CF:0112 BEB904 MOV SI,04B9 14CF:0115 8B1C MOV BX,[SI] 14CF:0117 0BDB OR BX,BX 14CF:0119 743E JZ 0159 14CF:011B B8DD34 MOV AX,34DD 14CF:011E BA1200 MOV DX,0012 ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ³³³³³ 2 VIRUS: AC-255.COM infected by Arcv.Made.225 virus ³³³³³ ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ c No checksum / recovery information (Anti-Vir.Dat) available. # Found a code decryption routine or debugger trap. This is common for viruses but also for some copy-protected software. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -u100 14CF:0100 E90500 JMP 0108 ; Let's jump to 108h 14CF:0103 CD20 INT 20 14CF:0105 90 NOP 14CF:0106 0909 OR [BX+DI],CX 14CF:0108 E80000 CALL 010B ; 10bh -> next instruction -u 14CF:0118 53 PUSH BX ; We save BX 14CF:0119 8D9C4801 LEA BX,[SI+0148] ; At BX, data at SI+148h 14CF:011D 8B941601 MOV DX,[SI+0116] ; Same to DX 14CF:0121 B9BC00 MOV CX,00BC ; Number of bytes to decrypt 14CF:0124 8B07 MOV AX,[BX] 14CF:0126 33C2 XOR AX,DX ; Calculates AX respect of DX 14CF:0128 86E0 XCHG AH,AL ; XCHanGe AL with AH 14CF:012A 33C2 XOR AX,DX ; Calculates AX respect of DX 14CF:012C 86E0 XCHG AH,AL ; XCHanGe AL with AH 14CF:012E 8907 MOV [BX],AX ; We save AX at BX 14CF:0130 83C302 ADD BX,+02 ; And add 2 to it 14CF:0133 E2EF LOOP 0124 ; Decrypting... 14CF:0135 5B POP BX 14CF:0136 C3 RET 14CF:0137 E8DEFF CALL 0118 Text that appears after decrypting virus at 1e0h: 14CF:01E0 CD 21 B4 3E CD 21 FF E5-B4 3F CD 21 C3 4D 61 64 .!.>.!...?.!.Mad 14CF:01F0 65 20 69 6E 20 45 6E 67-6C 61 6E 64 00 00 2A 2E e in England..*. ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ³³³³³ 3 VIRUS:AC-330.COM infected by Arcv.330 virus ³³³³³ ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ c No checksum / recovery information (Anti-Vir.Dat) available. F Suspicious file access. Might be able to infect a file. S Contains a routine to search for executable (.COM or .EXE) files. # Found a code decryption routine or debugger trap. This is common for viruses but also for some copy-protected software. E Flexible Entry-point. The code seems to be designed to be linked on any location within an executable file. Common for viruses. J Suspicious jump construct. Entry point via chained or indirect jumps. This is unusual for normal software but common for viruses. B Back to entry point. Contains code to re-start the program after modifications at the entry-point are made. Very usual for viruses. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 14CF:0100 E90200 JMP 0105 ; Jump to 105h -u105 14CF:0105 E81301 CALL 021B ; Call to address 21bh 14CF:0108 E57B IN AX,7B; Give a look to this address (108h) 14CF:010A 9C PUSHF -u21b 14CF:021B E80000 CALL 021E ; Trace the call 14CF:021E B91301 MOV CX,0113 ; Length = 113h bytes 14CF:0221 5E POP SI ; Pop the delta offset into SI 14CF:0222 81EE2102 SUB SI,0221 ; SUBstract 221h from SI 14CF:0226 8DBC0B01 LEA DI,[SI+010B]; We read address SI+10bh 14CF:022A 803551 XOR BYTE PTR [DI],51 ; Calculate calue at 14CF:022D 47 INC DI ; address 108h, what 14CF:022E E2FA LOOP 022A ; <Ä¿ leaves 'B4' at that address 14CF:0230 C3 RET ; <ÄÄÄ¿ ÀÄ Dencrypting ÀÄÄ Return to 108h -u108 14CF:0108 B42A MOV AH,2A ; Decrypted 108h 14CF:010A CD21 INT 21 14CF:010C 80FE07 CMP DH,07 ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ³³³³³ 4 VIRUS:AC-839.COM infected by Arcv.Friends virus ³³³³³ ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ c No checksum / recovery information (Anti-Vir.Dat) available. # Found a code decryption routine or debugger trap. This is common for viruses but also for some copy-protected software. E Flexible Entry-point. The code seems to be designed to be linked on any location within an executable file. Common for viruses. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Warning: this virus features two decryption routines... 14CF:0100 E9FD01 JMP 0300 ; jmp to address 300h 14CF:0103 CD20 INT 20 -u300 14CF:0300 E81403 CALL 0617 ; Call address 617h 14CF:0303 E0EE LOOPNZ 02F3 ; Remember instruction at 303h 14CF:0305 0AF3 OR DH,BL ; still encrypted 14CF:0307 0818 OR [BX+SI],BL 14CF:0309 D0C1 ROL CL,1 -u617 14CF:0617 E80400 CALL 061E ; Another call... to 61eh... 14CF:061A 0100 ADD [BX+SI],AX 14CF:061C DDFF ESC 2F,DI -u61e 14CF:061E 5B POP BX ; POP BX out of the stack 14CF:061F 81EB7816 SUB BX,1678 ; SUBstract 1678h bytes 14CF:0623 81C33012 ADD BX,1230 ; We ADD to BX 1230h bytes 14CF:0627 53 PUSH BX ; And save BX in the stack 14CF:0628 5F POP DI ; POP BX into DI 14CF:0629 B94515 MOV CX,1545 ; Get 1545h bytes into CX 14CF:062C 81E93112 SUB CX,1231 ; SUBstract 1231h to CX 14CF:0630 80B5310108 XOR BYTE PTR [DI+0131],08 ; After running the xor ; we're left with [303h] ; being e8 ee (call df4h) 14CF:0635 47 INC DI ; INCrease DI in 1 14CF:0636 B20F MOV DL,0F ; MOVe 0fh to dl 14CF:0638 E2F6 LOOP 0630 ; Decrypt a block 14CF:063A 90 NOP ; at address 303h 14CF:063B 90 NOP 14CF:063C 90 NOP 14CF:063D 90 NOP 14CF:063E C3 RET ; Return to 303h... [...] 14CF:0303 E8E602 CALL 05EC ; CALL to 5ech -u5ec 14CF:05EC E80000 CALL 05EF ; Second decrypting routine 14CF:05EF 5E POP SI ; Restore SI 14CF:05F0 81EE1E04 SUB SI,041E ; SUBstract 41eh from SI 14CF:05F4 8DBC3501 LEA DI,[SI+0135] ; Let's take address SI+135h 14CF:05F8 B9E602 MOV CX,02E6 ; CX=length to be decrypted. 14CF:05FB 8A05 MOV AL,[DI] ; Get [DI] in AL 14CF:05FD 8AE0 MOV AH,AL ; Get AL in AH 14CF:05FF 51 PUSH CX ; Save it ont top of the stack 14CF:0600 B104 MOV CL,04 ; Let CL be 4 14CF:0602 D2EC SHR AH,CL ; Shift AH CL-times (4) 14CF:0604 D2E0 SHL AL,CL ; Same on AH but the other way 14CF:0606 0AC4 OR AL,AH ; Store AH next to AL 14CF:0608 8805 MOV [DI],AL ; Store AL at [DI] 14CF:060A 47 INC DI ; INCrease DI in 1 14CF:060B 59 POP CX ; Restore the no. of bytes to CX 14CF:060C E2ED LOOP 05FB ; Decrypting... 14CF:060E C3 RET ; Return to 306h, decrypted by now -u 14CF:0306 BF0001 MOV DI,0100 14CF:0309 8D9C8003 LEA BX,[SI+0380] 14CF:030D B90200 MOV CX,0002 14CF:0310 87F3 XCHG SI,BX 14CF:0312 FC CLD 14CF:0313 F2 REPNZ 14CF:0314 A5 MOVSW 14CF:0315 87F3 XCHG SI,BX 14CF:0317 C684C20500 MOV BYTE PTR [SI+05C2],00 14CF:031C C684780500 MOV BYTE PTR [SI+0578],00 14CF:0321 B90500 MOV CX,0005 14CF:0324 8A947004 MOV DL,[SI+0470] ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ³³³³³ 5 VIRUS:AC-916.COM infected by Arcv.Joanna {1} virus ³³³³³ ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ c No checksum / recovery information (Anti-Vir.Dat) available. F Suspicious file access. Might be able to infect a file. A Suspicious Memory Allocation. The program uses a non-standard way to search for, and/or allocate memory. # Found a code decryption routine or debugger trap. This is common for viruses but also for some copy-protected software. L The program traps the loading of software. Might be a virus that intercepts program load to infect the software. M Memory resident code. The program might stay resident in memory. U Undocumented interrupt/DOS call. The program might be just tricky but can also be a virus using a non-standard way to detect itself. B Back to entry point. Contains code to re-start the program after modifications at the entry-point are made. Very usual for viruses. T Incorrect timestamp. Some viruses use this to mark infected files. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -u 14CF:0100 E90200 JMP 0105 ; Jump to address 105h 14CF:0103 CD20 INT 20 14CF:0105 BE1601 MOV SI,0116 ; 116h = start decrypting. 14CF:0108 B9BF01 MOV CX,01BF ; Size = 1bfh bytes 14CF:010B 2E CS: 14CF:010C 81040B28 ADD WORD PTR [SI],280B; ADD 280bh to SI 14CF:0110 83C602 ADD SI,+02 ; Now ADD 2 14CF:0113 49 DEC CX ; SUBstract 1 from CX, ; which will decrypt it 14CF:0114 75F5 JNZ 010B ; Until CX=0 When CX comes to 0 bytes, the virus will be decrypted. Here you have it from 116h, encrypted, with CX=1bfh -u116 14CF:0116 DDD8 FSTP ST(0) 14CF:0118 F5 CMC 14CF:0119 2F DAS 14CF:011A 22F1 AND DH,CL 14CF:011C F662E5 MUL BYTE PTR [BP+SI-1B] 14CF:011F F6FB IDIV BL 14CF:0121 E514 IN AX,14 14CF:0123 E6FC OUT FC,AL 14CF:0125 8FFA POP DX 14CF:0127 D6 DB D6 14CF:0128 C2EB75 RET 75EB And now decrypted, with 0 in CX... its much more legible, huh? ;-) -u116 14CF:0116 E80000 CALL 0119 14CF:0119 58 POP AX 14CF:011A 2D1901 SUB AX,0119 14CF:011D 8BF0 MOV SI,AX 14CF:011F 1E PUSH DS 14CF:0120 06 PUSH ES 14CF:0121 0E PUSH CS 14CF:0122 1F POP DS 14CF:0123 0E PUSH CS 14CF:0124 07 POP ES 14CF:0125 B805FF MOV AX,FF05 14CF:0128 CD13 INT 13 ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ³³³³³ 6 VIRUS:ANTIMIT.COM infected by Anti-Mit virus ³³³³³ ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ c No checksum / recovery information (Anti-Vir.Dat) available. F Suspicious file access. Might be able to infect a file. S Contains a routine to search for executable (.COM or .EXE) files. # Found a code decryption routine or debugger trap. This is common for viruses but also for some copy-protected software. D Disk write access. The program writes to disk without using DOS. T Incorrect timestamp. Some viruses use this to mark infected files. J Suspicious jump construct. Entry point via chained or indirect jumps. This is unusual for normal software but common for viruses. B Back to entry point. Contains code to re-start the program after modifications at the entry-point are made. Very usual for viruses. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 14CF:0100 E80500 CALL 0108 ; CALL to address 108h -u108 14CF:0108 BE2A01 MOV SI,012A ; Let's get 12ah in SI 14CF:010B 8A260701 MOV AH,[0107] ; Get [107h] into AH 14CF:010F EB12 JMP 0123 ; Address 123h -u123 14CF:0123 8BFE MOV DI,SI ; Copy SI into DI 14CF:0125 B94F01 MOV CX,014F ; CX = 14fh bytes 14CF:0128 EBE8 JMP 0112 ; Jump to 112h -u112 14CF:0112 AC LODSB ; LOaD a String of Bytes 14CF:0113 32C4 XOR AL,AH ; Store AH next to AL 14CF:0115 AA STOSB ; STOre a String of Bytes 14CF:0116 E2FA LOOP 0112 ; Decrypting... Dump from 100h, after running over loop 112h, therefore decrypted: -d100 14CF:0100 E8 05 00 90 EB 4D 90 1B-BE 2A 01 8A 26 07 01 EB .....M...*..&... 14CF:0110 12 90 AC 32 C4 AA E2 FA-B4 19 CD 21 8A F0 B4 0E ...2.......!.... 14CF:0120 CD 21 C3 8B FE B9 4F 01-EB E8 4D 49 54 20 53 75 .!....O...MIT Su 14CF:0130 78 21 20 24 11 02 2A 2E-43 4F 4D 00 5B 41 6E 74 x! $..*.COM.[Ant 14CF:0140 69 2D 4D 49 54 5D 00 46-8C 72 73 D8 53 74 72 8C i-MIT].F.rs.Str. For you the curious, virus was like this when encrypted: -d100 14CF:0100 E8 05 00 90 EB 4D 90 1B-BE 2A 01 8A 26 07 01 EB .....M...*..&... 14CF:0110 12 90 AC 32 C4 AA E2 FA-B4 19 CD 21 8A F0 B4 0E ...2.......!.... 14CF:0120 CD 21 C3 8B FE B9 4F 01-EB E8 56 52 4F 3B 48 6E .!....O...VRO;Hn 14CF:0130 63 3A 3B 3F 0A 19 31 35-58 54 56 1B 40 5A 75 6F c:;?..15XTV.@Zuo 14CF:0140 72 36 56 52 4F 46 1B 5D-97 69 68 C3 48 6F 69 97 r6VROF.].ih.Hoi. ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ³³³³³ 7 VIRUS:ARARA.COM infected by Arara virus ³³³³³ ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ c No checksum / recovery information (Anti-Vir.Dat) available. F Suspicious file access. Might be able to infect a file. # Found a code decryption routine or debugger trap. This is common for viruses but also for some copy-protected software. G Garbage instructions. Contains code that seems to have no purpose other than encryption or avoiding recognition by virus scanners. @ Encountered instructions which are not likely to be generated by an assembler, but by some code generator like a polymorphic virus. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -u 14CF:0100 E91500 JMP 0118 ; Jump to address 118h 14CF:0103 9E SAHF -u118 14CF:0118 90 NOP 14CF:0119 F8 CLC ; CLear Carry flag 14CF:011A BBC904 MOV BX,04C9 ; Get 4c9h in BX 14CF:011D 87CB XCHG CX,BX ; XCHanGe BX for CX 14CF:011F F8 CLC ; CLear Carry flag 14CF:0120 BE2B01 MOV SI,012B ; Start of decryption 14CF:0123 82048F ADD BYTE PTR [SI],8F ; ADD 8f bytes to 14CF:0126 90 NOP ; address 12bh (59h) 14CF:0127 F5 CMC ; CoMplement Carry flag 14CF:0128 46 INC SI ; INCrease by 1 SI 14CF:0129 E2F8 LOOP 0123 ; Decrypting... 14CF:012B*59* POP CX Virus was like this when encrypted... -d200 14CF:0200 25 8B 2B F1 71 3E 92 7F-90 C9 2C 70 6F F4 64 70 %.+.q>....,po.dp 14CF:0210 70 54 CF CB CA 29 71 C8-B1 3E 92 25 AF 3E 92 CA pT...)q..>.%.>.. 14CF:0220 29 71 B4 B1 2B 8F 6E 3E-92 7F 90 7F 78 C7 34 CC )q..+.n>....x.4. 14CF:0230 B2 C3 B2 C3 B2 CE FC F7-4C 74 F7 51 FA F7 4C 74 ........Lt.Q..Lt And now, decrypted, it's this way: -d 14CF:0200 B4 1A BA 80 00 CD 21 0E-1F 58 BB FF FE 83 F3 FF ......!..X...... 14CF:0210 FF E3 5E 5A 59 B8 00 57-40 CD 21 B4 3E CD 21 59 ..^ZY..W@.!.>.!Y 14CF:0220 B8 00 43 40 BA 1E FD CD-21 0E 1F 0E 07 56 C3 5B ..C@....!....V.[ 14CF:0230 41 52 41 52 41 5D 8B 86-DB 03 86 E0 89 86 DB 03 ARARA].......... ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ³³³³³ 8 VIRUS:ATOMANT.COM the ATOMANT.UNK1 virus or variant ³³³³ ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ c No checksum / recovery information (Anti-Vir.Dat) available. A Suspicious Memory Allocation. The program uses a non-standard way to search for, and/or allocate memory. # Found a code decryption routine or debugger trap. This is common for viruses but also for some copy-protected software. E Flexible Entry-point. The code seems to be designed to be linked on any location within an executable file. Common for viruses. L The program traps the loading of software. Might be a virus that intercepts program load to infect the software. U Undocumented interrupt/DOS call. The program might be just tricky but can also be a virus using a non-standard way to detect itself. Z EXE/COM determination. The program tries to check whether a file is a COM or EXE file. Viruses need to do this to infect a program. O Found code that can be used to overwrite/move a program in memory. B Back to entry point. Contains code to re-start the program after modifications at the entry-point are made. Very usual for viruses. 1 Found instructions which require a 80186 processor or above. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 14CF:0100 E99F10 JMP 11A2 ; Jump to 11a2h 14CF:0103 0D0A4D OR AX,4D0A -u11a2 14CF:11A2 55 PUSH BP ; Save BP 14CF:11A3 E80000 CALL 11A6 ; Call next address 14CF:11A6 5D POP BP ; Restore BP (delta offset) 14CF:11A7 51 PUSH CX ; Save CX 14CF:11A8 50 PUSH AX ; Save AX 14CF:11A9 2E CS: 14CF:11AA 8B46FA MOV AX,[BP-06] ; Get [BP-6] into AX 14CF:11AD 8BF5 MOV SI,BP ; MOVe BP into SI 14CF:11AF 83C618 ADD SI,+18 ; ADD 18h to SI 14CF:11B2 B94108 MOV CX,0841 ; Number of bytes to decrypt 14CF:11B5 2E CS: 14CF:11B6 3004 XOR [SI],AL ; Get AL in [SI] 14CF:11B8 2E CS: 14CF:11B9 0024 ADD [SI],AH ; ADD AH to [SI] 14CF:11BB 46 INC SI ; INCrease SI by 1 14CF:11BC E2F7 LOOP 11B5 ; Dcrypt from 11beh 14CF:11BE A5 MOVSW 14CF:11BF 334F33 XOR CX,[BX+33] Part of the decrypted text... 14CF:1850 0D 0A 4D 43 20 48 61 6D-6D 65 72 20 72 61 70 2D ..MC Hammer rap- 14CF:1860 73 7A 74 A0 72 20 82 73-20 50 45 50 53 49 20 93 szt.r .s PEPSI . 14CF:1870 72 81 6C 74 2C 20 64 65-20 6D 6F 73 74 20 6B 69 r.lt, de most ki 14CF:1880 63 73 65 72 82 6C 74 81-6B 20 61 20 50 45 50 53 cser.lt.k a PEPS How was it like when encrypted? Like this :-) 14CF:1850 B2 B1 F2 C8 A7 CF E6 12-12 EA 19 A7 19 E6 17 D2 ................ 14CF:1860 18 01 1B 27 19 A7 09 18-A7 F7 CA F7 F8 CE A7 38 ...'...........8 14CF:1870 19 06 13 1B D3 A7 EB EA-A7 12 14 18 1B A7 10 EE ................ 14CF:1880 E8 18 EA 19 09 13 1B 06-10 A7 E6 A7 F7 CA F7 F8 ................ ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ³³³³³ 9 VIRUS:AUS-369B.COM Found the AUSSIE.PARASITE.369 virus ³³³³³ ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ c No checksum / recovery information (Anti-Vir.Dat) available. F Suspicious file access. Might be able to infect a file. S Contains a routine to search for executable (.COM or .EXE) files. # Found a code decryption routine or debugger trap. This is common for viruses but also for some copy-protected software. E Flexible Entry-point. The code seems to be designed to be linked on any location within an executable file. Common for viruses. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -u 14CF:0100 E9D200 JMP 01D5 ; Jump to 1d5h -u1d5 14CF:01D5 B9CD00 MOV CX,00CD ; No of bytes in CX 14CF:01D8 BE2301 MOV SI,0123 ; Address 123h in SI 14CF:01DB 03360101 ADD SI,[0101] ; ADD [101h] to SI 14CF:01DF 803401 XOR BYTE PTR [SI],01 ; MOVe 01 into [SI] 14CF:01E2 46 INC SI ; INCrease SI by 1 14CF:01E3 E2FA LOOP 01DF ; Decrypt from 1f6h... 14CF:01E5 BE3402 MOV SI,0234 ; Address 234h in SI 14CF:01E8 03360101 ADD SI,[0101] ; ADD [101h] to SI 14CF:01EC B93C00 MOV CX,003C ; No of bytes to decrypt 14CF:01EF 803401 XOR BYTE PTR [SI],01 ; MOVe 01 into SI 14CF:01F2 46 INC SI ; INCrease SI by 1 14CF:01F3 E2FA LOOP 01EF ; Decrypt from 306h Decrypted text... -d280 14CF:0280 89 D6 80 3C E3 75 3A EB-9D BA 0C 01 24 2A 2E 43 ...<.u:.....$*.C 14CF:0290 4F 4D 00 5B 41 75 73 73-69 65 20 50 61 72 61 73 OM.[Aussie Paras 14CF:02A0 69 74 65 20 76 49 52 55-53 20 20 76 2E 20 31 2E ite vIRUS v. 1. 14CF:02B0 31 5D 0D 5B 62 4C 41 4D-45 20 6F 54 48 45 52 53 1].[bLAME oTHERS 14CF:02C0 5D B8 00 57 CD 21 51 52-B9 CD 00 BE 23 01 03 36 ]..W.!QR....#..6 And encrypted... -d280 14CF:0280 88 D7 81 3D E2 74 3B EA-9C BB 0D 00 25 2B 2F 42 ...=.t;.....%+/B 14CF:0290 4E 4C 01 5A 40 74 72 72-68 64 21 51 60 73 60 72 NL.Z@trrhd!Q`s`r 14CF:02A0 68 75 64 21 77 48 53 54-52 21 21 77 2F 21 30 2F hud!wHSTR!!w/!0/ 14CF:02B0 30 5C 0C 5A 63 4D 40 4C-44 21 6E 55 49 44 53 52 0\.ZcM@LD!nUIDSR 14CF:02C0 5C B9 00 57 CD 21 51 52-B9 CD 00 BE 23 01 03 36 \..W.!QR....#..6 ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ³³³³³ 10 VIRUS:BETA0575.COM infected by Beta_Boys virus ³³³³³ ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ c No checksum / recovery information (Anti-Vir.Dat) available. # Found a code decryption routine or debugger trap. This is common for viruses but also for some copy-protected software. E Flexible Entry-point. The code seems to be designed to be linked on any location within an executable file. Common for viruses. L The program traps the loading of software. Might be a virus that intercepts program load to infect the software. T Incorrect timestamp. Some viruses use this to mark infected files. B Back to entry point. Contains code to re-start the program after modifications at the entry-point are made. Very usual for viruses. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -u100 14CF:0100 E90000 JMP 0103 ; Jump to 103h, a call 14CF:0103 E80100 CALL 0107 ; CALL address 107h -u107 14CF:0107 5D POP BP ; Restore BP (delta offset) 14CF:0108 81ED0301 SUB BP,0103 ; SUBstract 103h to BP 14CF:010C 8D9E2001 LEA BX,[BP+0120] ; [BP+0120] to BX 14CF:0110 8D96A601 LEA DX,[BP+01A6] ; [BP+01a6] to DX 14CF:0114 3E DS: 14CF:0115 8A8E0301 MOV CL,[BP+0103] ; Encryption key to CL 14CF:0119 3BDA CMP BX,DX ; Is BX=DX ? 14CF:011B 7405 JZ 0122 ; If they are virus is ; decrypted ; If not, continue 14CF:011D 300F XOR [BX],CL ; Decrypt byte after byte 14CF:011F 43 INC BX ; INCrease BX by 1 14CF:0120 EBF7 JMP 0119 ; Jump to 119h to continue 14CF:0122 90 NOP 14CF:0123 9F LAHF 14CF:0124 8CAC139F MOV [SI+9F13],CS Blade Runner/29A Los Angeles, 2019