Sistemas Operativos [Virus] M. en C. Sergio Luis Pérez Pérez UAM C UAJIMALPA , M ÉXICO, D. F. Trimestre 13-O Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 1 / 30 Posibles ataques a un sistema Posibles ataques a un sistema I Un ataque a un sistema consiste en encontrar las vulnerabilidades del sistema para causar algún daño al sistema u obtener algún tipo de información. Un ataque puede ser realizado por una entidad que se encuentra dentro del mismo sistema o bien por alguien externo. Un ataque desde adentro generalmente es realizado por un cracker que ha iniciado sesión en el sistema. Este puede consistir en atacar otras cuentas y generar código malicioso. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 2 / 30 Posibles ataques a un sistema Posibles ataques a un sistema II Un ataque desde afuera ocurre más comúnmente si el equipo se encuentra conectado a la red. El objetivo es transmitir cierto código y hacer que se ejecute en el equipo atacado. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 3 / 30 Posibles ataques a un sistema Posibles ataques a un sistema III Ejemplos de ataques desde adentro del sistema Caballos de Troya. Falsificación de inicio de sesión. Bombas de lógica. Trampas. Desbordamiento del búfer. Ataques contra la seguridad. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 4 / 30 Posibles ataques a un sistema Posibles ataques a un sistema IV Ejemplos de ataques desde adentro del sistema Virus acompañantes. Virus de programa ejecutable. Virus residentes en la memoria. Virus de sector de arranque. Virus de macros. Virus de código fuente. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 5 / 30 Ataques desde adentro del sistema Caballos de troya Caballos de troya I Un caballo de Troya o troyano es un código fuente aparentemente inofensivo pero que al ejecutarlo puede realizar una función inesperada o indeseable. Las funciones indeseables podrı́an consistir en modificar, borrar o cifrar los archivos del usuario. El cracker podrı́a copiar los archivos en alguna ubicación segura antes de recuperarlos vı́a correo electrónico o FTP. Para lograr que se ejecute un caballo de Troya generalmente se crean programas que se hacen pasar por software gratuito. Cuando el usuario que lo descargo lo instala y lo ejecuta, el programa podrá realizar todas las acciones que el usuario puede. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 6 / 30 Ataques desde adentro del sistema Caballos de troya Caballos de troya II ¿Como funciona este tipo de ataque? I 1 Una forma de engañar a la vı́ctima para que ejecute el programa es ubicarlo en algún directorio de los establecidos por la variable de entorno $PATH. echo $PATH /usr/lib64/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin: /usr/bin:/home/profesores/sergio/bin 2 Cuando el usuario ejecuta algún programa, el sistema primero averigua si se encuentra en /usr/lib64/qt-3.3/bin, si no, luego busca en /usr/kerberos/bin, etcétera. 3 Este ataque sólo será exitoso si la ruta del troyano es la primera ocurrencia de tal programa. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 7 / 30 Ataques desde adentro del sistema Caballos de troya Caballos de troya III ¿Como funciona este tipo de ataque? II 1 Otra opción es instalar un programa cuyo nombre sea parecido, por ejemplo LS (ası́ con mayúsculas). 2 El programa mostrará un mensaje de que LS no existe pero no sin antes haber realizado su trabajo. 3 El uso de programas basados en errores comunes de tecleo es la mejor forma de crear caballos de Troya. 4 Otra opción es poner el programa con el mismo nombre en algún directorio del usuario al que se atacó. 5 Luego podrı́a realizar alguna actividad para llamar la atención del superusuario. 6 ¿Que podrı́a hacer el superusuario? Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 8 / 30 Ataques desde adentro del sistema Falsificación de inicio de sesión Falsificación de inicio de sesión En este ataque, un usuario crea un programa que clona la vista del inicio de sesión de una estación de trabajo. El atacante deja el programa activo y cuando algún usuario llega a dicha estación trata de iniciar sesión de manera normal. El programa inhabilita el eco para la parte donde el usuario introduce su contraseña. Una vez que el usuario solicita acceso el programa guarda el usuario y la contraseña en algún archivo y cierra su shell. Esta es una manera de obtener múltiples parejas de usuario-contraseña. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 9 / 30 Ataques desde adentro del sistema Bombas de lógica Bombas de lógica Una bomba de lógica es un programa creado también por un empleado de una empresa. Es un programa que periódicamente solicita una contraseña y se activa en el momento que ésta no es proporcionada. La crean los empleados que por alguna razón creen que pronto podrı́an ser despedidos. También pueden ser quienes entraron a la empresa con la finalidad de realizar algún tipo de espionaje. En el primer caso el objetivo es ser recontratado y en el segundo hacer mal uso de la información de la empresa. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 10 / 30 Ataques desde adentro del sistema Trampas Trampas Se produce cuando un programador inserta código en un programa que representa una vulnerabilidad en su seguridad. Cuando el programa es un software o sistema de cierto fabricante, entonces el programador podrá obtener información de cualquiera que use dicho producto. ¿Cómo se efectúa este ataque? ¿Cómo realizarlo si los usuarios se almacenarán en una base de datos? ¿Cómo se puede evitar? Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 11 / 30 Ataques desde adentro del sistema Desbordamiento del búfer Desbordamiento del búfer Este tipo de ataques son más sencillos de realizar desde C/C++ int indice = 200; debido a que no verifican cosas como: char nombre[128] nombre[indice] = 0; Lo cual accede a una localidad de memoria posicionada 72 bytes fuera del arreglo nombre. Este ataque se vuelve efectivo si se logra que el apuntador de un programa apunte a una localidad de memoria que hemos sobre-escrito en alguna parte. Por ejemplo si sobre-escribimos la dirección de retorno de un programa en ejecución. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 12 / 30 Ataques desde adentro del sistema Ataques contra la seguridad Ataques contra la seguridad Para probar la seguridad de un sistema generalmente se contrata gente que trate de introducirse a dicho sistema. Algunos ataques comunes pueden ser: Solicitar páginas de memoria, espacio de disco o cintas y leerlas. Probar llamadas al sistema. Intentar inicios de sesión pero matarlos antes de que terminen las verificaciones. Buscar manuales que digan que es lo que no se debe de hacer. Convencer a los programadores del sistema de hacer cosas indebidas. Convencer al personal “vulnerable” que use el sistema de proporcionar sus credenciales. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 13 / 30 Ataques desde afuera del sistema Ataques desde afuera del sistema I Este ataque consiste en transmitir cierto código por la red hacia una computadora objetivo, con la finalidad de que el código se ejecute y cause daños. Lo más común es realizar estos ataques mediante virus, gusanos, código móvil y applets. Un virus es un programa que puede reproducirse anexando su código a otro programa. El modo en general de operar de los virus es el siguiente: 1 Se crea el virus. 2 Se crea una aplicación que pueda resultar interesante para los usuarios. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 14 / 30 Ataques desde afuera del sistema Ataques desde afuera del sistema II 3 Se esconde el virus en el programa. 4 Se publica el programa en la red. 5 Los usuarios descargan e instalan el programa. 6 El virus se propaga cada que los usuarios ejecutan la aplicación. 7 El virus comienza la infección de los archivos de usuario paulatinamente. 8 Después de un cierto tiempo y varios archivos infectados, el virus cumple su objetivo. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 15 / 30 Ataques desde afuera del sistema Virus acompañantes Virus acompañantes I Este tipo de virus sólo se ejecuta y no se propaga. Este virus se implanta como parte de un programa utilizado comúnmente por los usuarios. No se modifica el archivo original sino que es replicado. Cada que se ejecuta el programa, además de hacer lo que debe, el virus es ejecutado. Ejemplo: 1 2 3 Se crea un virus llamado Notepad.exe. Cuando se implanta, el nombre del original Notepad.exe es cambiado a Notepad2.exe. Cuando se ejecuta se solicita el programa Notepad se ejecuta primero el virus y luego Notepad2.exe. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 16 / 30 Ataques desde afuera del sistema Virus de programa ejecutable Virus de programa ejecutable I Este tipo de virus puede infectar varios programas ejecutables. En este clasificación se encuentran los siguientes: 1 Virus de sobrescritura. 2 Virus parásitos. 3 Virus de cavidades. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 17 / 30 Ataques desde afuera del sistema Virus de programa ejecutable Virus de programa ejecutable II Virus de sobrescritura Este tipo de virus simplemente substituye su código con el de algún ejecutable. Cada que se ejecuta sobrescribe parte de los archivos del usuario. Son los más fáciles de detectar. Consisten de programas cortos que recorren todos los directorios e infectan algunos archivos. Para ocultar la infección se pueden especificar que no se cambie la fecha de última modificación ni el tamaño del archivo. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 18 / 30 Ataques desde afuera del sistema Virus de programa ejecutable Virus de programa ejecutable III Virus de cavidades Este tipo de virus se almacena en los espacios no utilizados de los sectores de un programa. En windows todos los sectores son múltiplos de 512 bytes. Si el virus es muy pequeño podrá añadirse sin problema al programa sin modificar su espacio en disco. “Un virus oculto es un virus feliz” Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 19 / 30 Ataques desde afuera del sistema Virus de programa ejecutable Virus de programa ejecutable IV Virus parásitos Este tipo de virus se anexa a los programas y les permite funcionar de manera normal. Se pueden anexar al principio, al final o en la parte intermedia de un programa. Su forma de operar es como sigue: El virus copia el programa original en la RAM. Entonces, dependiendo de la posición donde se desee anexar el virus, se escribe la copia del virus seguida del programa original, o bien la del programa original seguida del virus. Se reasignan las nuevas direcciones virtuales para que se ejecuten los programas. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 20 / 30 Ataques desde afuera del sistema Virus residentes en la memoria Virus residentes en la memoria Es un virus que permanece en memoria todo el tiempo. Este tipo de virus se activa cada vez que se ejecuta un programa. Después de realizar la infección, este virus continua a la espera de la ejecución de otro programa. Cada vez que la memoria pierde su contenido, al apagarse o reiniciarse, suelen realizar cambios en el sistema para volver a cargarse una vez que arranque nuevamente el sistema. La ventaja de este tipo de virus es que no requiere realizar actividades masivas sobre el disco. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 21 / 30 Ataques desde afuera del sistema Virus de sector de arranque Virus de sector de arranque I Es un virus que se encarga de sobrescribir el registro de arranque maestro (MBR: Master Boot Record) o sector de arranque. Su forma de operar es como sigue: El virus almacena el sector de arranque original en otra parte del disco. Se almacena en la parte correspondiente al sector de arranque. El virus actúa antes de que se inicie el sistema operativo. El virus se suele cargar en memoria y apoderarse de las llamadas al sistema mediante la sobrescritura de los vectores de interrupción. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 22 / 30 Ataques desde afuera del sistema Virus de sector de arranque Virus de sector de arranque II Este tipo de virus son los que dan origen a los residentes en memoria. También puede almacenarse simulando ser un sector defectuosos impidiendo que lo borren. Una forma de detectarlos es la siguiente: Cuando la computadora no puede lanzar el sistema operativo. Cuando la computadora recibe errores de disco. Cuando se experimentan problemas con la memoria o con la congelación de programas. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 23 / 30 Ataques desde afuera del sistema Virus de código fuente Virus de código fuente I Este tipo de virus busca códigos fuente y los modifica. Son el tipo de virus más portable. Requieren de cierta habilidad para analizar la sintaxis del código. Su forma de operar es como sigue: Se implantan las librerı́as que contienen al virus. Se buscan los archivos del lenguaje de programación en el que se encuentra escrito el virus. Se modifican las cabeceras para hacer una llamada a los archivos donde se encuentran las funciones del virus. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 24 / 30 Ataques desde afuera del sistema Virus de código fuente Virus de código fuente II Se buscan ciertos lugares especı́ficos del código para colocar las llamadas a las funciones del virus. Si el programa es recompilado, cuando se ejecute, éste ejecutará el virus. Los lugares apropiados para ubicarse son: Justo antes de que el programa inicie su ejecución normal. En las funciones que se encuentran dentro del programa, ya sea al principio o al final de ellas. Justo antes de que el programa termine su ejecución normal. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 25 / 30 Técnicas de antivirus Técnicas de antivirus I Las técnicas de antivirus permiten a los usuarios convencionales detectar si su sistema ha sido infectado por algún virus. Existen varias compañı́as que se encargan de proveer software que ayude a los usuarios de computadoras en esta tarea. La función de un antivirus es prevenir, detectar y remover cierto malware de un sistema. Existen tres técnicas generales para detectar virus. Exploradores de virus. Verificadores de integridad. Verificadores de comportamiento. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 26 / 30 Técnicas de antivirus Técnicas de antivirus II Exploradores de virus I Generalmente generan un programa que no hace nada, llamado programa señuelo. Si el virus infecta el programa, entonces el antivirus podrá obtener una copia del virus en su forma original. Cuando el virus es nuevo, éste es introducido en una base de datos de virus conocidos, cuando no es nuevo simplemente se recupera la forma de atacarlo. Cuando el programa antivirus es instalado por primera vez suele examinar los archivos de la computadora buscando virus que se encuentren en su base de datos. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 27 / 30 Técnicas de antivirus Técnicas de antivirus III Exploradores de virus II Tal análisis se suele realizar mediante búsquedas difusas. El problema de las búsquedas difusas es que pueden generar falsas alarmas. La ventaja de tener una gran cantidad de virus conocidos en la base de datos es que se tienen más criterios para encontrar virus. La desventaja es que también se incrementa el número de falsas alarmas. Algunos exploradores sólo verifican la fecha de última modificación de los archivos desde su última exploración. La forma de algunos virus de evitar ser detectados es cifrándose. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 28 / 30 Técnicas de antivirus Técnicas de antivirus IV Verificadores de integridad Este tipo de programas primero busca si hay archivos infectados en el sistema. Después calcula la suma de verificación para cada uno de los archivos ejecutables. La siguiente vez que se ejecute, si alguna suma no coincide, entonces se considera que el ejecutable está infectado. Sin embargo un virus podrı́a intentar modificar tal archivo o incluso eliminarlo. Si es eliminado entonces seguramente hay virus, y para evitar modificarlo lo recomendable es cifrarlo. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 29 / 30 Técnicas de antivirus Técnicas de antivirus V Verificadores de comportamiento Cuando se ejecuta un programa, el antivirus registra todas sus llamadas al sistema. Si el antivrus detecta comportamiento inusual, como que un programa quiera escribir en el sector de arranque, entonces el antivirus lo trata de evitar. También detecta cosas como la sobrescritura de ejecutables, a menos que lo haga un compilador. Cuando el virus y el antivirus residen en la memoria, estos buscan eliminarse uno al otro. Sergio Luis Pérez (UAM C UAJIMALPA) Sistemas Operativos 30 / 30