Est-il possible de cacher un alias malveillant dans Bash sous Linux?

Est-il possible de cacher l'existence d'un alias malveillant dans Bash sur un système Linux et de l'exécuter par l'utilisateur sans leur savoir?

Il est possible de le faire en ajoutant l'alias existant sur le malveillant et en utilisant le mouvement du curseur pour le masquer si la commande alias sert à afficher les définitions d'alias. Ce n'est pas une méthode parfaitement infaillible, mais cela peut ne pas être détecté pendant un moment. L' alias canalisation via hd vous montrera s'il existe des séquences d'échappement (mouvement du curseur) dans vos alias. Voici une preuve de concept pour savoir 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 -is/^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) }' 
  • La commande sed modifie un fichier appelé "alias" en place – un véritable script de ce type irait pour la gorge et modifiait un fichier de script réel afin que l'alias malveillant soit activé la prochaine fois qu'il est exécuté.
  • La partie malveillante de cet exemple vient de sonner la sonnerie du terminal afin que vous sachiez qu'elle fonctionne.
  • La commande à l'origine alias sera exécutée avec le contenu de hide comme argument, donc il est concevable que vous puissiez obtenir une erreur similaire à celle rapportée dans cette question . Il pourrait être possible d'inverser les parties originales et malveillantes pour affecter cela, bien que cela interférerait avec les arguments fournis à l'alias. Une tentative est faite dans le script ci-dessus pour marquer la fin des arguments avec -- .
  • Au lieu de chaîner les parties originales et malveillantes avec && , vous pouvez faire un suivi vers l'autre et faire en sorte que le script malveillant (représenté ci-dessus par la simple commande echo ) fonctionne comme un stdin à stdout pass-through soit pour modifier les données au fur et à mesure Ou pour cacher son existence en n'interférant pas avec une autre redirection
  • Une autre possibilité serait d'inclure l'alias d'origine dans le script malveillant qui pourrait supprimer la chaîne de mouvement du curseur de la liste des arguments et passer le reste à l'original.
  • J'ai arbitrairement choisi les enregistrements 3 et 4, un code plus intelligent pourrait cibler des alias particuliers, mais ils doivent être adjacents (ou le mouvement du curseur pourrait être rendu plus complexe).
  • La chaîne de hide pourrait être modifiée pour inclure différents mouvements de curseur et le texte de l'alias d'origine, de sorte que la commande d' alias semblerait montrer l'alias non modifié au lieu de le cacher avec la partie malveillante.
  • Pour l'essayer comme écrit, vous devez avoir au moins quatre alias actifs, exécuter ce script, puis extraire le fichier résultant . aliases . aliases . Ensuite, vous pouvez essayer d'utiliser l'alias affecté et voir comment il ressemble quand vous alias|hd .
  • Cela pourrait sans aucun doute être réécrit de cent manières différentes, d'autant mieux.
  • Quel genre de menace est réaliste? Je n'ai pas l'indice. Mais si je peux le faire …