Ingeniería social

La ingeniería social consiste en la manipulación de las personas para que voluntariamente realicen actos que normalmente no harían ([Fen99]); aunque a nadie le gusta ser manipulado, en algunos casos no es excesivamente perjudicial (por ejemplo un vendedor puede aplicar ingeniería social para conocer las necesidades de un cliente y ofrecer así mejor sus productos), si las intenciones de quien la pone en práctica no son buenas se convierte quizás el método de ataque más sencillo, menos peligroso para el atacante y por desgracia en uno de los más efectivos. Ese atacante puede aprovechar el desconocimiento de unas mínimas medidas de seguridad por parte de personas relacionadas de una u otra forma con el sistema para poder engañarlas en beneficio propio. Por ejemplo, imaginemos que un usuario de una máquina Unix recibe el siguiente correo electrónico:
From: Super-User <root@sistema.com>
To: Usuario <user@sistema.com>
Subject: Cambio de clave
Hola,
Para realizar una serie de pruebas orientadas a conseguir un optimo 
funcionamiento de nuestro sistema, es necesario que cambie su clave mediante
la orden 'passwd'. Hasta que reciba un nuevo aviso (aproximadamente en una
semana), por favor, asigne a su contrasenya el valor 'PEPITO' (en 
mayusculas).
Rogamos disculpe las molestias. Saludos,
                        
                                Administrador
Si el usuario no sabe nada sobre seguridad, es muy probable que siga al pie de la letra las indicaciones de este e-mail; pero nadie le asegura que el correo no haya sido enviado por un atacante - es muy fácil camuflar el origen real de un mensaje -, que consigue así un acceso al sistema: no tiene más que enviar un simple correo, sin complicarse buscando fallos en los sistemas operativos o la red, para poner en juego toda la seguridad. Sin saberlo, y encima pensando que lo hace por el bien común, el usuario está ayudando al pirata a romper todo el esquema de seguridad de nuestra máquina.

Pero no siempre el atacante se aprovecha de la buena fe de los usuarios para lograr sus propósitos; tampoco es extraño que intente engañar al propio administrador del sistema4.1. Por ejemplo, imaginemos que la máquina tiene el puerto finger abierto, y el atacante detecta un nombre de usuario que nunca ha conectado al sistema; en este caso, una simple llamada telefónica puede bastarle para conseguir el acceso:
Administrador Buenos dias, aquí área de sistemas, en qué podemos
ayudarle?
Atacante Hola, soy José Luis Pérez, llamaba porque no consigo
recordar mi password en la máquina sistema.upv.es.
Administrador Un momento, me puede decir su nombre de usuario?
Atacante Sí, claro, es jlperez.
Administrador Muy bien, la nueva contraseña que acabo de asignarle
es rudolf. Por favor, nada más conectar, no olvide cambiarla.
Atacante Por supuesto. Muchas gracias, ha sido muy amable.
Administrador De nada, un saludo.
Como podemos ver, estamos en la situación opuesta a la anterior: ahora es el root quien facilita la entrada del atacante en la máquina; lo único que este ha necesitado es un nombre de usuario válido.

Evidentemente, cualquier mensaje, llamada telefónica o similar que un usuario reciba debe ser puesto inmediatamente en conocimiento del administrador del sistema; hay que recordar a los usuarios que en ningún caso se necesita su contraseña para realizar tareas administrativas en la máquina. De la misma forma, si es el administrador quien directamente recibe algo parecido a lo que acabamos de ver, quizás sea conveniente notificar el hecho a los responsables de la organización, y por supuesto poner la máxima atención en la seguridad de los sistemas involucrados, ya que en este caso se sabe a ciencia cierta que alguien intenta comprometer nuestra seguridad; en [Rad97] y [WD95] se muestran algunas de las reglas básicas que debemos seguir en nuestra organización para prevenir ataques de ingeniería social y también para, en el caso de que se produzcan, reducir al mínimo sus efectos.
© 2002 Antonio Villalón Huerta