Es posible conseguir la contraseña en texto plano para los volúmenes encriptados en MacOS

La analista forense Sarah Edwards, mientras actualizaba algunos de sus cursos, se encontró con algo increíblemente útil desde el punto de vista forense, pero absolutamente horrible desde el punto de vista de la seguridad. En la captura de pantalla siguiente se puede ver una imagen del disco usado en el curso:

Puede que no se note al principio (aparte del resaltado que ella agregó, por supuesto), pero el texto “frogger13” es la contraseña que usó para dar dar formato APFS al dispositivo USB con el nombre de volumen “SEKRET”.

El comando newfs_apfs puede tomar una passphrase como parámetro usando el flag “-S”, que no está documentado en la página de manual.

Sin embargo, al ejecutar el comando sin parámetros, muestra lo siguiente:

Luego de tratar de reproducir este escenario en su sistema actual ejecutando 10.13.3, no pudo hacerlo, por lo tanto, creyó que este bug fue solucionado. Sin embargo, pudo reproducirlo en un sistema 10.13 (la captura de pantalla de la imagen de arriba es de un sistema con 10.13.1). No lo probó en un sistema 10.13.2 ya que no disponía de uno para hacerlo pero gracias a los usuarios @ranvel (captura de pantalla) y @applechinfo (video) que hicieron las pruebas respectivas, también no fue posible replicarlo en 10.13.2.

Estos fueron los pasos seguidos para reproducir el bug:

Dispositivo flash limpio formateado con “Mac OS Extended (Journaled)” utilizando Disk Utility.app. (pruebas rápidas muestran que otros formatos deberían funcionar de manera similar). A continuación, se muestra la unidad Kingston DataTraveler etiquetada como “Untitled”:

Luego utilizó la opción de menú “Erase” para crear un volumen de APFS cifrado en la unidad, que se muestra a continuación con el nombre “SECRET_USB”. (En las pruebas funciona igual yendo a las opciones de “Partition” y haciendo el mismo proceso general. El método con “Partition” produjo un error, sin embargo, parece ser una unidad USB cifrada y los logs son similares).

Seleccionar “Erase” y esperar hasta que se haya completado:

Al usar el siguiente comando para ver los logs unificados en la Terminal mientras el proceso anterior estaba haciendo lo suyo, el resultado fue el siguiente:

log stream –info –predicate ‘eventMessage contains “newfs_”‘

…y ahí lo tenemos, ¡una contraseña en texto claro! (Para bien o para mal)

De acuerdo a otros aportes realizadas por @moelassus, esto sigue siendo vulnerable en las versiones actuales de macOS 10.13.3 cuando se cifra un volumen APFS no encriptado YA EXISTENTE (en comparación con crear un volumen NUEVO como en la prueba original), lo que también ya fue verificado por @howardnoakley.

Abajo una captura de pantalla con las pruebas realizadas por Sarah. Tener en cuenta que esto fue almacenado en el disco, logs recopilados (logs no volátiles).