Je comprends la définition d'un malware sans fichier:
Un code malveillant qui n'est pas basé sur un fichier mais existe uniquement en mémoire… Plus particulièrement, un code malveillant sans fichier… s'ajoute à un processus actif en mémoire…
Quelqu'un peut-il expliquer comment cela s’ajoute à un processus actif en mémoire?
De plus, quelle protection / durcissement (noyau) est disponible contre de telles attaques?
process
linux-kernel
malware
Martin Vegter
la source
la source
Réponses:
Un malware sans fichier attaque la cible en exploitant une vulnérabilité, par exemple dans le plugin Flash d'un navigateur ou dans un protocole réseau.
Un processus Linux peut être modifié à l'aide de l'appel système
ptrace()
. Cet appel système est généralement utilisé par les débogueurs pour inspecter et gérer l'état interne du processus cible et est utile dans le développement de logiciels.Par exemple, considérons un processus avec PID 1234. Tout l'espace d'adressage de ce processus peut être visualisé dans le pseudo-système
/proc
de fichiers à l'emplacement/proc/1234/mem
. Vous pouvez ouvrir ce pseudofichier, puis vous attacher à ce processus viaptrace()
; après cela, vous pouvez utiliserpread()
etpwrite()
écrire dans l'espace de processus.(Code tiré d' ici . Un autre article sur un exploit ptrace est disponible ici .)
Concernant la défense orientée noyau contre ces attaques, la seule façon est d'installer les correctifs des fournisseurs du noyau et / ou de désactiver le vecteur d'attaque particulier. Par exemple, dans le cas de ptrace, vous pouvez charger un module de blocage de ptrace dans le noyau qui désactivera cet appel système particulier; il est clair que cela vous empêche également d'utiliser ptrace pour le débogage.
la source
/proc/PID/mem
. J'espère que vous êtes moins réfractaire que l'autre personne à mettre à jour et à corriger votre réponse, au lieu de perpétuer les mythes et la désinformation.Lorsque vous parvenez à bloquer un processus, vous pouvez provoquer l'insertion de données dans la mémoire par le processus. Une façon très populaire de procéder consiste à utiliser des dépassements de tampon .
Comment cela marche-t-il ? Vous savez, par exemple, qu'un processus écoute sur le port x et a un tampon pour une certaine fonction qui est, disons, de 15 octets. Vous appelez cette fonction avec 15 octets de données + n octets (votre code à exécuter). Si le programme ne valide pas correctement les données, il écrasera la mémoire adjacente avec votre code et ainsi, le code vivra en mémoire. Si vous pouvez faire exécuter ce code, vous êtes propriétaire du système. Il existe des limitations, par exemple, un processus ne peut pas écrire dans la mémoire en dehors de son espace alloué .
Il existe une longue liste de vulnérabilités sur tous les systèmes d'exploitation où les dépassements de tampon permettent aux crackers d'injecter des données dans la mémoire de la cible.
la source