Borrar terminal y prevenir restauración

3

Hay algunos datos confidenciales (números de tarjetas de crédito y similares) que almaceno en mi disco duro, encriptados. Utilizo un script para descifrar los datos y mostrarlos en la ventana del terminal. Cuando termine, me gustaría que la secuencia de comandos borre el terminal para que ya no se puedan ver los datos confidenciales (incluso si alguien obtiene acceso a mi computadora).

He leído aquí that + k borra la salida del terminal. Para implementar esto en un script, utilicé AppleScript como se sugiere en la respuesta aceptada a esta pregunta :

/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'

Finalmente, mi script cierra la ventana del terminal con

killall Terminal

El problema: si dejo la ventana del terminal con la salida sensible abierta durante unos 30 segundos o más antes de cerrarla, la próxima vez que abra el terminal, se restaurarán los datos confidenciales (el texto [restaurado] se muestra debajo) ). Si los datos se mostraron inicialmente por menos tiempo, no se restaurarán.

  

¿Cómo puedo borrar la ventana del terminal desde un script e impedir que el Terminal restaure los datos borrados?

Estoy ejecutando OS X 10.10.3.

    
pregunta Julian Rosen 19.05.2015 - 05:22

3 respuestas

2

Solución final:

Eliminar el estado guardado de la Terminal, ubicado en:

~/Library/Saved Application State/com.apple.Terminal.savedState/*

Luego, haz que la carpeta sea de solo lectura para que no pueda escribirse.

Puede usar el comando clear para borrar la ventana de su terminal desde un script. Como se indica en este otro hilo , los siguientes comandos en secuencia borrarán el búfer actual, luego el búfer de retroceso:

clear && printf '\e[3J'
  

Tenga en cuenta:
  (El comando clear busca la secuencia apropiada para limpiar la pantalla del terminal actual, pero la secuencia de escape “borrar desplazamiento hacia atrás” es personalizada y debe estar codificada. Si pones esto en un script de shell que no Si no está seguro de que solo se ejecutará con Terminal, debe verificar que $TERM_APPLICATION es Apple_Terminal antes de enviarlo.)

Alternativa 1

Desactiva la funcionalidad de restauración de la ventana de Terminal.app:

defaults write com.apple.Terminal NSQuitAlwaysKeepsWindows -bool false

Alternativa 2

También puede almacenar información confidencial en la sección Secure Notes dentro de la utilidad Acceso a llavero .

    
respondido por el ryebread 19.05.2015 - 06:16
1

Después de leer las otras respuestas y analizar esto, observé algunos comportamientos del sistema de archivos, lo que implica una solución muy simple. El programa terminal almacena sus datos en

~/Library/Saved Application State/com.apple.Terminal.savedState/

como se señaló anteriormente. Cuando salgo de toda la aplicación de Terminal (limpiamente), se elimina toda la carpeta. La razón por la que el OP está obteniendo datos restaurados es porque está fallando la aplicación de terminal con killall . Observé esto abriendo el buscador a la carpeta Saved Application State e iniciando y saliendo del terminal. La desventaja de esto es que tienes que cerrar TODAS las ventanas de la terminal, pero de esta manera todo el estado guardado parece borrado (por supuesto, dejando de lado el análisis forense de discos)

Parece que hay un archivo en este directorio para cada ventana de terminal abierta (¡pero no para todas las pestañas!) más data.data y windows.plist y window_1.data que probablemente representa el programa del terminal. Los archivos por terminal desaparecen al cerrar la ventana; sin embargo, el archivo data.data es el que crece a medida que se emiten los comandos y, por lo tanto, presumiblemente almacena el búfer de retroceso. No se reduce en el cierre de la ventana del terminal, lo que implica que continúa reteniendo datos de retroceso. Sin embargo, el archivo data.data se reduce cuando se abre la siguiente ventana de terminal. También se reduce drásticamente cuando se actualiza otra ventana de terminal (presionando retorno por ejemplo). Por lo tanto, parece que la siguiente rutina (probablemente) borrará completamente los datos del scrollback:

  1. Cierre la ventana limpiamente con los datos confidenciales (por ejemplo, punto rojo, command + w )
  2. Abra una nueva ventana de terminal O haga que se desplace en otra ventana de terminal que ya esté abierta.

o

  1. Cierre toda la aplicación de la terminal limpiamente (Comando + q, etc.)

También vale la pena señalar que el archivo data.data no es un archivo de texto. Es un archivo binario que requerirá esfuerzo para interpretar. Mi conjetura es que los datos están comprimidos de alguna manera. Un simple cat del archivo no revela nada legible. Entonces, para que estos archivos sean una vulnerabilidad, parece que ambas de las siguientes deben ser verdaderas:

  1. El terminal ha muerto y NSQuitAlwaysKeepsWindows es verdadero (ver otra respuesta), o la ventana del terminal se cerró y no se abrió ni actualizó ninguna otra ventana.
  2. El atacante es lo suficientemente sofisticado como para saber lo suficiente como para buscar y saber cómo descodificar el archivo data.data.

TENGA EN CUENTA: lo anterior se basa completamente en la observación de cómo aparecen / desaparecen los archivos y cómo cambian sus tamaños. Por supuesto, todavía es posible que se retenga cierta información parcial si el mantenimiento del archivo data.data es descuidado. Sin embargo, estas observaciones me parecen suficientemente buenas. Decide por ti mismo si es lo suficientemente bueno para ti.

Estas observaciones provienen de OS X 10.9.5 y Terminal Versión 2.4 (326), verifique el comportamiento descrito anteriormente si está utilizando alguna otra versión antes de confiar en este consejo. Cualquiera o todo esto podría cambiar con las nuevas versiones de terminal o Mac OSX.

    
respondido por el Gus 19.10.2015 - 17:22
-1

prueba history -c y command + k

lo siento

simplemente envía la salida a /dev/null

Si necesita ver o almacenar la salida, rediríjala a un archivo para su uso posterior your_commands > path_to_filename/filename_where_output_is_stored

    
respondido por el les 19.05.2015 - 05:37

Lea otras preguntas en las etiquetas