Entiendo la definición de malware sin archivos:
Código malicioso que no se basa en archivos, sino que existe solo en la memoria ... Más en particular, el código malicioso sin archivos ... se agrega a un proceso activo en la memoria ...
¿Alguien puede explicar cómo funciona este anexarse a un proceso activo en la memoria?
Además, ¿qué protección / endurecimiento (núcleo) está disponible contra tales ataques?
process
linux-kernel
malware
Martin Vegter
fuente
fuente
Respuestas:
El malware sin archivos ataca al objetivo explotando una vulnerabilidad, por ejemplo, en el complemento Flash de un navegador o en un protocolo de red.
Un proceso de Linux se puede modificar mediante la llamada al sistema
ptrace()
. Los depuradores suelen utilizar esta llamada del sistema para inspeccionar y gestionar el estado interno del proceso de destino, y es útil en el desarrollo de software.Por ejemplo, consideremos un proceso con PID 1234. El espacio de direcciones completo de este proceso se puede ver en el pseudo sistema
/proc
de archivos en la ubicación/proc/1234/mem
. Puede abrir este pseudofile, luego adjuntarlo a este proceso a través deptrace()
; después de hacerlo, puede usarpread()
ypwrite()
escribir en el espacio de proceso.(Código tomado de aquí . Otro documento sobre un exploit ptrace está disponible aquí .)
Con respecto a la defensa orientada al kernel contra estos ataques, la única forma es instalar parches de proveedores de kernel y / o deshabilitar el vector de ataque en particular. Por ejemplo, en el caso de ptrace, puede cargar un módulo de bloqueo de ptrace en el núcleo que deshabilitará esa llamada particular del sistema; claramente esto también lo hace incapaz de usar ptrace para la depuración.
fuente
/proc/PID/mem
. Espero que sea menos refractario que la otra persona para actualizar y corregir su respuesta, en lugar de perpetuar mitos e información errónea.Cuando logra bloquear un proceso, puede hacer que el proceso inserte datos en la memoria. Una forma muy popular de hacer esto es usar desbordamientos de búfer .
Como funciona esto ? Usted sabe, por ejemplo, que un proceso está escuchando en el puerto x y tiene un búfer para una determinada función que es, digamos, 15 Bytes grande. Llama a esa función con 15 Bytes de datos + n Bytes (su código a ejecutar). Si el programa no valida los datos correctamente, sobrescribirá la memoria adyacente con su código y, por lo tanto, el código permanece en la memoria. Si puede ejecutar este código, es dueño del sistema. Existen limitaciones, por ejemplo, un proceso no puede escribir en la memoria fuera de su espacio asignado .
Hay una larga lista de vulnerabilidades en todos los sistemas operativos donde los desbordamientos del búfer permiten a los crackers inyectar datos en la memoria del objetivo.
fuente