como o malware sem arquivo funciona no linux?

10

Eu entendo a definição de malware sem arquivo:

Malicious code that is not file based but exists in memory only… More particularly, fileless malicious code … appends itself to an active process in memory…

Alguém pode, por favor, explicar como isso se anexar a um processo ativo na memória funciona?

Além disso, qual proteção / proteção (kernel) está disponível contra tais ataques?

    
por Martin Vegter 21.06.2017 / 20:30

2 respostas

6

O malware sem arquivo ataca o alvo explorando uma vulnerabilidade, por exemplo no plug-in Flash de um navegador ou em um protocolo de rede.

Um processo do Linux pode ser modificado usando a chamada do sistema ptrace() . Essa chamada de sistema é geralmente usada por depuradores para inspecionar e gerenciar o estado interno do processo de destino e é útil no desenvolvimento de software.

Por exemplo, vamos considerar um processo com PID 1234. O espaço de endereçamento completo deste processo pode ser visualizado no pseudo sistema de arquivos /proc na localização /proc/1234/mem . Você pode abrir este pseudofile e anexar a este processo via ptrace() ; Depois de fazer isso, você pode usar pread() e pwrite() para gravar no espaço do processo.

char file[64];
pid = 1234;

sprintf(file, "/proc/%ld/mem", (long)pid);
int fd = open(file, O_RDWR);
ptrace(PTRACE_ATTACH, pid, 0, 0);

waitpid(pid, NULL, 0);
off_t addr = ...; // target process address

pread(fd, &value, sizeof(value), addr);
// or
pwrite(fd, &value, sizeof(value), addr);

ptrace(PTRACE_DETACH, pid, 0, 0);
close(fd);

(Código retirado de aqui . Outro artigo sobre uma exploração ptrace está disponível aqui .)

Com relação à defesa orientada ao kernel contra esses ataques, a única maneira é instalar patches de fornecedores de kernel e / ou desativar o vetor de ataque em particular. Por exemplo, no caso de ptrace, você pode carregar um módulo de bloqueio de ptrace no kernel, o que desabilitará essa chamada de sistema em particular; claramente isso também faz com que você não consiga usar ptrace para depuração.

    
por 28.06.2017 / 10:19
1

Quando você consegue travar um processo, você pode fazer com que o processo insira dados na memória. Uma maneira muito popular de fazer isso é usar estouro de buffer .

Como isso funciona? Você sabe, por exemplo, que um processo está escutando na porta x e tem um buffer para uma determinada função que é, digamos, de 15 Bytes. Você chama essa função com 15 Bytes de dados + n Bytes (seu código a ser executado). Se o programa não validar os dados corretamente, ele sobrescreverá a memória adjacente com seu código e, assim, o código ficará na memória. Se você conseguir que esse código seja executado, você é o proprietário do sistema. Há limitações, por exemplo, um processo não pode gravar na memória fora de seu espaço alocado .

Há uma longa lista de vulnerabilidades em todos os sistemas operacionais onde as saturações de buffer permitem que crackers injetem dados na memória do alvo.

    
por 25.06.2017 / 12:47