Entendo a definição de malware sem arquivo:
Código malicioso que não é baseado em arquivo, mas existe apenas na memória… Mais particularmente, código malicioso sem arquivo… se anexa a um processo ativo na memória…
Alguém pode explicar como isso se acrescenta a um processo ativo na memória?
Além disso, qual proteção / proteção (kernel) está disponível contra esses ataques?
process
linux-kernel
malware
Martin Vegter
fonte
fonte
Respostas:
O malware sem arquivo ataca o alvo explorando uma vulnerabilidade, por exemplo, no plugin Flash do navegador ou em um protocolo de rede.
Um processo Linux pode ser modificado usando a chamada do sistema
ptrace()
. Essa chamada do sistema geralmente é usada pelos 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 o PID 1234. Todo o espaço de endereço desse processo pode ser visualizado no pseudo sistema de arquivos
/proc
no local/proc/1234/mem
. Você pode abrir esse pseudofile e anexar a esse processo viaptrace()
; depois de fazer isso, você pode usarpread()
epwrite()
gravar no espaço do processo.(Código extraído daqui . Outro artigo sobre uma exploração do ptrace está disponível aqui .)
Com relação à defesa orientada ao kernel contra esses ataques, a única maneira é instalar as correções dos fornecedores do kernel e / ou desativar o vetor de ataque específico. Por exemplo, no caso de ptrace, você pode carregar um módulo de bloqueio de ptrace no kernel, o que desativará a chamada específica do sistema; claramente isso também torna você incapaz de usar o ptrace para depuração.
fonte
/proc/PID/mem
. Espero que você seja menos refratário do que o outro indivíduo a atualizar e corrigir sua resposta, em vez de perpetuar mitos e desinformação.Quando você consegue travar um processo, pode fazer com que o processo insira dados na memória. Uma maneira muito popular de fazer isso é usar estouros de buffer .
Como é que isso funciona ? Você sabe, por exemplo, que um processo está escutando na porta x e possui um buffer para uma determinada função com, digamos, 15 bytes de tamanho. 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 substituirá a memória adjacente pelo seu código e, portanto, o código permanecerá na memória. Se você pode executar esse código, é o proprietário do sistema. Existem limitações, por exemplo, um processo não pode gravar na memória fora do seu espaço alocado .
Há uma longa lista de vulnerabilidades em todos os sistemas operacionais, em que a saturação de buffer permite que os crackers injetem dados na memória do destino.
fonte