Jump to content
  • Desenvolvedor na Alemanha cria primeiro vírus para Linux em Nim


    Fernando Mercês
     Share

    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.

     Share


    User Feedback

    Recommended Comments

    • Administrators

    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 to comment
    Share on other 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 to comment
    Share on other sites

    • Administrators

    @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 to comment
    Share on other 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 to comment
    Share on other sites



    Join the conversation

    You can post now and register later. If you have an account, sign in now to post with your account.

    Guest
    Add a comment...

    ×   Pasted as rich text.   Restore formatting

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...