Ir para conteúdo
  • Desenvolvedor na Alemanha cria primeiro vírus para Linux em Nim


    Fernando Mercês

    Batizado com nome herdado da estrela binária VV Cephei, o Linux.Cephei é provavelmente o primeiro file infector para executáveis ELF (utilizados nos sistemas baseados em Linux, entre outros) escrito na linguagem Nim. Isso mesmo, o autor é um tanto excêntrico e disse em seu blog que o Linux.Cephei é inofensivo (por enquanto) e fez somente para participar de um concurso de programação.

    O vírus é do tipo que chamamos de prepender, ou seja, ele adiciona algo "antes" da execução de um programa saudável, no caso, de um binário ELF. A técnica para isso é a alteração de seu entrypoint. 

    Nos testes que fizemos aqui, o Linux.Cephei só funcionou com binários compilados estaticamente: 

    $ uname -a
    Linux malinux 4.9.0-4-amd64 #1 SMP Debian 4.9.51-1 (2017-09-28) x86_64 GNU/Linux
    
    $ cat /etc/debian_version
    9.2
    
    $ cat h.c
    #include <stdio.h>
    
    int main(void) {
    printf("ola mundo do bem!\n");
    return 0;
    }
    
    $ gcc -static -o hello h.c
    $ ./hello
    ola mundo do bem!
    
    $ chmod +x linux.cephei
    $ ./linux.cephei
    $ ./hello
    Did you know that VV Cephei, also known as HD 208816, is an eclipsing binary star system located in the
    constellation Cepheus, approximately 5,000 light years from Earth? It is both a B[e] star
    and shell star. Awesome! https://en.wikipedia.org/wiki/VV_Cephei
    The more you know... :)
    ola mundo do bem!
    
    $ gcc -o hello h.c
    $ ./linux.cephei
    $ ./hello
    ola mundo do bem!

     Perceba que ele injetou seu código com sucesso no binário hello, mas somente quando foi compilado estaticamente.  

    Além da linguagem exótica, ultimamente não se vê muitos file infectors já que a moda de infectar executáveis passou. De qualquer forma, é bom ficar de olho. Com códigos como o do Linux.Ceiphei, vírus podem permanecer ocultos num sistema por muito tempo. E pouca gente usa antivírus no Linux, mesmo tendo uma alternativa livre como o ClamAV.


    Feedback do Usuário

    Comentários Recomendados

    Valeu, @Rick Santos. Adicionei um teste que fiz e baixando o binário pronto do repositório do Github até que funcionou, mas só para binários estaticamente linkados.

    Quando tentei a partir do fonte, obtive um erro quando o Linux.Cephei tenta ler ele próprio. Acho que o autor está desenvolvendo ainda, ou não quer que saiam por aí utilizando para o mal. :)

    Abraço,

    Fernando

    Link para o comentário
    Compartilhar em outros sites

    2 horas atrás, Fernando Mercês disse:

    Valeu, @Rick Santos. Adicionei um teste que fiz e baixando o binário pronto do repositório do Github até que funcionou, mas só para binários estaticamente linkados.

    Quando tentei a partir do fonte, obtive um erro quando o Linux.Cephei tenta ler ele próprio. Acho que o autor está desenvolvendo ainda, ou não quer que saiam por aí utilizando para o mal. :)

    Abraço,

    Fernando

    O programador do suposto malware realmente gosta de linguagens pouco comerciais haha xD, "nim", "go", "vala". 

    Link para o comentário
    Compartilhar em outros sites

    @Guilherme Thomazi Bonicontro que legal que você viu a notícia aqui e apareceu. És Brasileiro? :)

    Eu tentei novamente mas mesmo compilando a partir do código-fonte, só consegui infectar binários estáticos, veja:

    $ git clone https://github.com/guitmz/nim-cephei.git
    $ cd nim-cephei
    $ nim c -d:release cephei.nim
    Hint: used config file '/etc/nim.cfg' [Conf]
    Hint: system [Processing]
    Hint: cephei [Processing]
    Hint: streams [Processing]
    Hint: os [Processing]
    Hint: strutils [Processing]
    Hint: parseutils [Processing]
    Hint: math [Processing]
    Hint: algorithm [Processing]
    Hint: times [Processing]
    Hint: posix [Processing]
    Hint: osproc [Processing]
    Hint: strtabs [Processing]
    Hint: hashes [Processing]
    Hint: etcpriv [Processing]
    Hint: cpuinfo [Processing]
    Hint: linux [Processing]
    Hint: random [Processing]
    Hint:  [Link]
    Hint: operation successful (24692 lines compiled; 0.265 sec total; 25.188MiB; Release Build) [SuccessX]
    
    $ cat hello.c
    #include <stdio.h>
    
    int main(void) {
    	printf("testando...\n");
    	return 0;
    }
    
    $ make hello
    cc     hello.c   -o hello
    $ file hello
    hello: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked,
    interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32,
    BuildID[sha1]=0c8d7870667080bc470acc95fea4303edf5e1182, not stripped
    
    $ ./hello
    testando...
    
    $ ./cephei
    $ ./hello
    testando...
    
    $ rm hello
    $ CFLAGS=-static make hello
    cc -static    hello.c   -o hello
    $ file hello
    hello: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.32, BuildID[sha1]=c863151b3713bb6ba5d874288509b2a72e2a8428, not stripped
    
    $ ./hello
    testando...
    
    $ ./cephei
    $ ./hello
    Did you know that VV Cephei, also known as HD 208816, is an eclipsing binary star system located in
    the constellation Cepheus, approximately 5,000 light years from Earth? It is both
    a B[e] star and shell star. Awesome! https://en.wikipedia.org/wiki/VV_Cephei
    The more you know... :)
    testando...

    Estou fazendo algo errado?

    Grande abraço!

    Link para o comentário
    Compartilhar em outros sites

    Em 12/5/2017 em 15:15, Fernando Mercês disse:

    @Guilherme Thomazi Bonicontro que legal que você viu a notícia aqui e apareceu. És Brasileiro? :)

    Eu tentei novamente mas mesmo compilando a partir do código-fonte, só consegui infectar binários estáticos, veja:

    
    $ git clone https://github.com/guitmz/nim-cephei.git
    $ cd nim-cephei
    $ nim c -d:release cephei.nim
    Hint: used config file '/etc/nim.cfg' [Conf]
    Hint: system [Processing]
    Hint: cephei [Processing]
    Hint: streams [Processing]
    Hint: os [Processing]
    Hint: strutils [Processing]
    Hint: parseutils [Processing]
    Hint: math [Processing]
    Hint: algorithm [Processing]
    Hint: times [Processing]
    Hint: posix [Processing]
    Hint: osproc [Processing]
    Hint: strtabs [Processing]
    Hint: hashes [Processing]
    Hint: etcpriv [Processing]
    Hint: cpuinfo [Processing]
    Hint: linux [Processing]
    Hint: random [Processing]
    Hint:  [Link]
    Hint: operation successful (24692 lines compiled; 0.265 sec total; 25.188MiB; Release Build) [SuccessX]
    
    $ cat hello.c
    #include <stdio.h>
    
    int main(void) {
    	printf("testando...\n");
    	return 0;
    }
    
    $ make hello
    cc     hello.c   -o hello
    $ file hello
    hello: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=0c8d7870667080bc470acc95fea4303edf5e1182, not stripped
    
    $ ./hello
    testando...
    
    $ ./cephei
    $ ./hello
    testando...
    
    $ rm hello
    $ CFLAGS=-static make hello
    cc -static    hello.c   -o hello
    $ file hello
    hello: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.32, BuildID[sha1]=c863151b3713bb6ba5d874288509b2a72e2a8428, not stripped
    
    $ ./hello
    testando...
    
    $ ./cephei
    $ ./hello
    Did you know that VV Cephei, also known as HD 208816, is an eclipsing binary star system located in the constellation Cepheus, approximately 5,000 light years from Earth? It is both a B[e] star and shell star. Awesome! https://en.wikipedia.org/wiki/VV_Cephei
    The more you know... :)
    testando...

    Estou fazendo algo errado?

    Grande abraço!

    @Fernando Mercês

    Sou Brasileiro sim!

    Hmmm pode ser que seja um bug mesmo! Valeu por notar, vou verificar quando sobrar um tempo.


    Abraços

    • Curtir 1
    Link para o comentário
    Compartilhar em outros sites



    Participe da conversa

    Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

    Visitante
    Adicionar um comentário...

    ×   Você colou conteúdo com formatação.   Remover formatação

      Apenas 75 emojis são permitidos.

    ×   Seu link foi automaticamente incorporado.   Mostrar como link

    ×   Seu conteúdo anterior foi restaurado.   Limpar o editor

    ×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.


  • Conteúdo Similar

×
×
  • Criar Novo...