Hacking AS/400 (just for fun)

AS/400 es un Sistema Operativo con un esquema de seguridad similar o equivalente a seguridad basada en roles (role based access control, rbac), lo que lo hace muy confiable a nivel de la administración de la seguridad, ya que permite tener diferentes perfiles de usuario y roles específicos asignados a cada uno de ellos. Así es que un determinado perfil de usuario puede realizar tareas y tener acceso a funcionalidades y objetos muy específicos, sin comprometer la seguridad del sistema entero(sin tener que confiar en que ese usuario no abusará de sus privilegios para realizar otro tipo de tareas a las que no está asignado, como es posible en los esquemas de seguridad “nativos” de Sistemas Operativos tipo *nix.)

En mis viejos(o jóvenes, ya hace más de 10 años de ello) días como data entry, descubrí una manera simple y relativamente eficiente de obtener las contraseñas de acceso al sistema AS/400 de mis compañeros de trabajo.

Las terminales que usábamos en ese entonces(probablemente ya no existan, pues eran viejas ya en esa época) tenían una función muy práctica de grabación y reproducción de macros de texto. Yo usaba macros asiduamente para alivianar la rutinaria tarea de carga masiva de datos.
Como muchas de las pantallas de carga eran similares y reiterativas, programaba una macro para cada una de las variantes de carga, y luego con una simple combinación de teclas cargaba las pantallas completas. Mis compañeros de carga envidiaban mi “velocidad” pues era imbatible en cantidad de planillas cargadas, pudiendo vencer al mejor de los data entrys convencionales sin mayor esfuerzo. Al irme de ese trabajo, les revelé con una especie de orgullo “quasi scemo” (como le dice Jennifer Beals a Nanni Moretti en Caro Diario), el secreto de mi éxito como data entry: las benditas macros, que me habían ahorrado horas y horas de trabajo rutinario.

Pero he aquí que las macros tenían una función más interesante, y probablemente más útil (aunque nunca hice uso de ella más que para divertirme.) Como eran una función de la propia terminal, podían ser habilitadas independientemente del contexto del programa.

Esto quiere decir, en pocas palabras, que con un poco de astucia y el timing correcto, podía activarse la grabación de una macro de teclado antes de que un usuario se identificara en el sistema. Luego de identificado, solo había que esperar a que se alejase un momento para finalizar el proceso de grabación de la macro. Más tarde, con más tiempo y cuando la víctima no estuviese presente, ingresaba a esa terminal con mi propio usuario, y al reproducir la macro en un editor de texto o en un lugar del formulario de carga con suficiente espacio, la contraseña, grabada en la macro y reproducida en un campo de texto no oculto, quedaba en mi poder. Recuerdo que incluso bastaba con cambiar el orden de ingreso de los datos en la propia pantalla de login antes de reproducir la macro. Esto es, al ubicarse en el campo de la contraseña y reproducir la macro, el usuario quedaba oculto en el campo de la contraseña, y la contraseña era revelada en el campo del usuario. O tambien, al ubicarse en el campo del usuario y reproducir la macro, ingresamos al sistema sin conocer la contraseña. Luego podemos ir a un editor o a un campo de texto para reproducir la macro, y ver la contraseña. Neat!

Me he pasado horas riéndome de sus intentos de descubrir “cómo lo hacía”. De hecho, nunca confesé el secreto a nadie. Pero dado que han pasado más de 10 años, esas terminales probablemente estén ya fuera de circulación, e IBM ha tenido tiempo más que suficiente de corregir el problema(es suficiente con deshabilitar la grabación de macros antes del ingreso del usuario, o ignorar campos ocultos en la grabación de la macro.)

Al ser terminales de texto con capacidad de procesamiento propia, puede llegar a ser complicado deshabilitar ciertas funciones desde el Sistema Operativo, pues sería necesario que el S.O. comande a la terminal. Aunque esto debe ser ciertamente posible. Y si no lo es, un sistema con la seguridad del sistema AS/400 debería poder contar con algo así. Don’t you think?

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>