lunes, 18 de noviembre de 2013

Abrazo mortal o Interbloqueos o DeadlocK:

Abrazo mortal o Interbloqueos o DeadlocK:


Es una situación en donde un grupo de procesos se bloquea permanente como resultado de que cada proceso ha obtenido un subconjunto de los recursos necesarios para su terminación y se encuentra esperando indefinidamente por lo la liberación de otros recursos que están siendo ocupados por otros procesos los cuales también esperan por recursos ocupados por el primer proceso, haciendo imposible que cualquiera de los procesos pueda proceder.
Los deadlocks ocurren en ambientes concurrentes como resultado de una concesión, sin control, de los recursos del sistema que solicitan los procesos.

Los abrazos mortales pueden también involucrar diferentes tipos de recursos. Por ejemplo, considere un sistema con una impresora y una unidad de disco. Suponga que el proceso A tiene asignada la unidad de disco y que el proceso B tiene asignada la impresora. Ahora, si A pide la impresora y B pide la unidad de disco, ocurre un abrazo mortal.
 Una situación de abrazo mortal puede surgir si y solo si las siguientes cuatro condiciones ocurren simultáneamente en un sistema:





1.       Exclusión Mutua: Cada recurso se asigna por lo regular exactamente a un proceso o bien está disponible.
2.       Retener y Esperar: Los procesos que regularmente contienen recursos otorgados antes  pueden solicitar nuevos recursos. Debe existir un proceso que retenga al menos un recurso y este esperando para adquirir recursos adicionales que están siendo retenidos por otros procesos.
3.       No existe el derecho de desasignar (No preemtion): Los recursos previamente otorgados no pueden extraerse por la fuerza de un proceso.
4.       Espera Circular: Debe haber una cadena de dos o más procesos, cada uno de los cuales este esperando un recurso contenido en el siguiente miembro de la cadena. Debe existir un conjunto {p0, p1, ...,pn} de procesos en espera tal que p0 esté esperando por un recurso que está siendo retenido por p1, p1 está esperando por un recurso que está siendo retenido por p2, ..., pn-1 está esperando por un recurso que está siendo retenido por pn y pn está esperando por un recurso que está siendo retenido por p0.

La condición de espera circular implica la condición de retener y esperar, de tal manera que las cuatro condiciones no son totalmente independientes. Sin embargo, puede ser útil el considerar cada condición por separado.

Una forma de modelar estas condiciones es usando un grafo de recursos: los círculos representan procesos, los cuadrados recursos. Una arista desde un recurso a un proceso indica que el recurso ha sido asignado al proceso. Una arista desde un proceso a un recurso indica que el proceso ha solicitado el recurso, y está bloqueado esperándolo. Entonces, si hacemos el grafo con todos lo procesos y todos los recursos del sistema y encontramos un ciclo, los procesos en el ciclo están bajo bloqueo mutuo.




Clases de algoritmos para detección de deadlocks en sistemas Distribuidos
Existen tres clases de algoritmos de detección de deadlocks:
1. Centralizados: el mantenimiento y detección se realiza en un solo lugar.
2. Distribuidos: la gráfica del estado del sistema se encuentra distribuido en varios lugares.
3. Jerárquicos: los lugares del sistema se arreglan en una jerarquía y cada nodo es responsable por  la gráfica de estado de sus descendientes.

Algoritmos centralizados para detectar deadlocks
·         Ho and Ramamoorthy. Dos fases.
·         Algoritmo de una fase
Algoritmos distribuidos para detección de deadlocks
·         Algoritmo de Chandy-Misra-Hass.
·         Algoritmo de Menasce and Muntz.

Algoritmos jerárquicos para detección de deadlocks
·         Algoritmo de Menasce y Muntz.
·         Algoritmo de Ho y Ramamoorthy

Conclusiones
Los deadlocks aparecen en cualquier tipo de sistema concurrente (paralelo o distribuido) provocados por factores de sincronización y administración de recursos. El desarrollador de   aplicaciones es responsable de tener en cuenta la presencia de deadlocks al administrar recursos propios de la aplicación.
En contraste con la prevención de deadlocks, la técnica de detección y recuperación parece más adecuada para sistemas distribuidos. Sin embargo, debido a los retrasos de comunicación existe la posibilidad de detectar deadlocks falsos. Así que técnicas más formales se requieren para garantizar la no existencia de deadlocks.


Para el caso de los sistemas distribuidos existen tres estrategias para detección de deadlocks: centralizadas, distribuidas y jerárquicas. Los factores que se utilizan para evaluar el rendimiento de los algoritmos propuestos son: tamaño y número de mensajes, y el tiempo de retraso que existe para que el algoritmo detecte un deadlock.

domingo, 17 de noviembre de 2013

ENUMERACION

ENUMERACIÓN



En una red encontramos diferentes host que dan un determinado servicio a la red, ya sean servidores de correo, servidores de impresión, servidores de dominio, o simplemente equipos que comparten carpetas o impresoras. Podríamos decir que las técnicas de enumeración nos ayudaran a descubrir todos estos recursos y indicarnos qué usuarios pueden acceder a ellos. Debido a que cada sistema operativo tiene unos servicios y una forma de gestionarlos diferente, estas técnicas las tenemos que dividir según el sistema operativo que corran. Antes de pasar a explicar los distintos métodos de enumeración citaremos los tres protocolos en los que nos basaremos para recopilar esta información: NetBIOS, SNMP y LDAP.

Enumeración NetBIOS

Listar maquinas de nuestra red

C:\>net view
Listar recursos compartidos en nuestra red. Para este caso tenemos diferente opciones,

C:\>net view <NOMBRE_HOST>
nos mostrara los recursos compartidos de esa maquina, este es el comando más completo ya que también podemos usar


C:\>nbtstat -a <NOMBRE_HOST>



C:\>nbtstat -A <IP_HOST>
estos dos comandos solo nos indican que la máquina tiene servicios corriendo, pero no especifica cuales.

Listar dominios accesibles de una red

C:\>net view /domain
Listar máquinas de un dominio determinado

C:\>net view /domain:<NOMBRE_DOMINIO>
Listar recursos compartidos en maquinas de diferentes dominios

C:\>net view /domain:<NOMBRE_DOMINIO> \\<NOMBRE_HOST>
Cabe destacar que en todos los comandos podemos sustituir el nombre de la maquina por la IP de la misma y como ya sabemos Internet no es mas que una gran red por lo que podemos sustituir las IP’s de nuestra red por IP’s que pertenezcan a redes y servidores externos de Internet.

También es importante comentar que en un servidor linux que tenga implementado y activo el protocolo samba también se podrán ejecutar estos comandos contra el y averiguar información.

Enumeración SNMP

La enumeración de sistemas mediante SNMP no es tan trivial como la enumeración NetBIOS. El protocolo SNMP (Simple Network Managent Protocol). Este protocolo se usa para poder monitorizar y controlar el estado de los diferente dispositivos conectados a una red, normalmente se usa para routers, switchs, servidores de impresión, correo o web; pero se puede usar también sobre cualquier dispositivo que tenga disponible ese protocolo, es un protocolo multiplataforma y se podrá usar siempre que el dispositivo desde el que queramos monitorizar tenga el paquete de software instalado correctamente. En entornos windows existe un programa llamado Getif con un entorno grafico desde el que podemos obtener de una manera sencilla toda la información, mientras que en entornos linux tenemos Scotty y Cheops.

Enumeración LDAP


LDAP (Lightweight Directory Access Protocol) es un protocolo diseñado para trabajar con TCP/IP y junto a un directorio jerárquico. Esto puede proporcionar una determinada información sobre los usuarios de esa red como nombres, teléfonos, direcciones de correo, etc. este tipo de objetos se les conoce como AD (Active Directory). Recordemos que tanto los dominios dentro de Windows 2000 Server y Windows 2003 Server trabajan con este tipo de objetos por lo que LDAP nos ayudara a extraer facilmente gran cantidad de información. Para poder sacar información de este tipo podemos usar la aplicación ldp.exe que se encuentra en las herramientas de soporte de Windows XP. Cabe destacar que el manejo de esta herramienta no es trivial y se requiere un alto conocimiento sobre este protocolo.

Para describir un poco mas lo que realizamos con este proceso se realizo una practica en clase en la cual recopilamos los siguientes datos dicha practica debido a las restricciones propias de la sala nos valido alguna opciones y otras no se realizaron con éxito.

















FILÓSOFOS COMENSALES


FILÓSOFOS COMENSALES


Veamos el problema.

Érase una vez cinco filósofos que vivían juntos. La vida de cada filósofo consistía principal-mente en pensar y comer y, tras años de pensar, todos los filósofos se habían puesto de acuerdo en que la única comida que contribuía a sus esfuerzos pensadores eran los espaguetis.

Los preparativos de la comida eran simples: una mesa redonda en la que había una gran fuente de espaguetis, cinco platos, uno para cada filósofo y cinco tenedores. Un filósofo que quiera comer irá a su lugar asignado en la mesa y, usando los dos tenedores de cada lado del plato, cogerá los espaguetis y se los comerá. El problema es el siguiente: Inventar un ritual (algoritmo) que permita comer a los filósofos. El algoritmo debe satisfacer la exclusión mutua (dos filósofos no pueden emplear el mismo tenedor a la vez), además de evitar el interbloqueo y la inanición

En clase dimos la solución a este problema mediante un  algoritmo pero quisimos aportar un poco mas y dejar un código en java que ilustra la solución a este requerimiento.

Creamos una clase llamada controlador
*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package filosofos;

/**
 *
 * @author PERSONAL
 */
public class Controlador {
    private static final int pensando = 0;
private static final int hambriento = 1;
private static final int comiendo = 2;
private int n; //numero de filosofos
private int estado[];  
public Controlador(int n) {
this.n = n;
estado = new int[n]; //estado del filosofo
}
// EL FILOSOFO id intenta SUS TENEDORES
public synchronized void tomarTenedores(int id) {

estado[id] = hambriento; // establece que tiene hambre
prueba(id);
while (estado[id] != comiendo) // ESPERA x 2 TENEDORES
try { wait(); 
} catch (Exception e) { System.out.println(e);}
}
// EL FILOSOFO id SUELTA SUS TENEDORES
public synchronized  void soltarTenedores(int id) {
int der, izq;
//calcula la posicion a su derecha e izq.
der=(id+1) % n; 
izq=id-1;
if (izq<0)
                    izq=n-1;
                estado[id] = pensando; 
//checa si alguno está a la espera hambriento
prueba(izq);
prueba(der);
}
//Prueba si los dos filosofos a su lado no estan
//comiendo
public  void prueba(int id){
int der, izq;
//calcula la posicion a su derecha e izq.
der=(id+1) % n; 
izq=id-1;
if (izq<0)
izq=n-1;
if( estado[id] == hambriento && estado[izq]!= comiendo 
   && estado[der]!= comiendo){
    estado[id] = comiendo;
    notifyAll();
}
}

}

Seguidamente creamos otra llamada filosofo
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package filosofos;

/**
 *
 * @author PERSONAL
 */
public class Filosofo extends Thread {
private int id;
private Controlador controlador;
private int nComidas;
public Filosofo(int id,Controlador c) {
this.id=id;
controlador=c;
nComidas = 0;
}
//el filosofo pasa un tiempo pensando
public void pensando(){
System.out.println("Filosofo "+id+" pensando");
try {
Thread.sleep((int)(Math.random()*400));
} catch (Exception e) {
System.out.println(e);}
}
//el filosofo toma un tiempo comiendo
public void comer(){
nComidas++;
System.out.println("Filosofo "+id+" comiendo -> Numero comidas:"+nComidas);
try {
Thread.sleep((int)(Math.random()*500));
} catch (Exception e) {
System.out.println(e); }
}
public void run() {
do {
pensando(); //el filosofo pasa un tiempo pensando
controlador.tomarTenedores(id); //intenta tomar tenedores
// Si tiene 2 tenedores;
comer();
controlador.soltarTenedores(id);
} while (true);
}
   
}
y por ultimo creamos la clase llamada filósofos que es donde daremos uso a nuestro codigo espero les guste y sea de fácil entendimiento
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package filosofos;

/**
 *
 * @author PERSONAL
 */
public class Filosofos {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
     Controlador c=new Controlador(5); // 5 FILOSOFOS
Filosofo f[] =new Filosofo[5]; 
for (int cont=0;cont<5;cont++) {
f[cont]=new Filosofo(cont,c);
f[cont].start();
}
//dejamos pasar un tiempo y terminamos los hilos
try {
Thread.sleep((int)(8000));
} catch (Exception ex1) { System.out.println(ex1);}
System.exit(0);               
    }
    }




TIPOS DE ATAQUE


Jamming o Flooding


Este tipo de ataques desactivan o saturan los recursos del sistema. Por ejemplo, un atacante puede consumir toda la memoria o espacio en disco disponible, así como enviar tanto tráfico a la red que nadie más pueda utilizarla.
Aquí el atacante satura el sistema con mensajes que requieren establecer conexión. Sin embargo, en vez de proveer la dirección IP del emisor, el mensaje contiene falsas direcciones IP usando Spoofing y Looping. El sistema responde al mensaje, pero como no recibe respuesta, acumula buffers con información de las conexiones abiertas, no dejando lugar a las conexiones legítimas.
Muchos ISPs (proveedores de Internet) han sufrido bajas temporales del servicio por ataques que explotan el protocolo TCP. Muchos Hosts de Internet han sido dados de baja por el "ping de la muerte" (una versión-trampa del comando ping).
Mientras que el ping normal simplemente verifica si un sistema esta enlazado a la red, el ping de la muerte causa el  bloqueo instantáneo del equipo. Esta vulnerabilidad ha sido ampliamente utilizada en el pasado pero, aún hoy pueden encontrarse sistemas vulnerables.Otra acción común es la de enviar millares de e-mails sin sentido a todos los usuarios posibles en forma continua, saturando los sistemas destinos.



Syn Flood

Como ya se explicó en el TCP SYN Scanning el protocolo TCP se basa en una conexión en tres pasos. Pero, si el paso final no llega a establecerse, la conexión permanece en un estado denominado "semiabierto".
El SYN Flood es el más famoso de los ataques del tipo Denial of Service, publicado por primera vez en la revista under Phrack; y se basa en un "saludo" incompleto entre los dos hosts.
El Cliente envía un paquete SYN pero no responde al paquete ACK ocasionando que la pila TCP/IP espere cierta cantidad de tiempo a que el Host hostil responda antes de cerrar la conexión. Si se crean muchas peticiones incompletas de conexión (no se responde a ninguna), el Servidor estará inactivo mucho tiempo esperando respuesta. Esto ocasiona la lentitud en los demás servicios.
SYN Flood aprovecha la mala implementación del protocolo TCP, funcionando de la siguiente manera:
Se envía al destino, una serie de paquetes TCP con el bit SYN activado, (petición de conexión) desde una dirección IP Spoofeada. Esta última debe ser inexistente para que el destino no pueda completar el saludo con el cliente.
Aquí radica el fallo de TCP: ICMP reporta que el cliente es inexistente, pero TCP ignora el mensaje y sigue intentando terminar el saludo con el cliente de forma continua.
Cuando se realiza un Ping a una maquina, esta tiene que procesarlo. Y aunque se trate de un proceso sencillo, (no es mas que ver la dirección de origen y enviarle un paquete Reply), siempre consume recursos del sistema. Si no es un Ping, sino que son varios a la vez, la máquina se vuelve mas lenta... si lo que se recibe son miles de solicitudes, puede que el equipo deje de responder (Flood).
Es obligatorio que la IP origen sea inexistente, ya que sino el objetivo, logrará responderle al cliente con un SYN/ACK, y como esa IP no pidió ninguna conexión, le va a responder al objetivo con un RST, y el ataque no tendrá efecto.El problema es que muchos sistemas operativos tienen un límite muy bajo en el número de conexiones "semiabiertas" que pueden manejar en un momento determinado (5 a 30). Si se supera ese límite, el servidor sencillamente dejará de responder a las nuevas peticiones de conexión que le vayan llegando. Las conexiones "semiabiertas" van caducando tras un tiempo, liberando "huecos" para nuevas conexiones, pero mientras el atacante mantenga el SYN Flood, la probabilidad de que una conexión recién liberada sea capturada por un nuevo SYN malicioso es muy alta.









Connection Flood

La mayoría de las empresas que brindan servicios de Internet (ISP) tienen un límite máximo en el número de conexiones simultaneas. Una vez que se alcanza ese límite, no se admitirán conexiones nuevas. Así, por ejemplo, un servidor Web puede tener, por ejemplo, capacidad para atender a mil usuarios simultáneos. Si un atacante establece mil conexiones y no realiza ninguna petición sobre ellas, monopolizará la capacidad del servidor. Las conexiones van caducando por inactividad poco a poco, pero el atacante sólo necesita intentar nuevas conexiones, (como ocurre con el caso del SYN Flood) para mantener fuera de servicio el servidor.
NetFlood

En estos casos, la red víctima no puede hacer nada. Aunque filtre el tráfico en sus sistemas, sus líneas estarán saturadas con tráfico malicioso, incapacitándolas para cursar tráfico útil.
Un ejemplo habitual es el de un teléfono: si alguien quiere molestar, sólo tiene que llamar, de forma continua. Si se descuelga el teléfono (para que deje de molestar), tampoco se puede recibir llamadas de otras personas. Este problema es habitual, por ejemplo, cuando alguien intenta mandar un fax empleando el número de voz: el fax insiste durante horas, sin que el usuario llamado pueda hacer nada al respecto.
En el caso de Net Flooding ocurre algo similar. El atacante envía tantos paquetes de solicitud de conexión que las conexiones auténticas simplemente no pueden competir.
En casos así el primer paso a realizar es el ponerse en contacto con el Proveedor del servicio para que intente determinar la fuente del ataque y, como medida provisional, filtre el ataque en su extremo de la línea.
El siguiente paso consiste en localizar las fuentes del ataque e informar a sus administradores, ya que seguramente se estarán usando sus recursos sin su conocimiento y consentimiento. Si el atacante emplea IP Spoofing, el rastreo puede ser casi imposible, ya que en muchos casos la fuente del ataque es, a su vez, víctima y el origen último puede ser prácticamente imposible de determinar (Looping).

Aquí dejamos un enlace a un vídeo para hacer mas gráfica la explicación.

http://www.youtube.com/watch?v=pUmM-YbKWak



Land Attack

Este ataque consiste en un Bug (error) en la implementación de la pila TCP/IP de las plataformas Windows©.
El ataque consiste en mandar a algún puerto abierto de un servidor (generalmente al NetBIOS 113 o 139) un paquete, maliciosamente construido, con la dirección y puerto origen igual que la dirección y puerto destino.
Por ejemplo se envían un mensaje desde la dirección 10.0.0.1:139 hacia ella misma. El resultado obtenido es que luego de cierta cantidad de mensajes enviados–recibidos la máquina termina colgándose.
Existen ciertas variantes a este método consistente, por ejemplo, en enviar el mensaje a una dirección específica sin especificar el puerto.





ATAQUE MODIFICACION-DAÑO

Tampering o Data Diddling

Esta categoría se refiere a la modificación desautorizada de los datos o el software instalado en el sistema víctima (incluyendo borrado de archivos). Son particularmente serios cuando el que lo realiza ha obtenido derechos de Administrador o Supervisor, con la capacidad de disparar cualquier comando y por ende alterar o borrar cualquier información que puede incluso terminar en la baja total del sistema.
Aun así, si no hubo intenciones de "bajar" el sistema por parte del atacante; el Administrador posiblemente necesite darlo de baja por horas o días hasta chequear y tratar de recuperar aquella información que ha sido alterada o borrada.
Como siempre, esto puede ser realizado por Insiders o Outsiders, generalmente con el propósito de fraude o de dejar fuera de servicio a un competidor.
Son innumerables los casos de este tipo: empleados bancarios (o externos) que crean falsas cuentas para derivar fondos de otras cuentas, estudiantes que modifican calificaciones de exámenes, o contribuyentes que pagan para que se les anule una deuda impositiva.
Múltiples Web Sites han sido víctimas del cambio en sus páginas por imágenes (o manifiestos) terroristas o humorísticos, como el ataque de The Mentor, ya visto, a la NASA; o la reciente modificación del Web Site del CERT (mayo de 2001).
Otras veces se reemplazan versiones de software por otros con el mismo nombre pero que incorporan código malicioso (virus, troyanos, etc.).


Ataques Mediante Java Applets

Java es un lenguaje de programación interpretado, desarrollado inicialmente por la empresa SUN. Su mayor popularidad la merece por su alto grado de seguridad. Los más usados navegadores actuales, implementan Máquinas Virtuales Java (MVJ) para ser capaces de ejecutar programas (Applets) de  Java.
Estos Applets, al fin y al cabo, no son más que código ejecutable y como tal, susceptible de ser manipulado por intrusos. Sin embargo, partiendo del diseño, Java siempre ha pensado en la seguridad del sistema. Las restricciones a las que somete a los Applets son de tal envergadura (imposibilidad de trabajar con archivos a no ser que el usuario especifique lo contrario, imposibilidad de acceso a zonas de memoria y disco directamente, firma digital, etc.) que es muy difícil lanzar ataques. Sin embargo, existe un grupo de expertos especializados en descubrir fallas de seguridad en las implementaciones de las MVJ.

Ataques Mediante JavaScript y VBScript

JavaScript (de la empresa Netscape®) y VBScript (de Microsoft®) son dos lenguajes usados por los diseñadores de sitios Web para evitar el uso de Java. Los programas realizados son interpretados por el navegador.
Aunque los fallos son mucho más numerosos en versiones antiguas de JavaScript, actualmente se utilizan para explotar vulnerabilidades específicas de navegadores y servidores de correo ya que no se realiza ninguna evaluación sobre si el código.


Vulnerabilidades en los Navegadores

Generalmente los navegadores no fallan por fallos intrínsecos, sino que fallan las tecnologías que implementan, aunque en este punto analizaremos realmente fallos intrínsecos de los navegadores, como pueden ser los "Buffer Overflow"(4).
Los "Buffer Overflows" consisten en explotar una debilidad relacionada con los buffers que la aplicación usa para almacenar las entradas de usuario. Por ejemplo, cuando el usuario escribe una dirección en formato URL ésta se guarda en un buffer para luego procesarla. Si no se realizan las oportunas operaciones de comprobación, un usuario podría manipular estas direcciones.
Los protocolo usado puede ser HTTP, pero también otros menos conocidos, internos de cada explorador, como el "res:" o el "mk:". Precisamente existen fallos de seguridad del tipo "Buffer Overflow" en la implementación de estos dos protocolos. Además la reciente aparición (octubre de 2000) de vulnerabilidades del tipo Transversal en el servidor Web Internet Information Server© de la empresa Microsoft®, explotando fallas en la traducción de caracteres Unicode, puso de manifiesto cuan fácil puede resultar explotar una cadena no validada. Por ejemplo:

www.servidor.com/_vti_bin/..%c0%af../..%c0%af../..%c0%af../winnt/system32/cmd.exe?/c+dir+c:\

INGENIERÍA SOCIAL

Ingeniería Social

Es la manipulación de las personas para convencerlas de que ejecuten acciones o actos que normalmente no realizan para que revele todo lo necesario para superar las barreras de seguridad. Si el atacante tiene la experiencia suficiente (generalmente es así), puede engañar fácilmente a un usuario (que desconoce las mínimas medidas de seguridad) en beneficio propio. Esta técnica es una de las más usadas y efectivas a la hora de averiguar nombres de usuarios y passwords.

Por ejemplo, suele llamarse a un usuario haciéndose pasar por administrador del sistema y requerirle la password con alguna excusa convincente. O bien, podría enviarse un mail (falsificando la dirección origen a nombre del administrador) pidiendo al usuario que modifique su password a una palabra que el atacante suministra.

Para evitar situaciones de IS es conveniente tener en cuenta estas recomendaciones:

    Tener servicio técnico propio o de confianza.
    Instruir a los usuarios para que no respondan ninguna pregunta sobre cualquier característica del sistema y deriven la inquietud a los responsables que tenga competencia para dar esa información.

Asegurarse que las personas que llaman por teléfono son quien dicen ser. Por ejemplo si la persona que llama se identifica como proveedor de Internet lo mejor es cortar y devolver la llamada a forma de confirmación.

Ingeniería Social Inversa

Consiste en la generación, por parte de los intrusos, de una situación inversa a la originada en Ingeniería Social.

En este caso el intruso publicita de alguna manera que es capaz de brindar ayuda a los usuarios, y estos lo llaman ante algún imprevisto. El intruso aprovechara esta oportunidad para pedir información necesaria para solucionar el problema del usuario y el suyo propio (la forma de acceso al sistema).

La ISI es más difícil de llevara cabo y por lo general se aplica cuando los usuarios están alertados de acerca de las técnicas de IS. Puede usarse en algunas situaciones específicas y después de mucha preparación e investigación por parte del intruso:

    Generación de una falla en el funcionamiento normal del sistema. Generalmente esta falla es fácil de solucionar pero puede ser difícil de encontrar por los usuarios inexpertos (sabotaje). Requiere que el intruso tenga un mínimo contacto con el sistema.
    Comunicación a los usuarios de que la solución es brindada por el intruso (publicidad).
    Provisión de ayuda por parte del intruso encubierto como servicio técnico.

Trashing (Cartoneo)

Generalmente, un usuario anota su login y password en un papelito y luego, cuando lo recuerda, lo arroja a la basura. Este procedimiento por más inocente que parezca es el que puede aprovechar un atacante para hacerse de una llave para entrar el sistema..."nada se destruye, todo se transforma".

El Trashing puede ser físico (como el caso descripto) o lógico, como analizar buffers de impresora y memoria, bloques de discos, etc.

El Trashing físico suele ser común en organizaciones que no disponen de alta confidencialidad, como colegios y universidades.


ESTEGANOGRAFIA

Esteganografía

Del griego steganos (oculto) y graphos (escritura), la esteganografía se puede definir como la ocultación de información en un canal encubierto con el propósito de prevenir la detección de un mensaje oculto.
La esteganografía estudia el conjunto de técnicas cuyo fin es insertar información sensible dentro de otro fichero. A este fichero se le denomina fichero contenedor (gráficos, documentos, programas ejecutables, etc.). De esta forma, se consigue que la información pase inadvertida a terceros, de tal forma que sólo sea recuperada por un usuario legítimo que conozca un determinado algoritmo de extracción de la misma

En clase se realizo esta practica dividiendo el salón en dos grupos en los cuales cada uno debía ocultar un mensaje para que el otro grupo lo descifra usando la herramienta ImageHide.exe la idea era ocultar un mensaje y utilizar esta herramienta para encriptar y descifrar el mensaje el éxito de la practica para ganar los puntos estaba en dar al adversario una clave difícil de digitar para que les tomara mas tiempo la descencriptación del mensaje.


Pantalla de inicio del programa ImageHide.exe.

Esta es la imagen en la cual ocultamos el mensaje
y nuestra clave para que descifraran nuestro mensaje
Clave:^{]*¨?¡()*~""¬¬|°ñongas;:,¡!{¿Ñ@=(%"!¡CarlosjaimeluissoniaHSLHCWPERDIERON
Mensaje: Perdieron.

lunes, 23 de septiembre de 2013

ANONIMATO

ANONIMATO

El anonimato y el cifrado son dos conceptos relacionados pero no iguales. El Anonimato garantiza que nunca nadie pueda saber quién eres en el mundo presencial y es una necesidad para muchos activistas (especialmente para aquellos que luchan en países o entornos muy hostiles en los que puede peligrar su vida o la de sus familiares).

Para garantizar el anonimato hay que desviar el tráfico de la red a través de Proxies Anónimos que ocultan el origen de las peticiones de páginas web de tal manera que no se puede saber quién ha accedido a cierta web o quién ha escrito un post o comentario. No es nada fácil conseguirlo de forma eficaz y fluida pero con un poco de esfuerzo podrás conseguirlo.

NOTA

La mayoría de las técnicas expuestas a continuación están encaminadas a ocultar el origen de las comunicaciones, o evitar que se pueda relacionar tráfico y mensajes con detalles identificativos personales (p.e. nombre, IP, localización, etc.). Pero no olvides que en gran medida tu identidad en la red no es una relación con aspectos de tu cuerpo físico, sino la posición que ocupas en una red social. A menudo, aunque tu identidad en ciertas capas de redes sociales estén bien protegidas, se puede averiguar tu identidad por mero análisis topológico (p.e. aunque los datos de tu perfíl y tu nombre en facebook protejan tu anonimato, la posición que ocupas en tu red social delata tu identidad). Para comprender un poco mejor este asunto lee este artículo sobre cómo pudieron identificar a toda una serie de personas con análisis topológico de redes comparando twitter con flickr.

Anonimato en el correo electrónico

Todo correo electrónico (incluido el que se envía por webmail: gmail, hotmail, etc.) lleva consigo la IP de quien envió el correo electrónico y esta IP puede relacionarse fácilmente con la localización y el nombre de la persona que contrata la línea (aunque para saber el nombre de la persona hace falta una orden judicial).

    Cómo enviar correos anónimos

Navegación anónima en la red

IMPORTANTE

La única opción fácil y realmente segura de usar anonimamente un navegador es instalando Tor Bundle

El navegador web se ha convertido en la principal interfaz del ciberespacio. Si quieres garantizar tu anonimato debes usar software libre, Firefox es el más completo y ofrece muchas herramientas para garantizar el anonimato. Lo primero que tienes que hacer es configurar las preferencias de privacidad. Firefox también permite que navegues de forma privada con una opción rápida que no guarda el historial, ni las cookies (pequeños paquetes de información que dejan las páginas web en tu ordenador). Pero nada de esto impedirá que terceras personas sepan que has visitado cierta página. Cuando navegamos por internet los servidores obtienen información que puede identificarte, en concreto tu dirección IP. La mejor forma de ocultar tu IP es usar un proxy (una máquina intermedia que oculte tu IP original). Existe un plugin de firefox que te permite usar y configurar proxies de forma sencilla: FoxyProxy. Instalatelo ahora mismo ;-)

El problema es encontrar un servidor proxy que funcione y sea fiable. Puedes usar una conexión VPN (ver más abajo) o usar un proxy sólo para Firefox.

Pero debes ocultar también mucha información que tu navegador da a los servidores de páginas web. Para ofuscar esta información debes usar Privoxy:

$ sudo aptitude install privoxy

Ahora vas a la configuración de FoxyProxy y añades el siguiente proxy: direccion 127.0.0.1 (esta es tu máquina), puerto 8118, y activas las opciones "SOCKS proxy?" y "SOCKS v4/4a". A partir de ahora tu tráfico se redirigirá hacia tu máquina y de allí a privoxy (que está configurado por defecto para darte salida por el puerto 8118).

Ahora ya puedes combinar privoxy con otra herramienta que va a ofuscar tu IP de verdad, se trata de TOR (ver más abajo). Tor te ofrece una red de servidores que, saltarás de una a otra borrando tus rastros de IP hasta que salgas de la red TOR para acceder a una web.

La combinación entre TOR y privoxy o polipo te da un anonimato bastante seguro, pero la salida de TOR puede estar comprometida, puede hacerte ataques de man-in-the-middle. Osea no hagas cosas como consultar tu cuenta de correo via web ;-)

Para asegurarte una navegación realmente segura, además de TOR se recomiendo combinarlo con I2P2

Los siguientes addons o plugins de Firefox son "obligatorios" si quieres proteger tu anonimato incluso usando TOR y I2P2:

https://addons.mozilla.org/addon/722 no script

https://addons.mozilla.org/es-ES/firefox/addon/5207/ cs lite

https://addons.mozilla.org/sv-SE/firefox/addon/2275/ tor buttom

https://addons.mozilla.org/es-ES/firefox/addon/953/ ref control

https://addons.mozilla.org/en-US/firefox/addon/6623/ better privacy

https://addons.mozilla.org/en-US/firefox/addon/59/ user agent switcher

https://addons.mozilla.org/en-US/firefox/addon/1237/ quick java

https://www.eff.org/https-everywhere https everywhere

https://addons.mozilla.org/en-US/firefox/addon/scroogle-ssl-search/ scroogle scape



o directamente instala el mejor kit... https://addons.mozilla.org/en-US/firefox/collections/theparadox/paranoia/

Cómo crear un perfil especial de Firefox para anonimato

No es mala idea tener un perfil de navegación especialmente asegurado ya que en muchos casos el anonimato y la seguridad en la navegación web puede rebajar la funcionalidad y puede que dejes de usar los plugins de anonimato para tareas cotidianas. Cuando arrancas el navegador se carga la configuración por defecto con los archivos que tienes en (normalmente) en la carpeta .mozilla-firefox en tu home: /home/NOMBRE_USUARIO/.mozilla-firefox. Para crear un segundo perfil y activarlo lo primero es matar todos los procesos de firefox y ejecutar firefox con la opción -ProfileManager desde la línea de comandos:

$ sudo killall firefox* $ firefox -ProfileManager

Creamos el perfil anónimo (nombre del perfil "anon") y le decimos que use la .anon/mozilla-profile/ como carpeta propia (esta carpeta la podemos usar además para guardar otras configuraciones). El problema es que seguramente ahora firefox arranque por defecto con ese perfil, y nosotras queremos usar nuestro perfil normal en nuestra vida cotidiana. Así que volvemos a $ firefox -ProfileManager y seleccionamos Default (que seguramente fuera nuestro perfil normal). Fijaros que hemos dejado por defecto la opción de no preguntar al principio. Mejor así porque vamos a crear un enlace directo para arrancar el perfil anonimo directamente y dejar el otro por defecto. Con el siguiente comando podremos arrancar directamente el perfil anónimo:

$ firefox -P anon --no-remote

Si nos da problemas el nuevo perfil, seguramente el problema se solucione si borramos los siguiente archivos:

$ cd .anon/mozilla-profile $ rm compreg.dat extensions.cache extensions.ini extensions.rdf pluginreg.dat

Para facilitar aún más la cosa podemos crear un icono para lanzar nuestro perfil anonimo. Vamos a nuestra barra de herramientas (donde tengamos las aplicaciones que lanzamos comun mente) en un espacio vacío hacemos click con el botón derecho y añadimos Lanzadera de Aplicación Personalizada con el comando de arriba: "firefox -P anon --non-remote". El problema es si antes de lanzar el firefox a secas lanzamos el perfil anon, si después lanzamos firefox a secas va a arrancar otra instancia del perfil anon. Para evitar esto el botón de firefox en la barra de herramientas tiene que lanzar el comando: "firefox -P default --no-remote" para ello vamos encima de dicho botón, click con el botón izquierdo del ratón, vamos a Propiedades y sustituimos el comando Firefox por "firefox -P default --no-remote".

NOTA

Una vez que tenemos el perfil especial anon, tenemos que instalar todos los plugins y hacer las configuraciones apropiadas, el perfil arrancará la primera vez un firefox sin ningún plugin.

_________________________________________________________________________

TOR:

TOR es una red de proxies que se insertan entre tú y el servidor al que te conectes. La comunicación circulará saltando de un nodo de TOR a otro de forma cifrada de tal manera que es imposible saber a dónde estás accediendo, incluso aunque alguno de los nodos intermedios de TOR esté comprometido.

Tor también es conocido como Onion Routing (enrutado de cebolla) por las capas intermedias que introducen. A través de tor se puede acceder a páginas de dominio de nivel superior terminado en .onion.

IMPORTANTE

YA NO SE RECOMIENDA USAR TO BUTTON es mejor que uses Tor Bundle

NOTA IMPORTANTE

TOR no va a a hacer anónimo automáticamente todo tu tráfico, tienes que usar y configurar programas que estén preparados para ello. Para conseguir el máximo anonimato con TOR tendrás que tomar algunas medidas adicionales de seguridad y renunciar a algunas cosas como Java, Flash, ActiveX, RealPlayer, Quicktime o los plugins de PDF de Adobe. Todos estos plugins pueden revelar información que te identifica. Cuidado con las cookies, también pueden revelar información sensible y por eso es recomendable que las borres. Lee la lista completa de Warnings después de instalar Tor. Es buena costumbre tener un navegador aparte (u otro perfil de Firefox, p.ej) configurado de forma segura con Torbutton y el resto de extensiones necesarias (ver sección de navegación anónima y segura) para usar sólo para propósitos relacionados con la navegación anónima.

TOR Bundle: navega con TOR sin instalaciones

Si quieres navegar de forma anónima con Tor sin instalar ningún software en la máquina a la que tienes acceso, puedes usar Tor browser bundle. Los pasos que tienes que seguir son los siguientes:

    Descargar el software, será un fichero tar.gz para Linux, o un ejecutable para Windows.
    Descomprimir el fichero tar.gz en caso de usar Linux.
    No te olvides de verificar el fichero siguiendo las instrucciones de torproject.org (si tienes tu conexión intervenida podrían haberte colado una versión maligna de Tor).
        Desgraciadamente las instrucciones de cómo verificar la autenticidad del programa son malísimas, aquí van las nuestras (recuerda descargar siempre las aplicaciones desde la web original de tor, y que se vea bien en el navegador que el https está verificado, no te fies de otros enlaces):
            Descarga el programa desde torproject.org y descarga también la firma (aparece entre paréntesis debajo del botón de descarga tal que así (sig) con en enlace a un archivo .asc). Probablemente tu navegador abra directamente el archivo porque es un archivo de texto, así que guardalo en la misma carpeta en la que has guardado el tar.gz de torbundle
            Importa la clave de Eric

gpg --keyserver hkp://keys.gnupg.net --recv-keys 0x63FEE659

            Comprueba la clave

gpg --fingerprint 0x63FEE659

            Debería de salirte lo siguiente:

pub 2048R/63FEE659 2003-10-16 Key fingerprint = 8738 A680 B84B 3031 A630 F2DB 416F 0610 63FE E659 uid Erinn Clark <erinn@torproject.org> uid Erinn Clark <erinn@debian.org> uid Erinn Clark <erinn@double-helix.org> sub 2048R/EB399FD7 2003-10-16

            Ahora entra en la carpeta en la que hayas descargado torbundle y su firma y ejecuta el siguiente comando:

gpg --verify NOMBRE_ARCHIVO_TOR.asc NOMBRE_ARCHIVO_TOR.tar.gz

    Ejecutar el script start-tor-browser (o lanzar el .exe en Windows) que se encuentra dentro del directorio tor-browser_en-US. Al ejecutar este script arrancará un navegador, namoroka, a través del cual puedes navegar anónimamente. Para lanzar el programa sólo tienes entrar en la carpeta de tor y ejecutar este comando desde la terminal:

$ ./start-tor-browser

Todo esto te servirá para navegar con Firefox a través de TOR, pero no para otros programas (p.e. mensajería instantánea, o ssh). Para ello tendrás que Torificar, es decir, redirigir el tráfico de cada programa a la red TOR.

https://www.torproject.org/download/download.html.en download/descargar

https://www.torproject.org/dist/manual/short-user-manual_es.xhtml manual de usuario...

__________________________________________________________________________

TOR relay: participa en la red TOR siendo un nodo más

Participa en la red Tor convirtiéndote en uno de los nodos intermedios: Instrucciones para ser un relay de Tor. Puedes usar el programa Vidalia para configurar tu ordenador como relay (nodo intermediario de TOR).

Si te encuentras con dificultades para configurar de forma automática la redirección de puertos, consulta la web portforward.com donde encontrarás mucha información de todo tipo de routers. Busca el tuyo y ahí encontrarás la información necesaria para el redireccionamiento.

Además ponen a disposición una herramienta (Portcheck) que te ayuda a comprobar y asegurarte de que realmente has configurado bien el router. Te servirá para saber seguro si la configuración es correcta y desde la red Tor van a poder conectar a tu nodo.

http://www.torproject.org/docs/tor-doc-relay.html.en instrucciones tor relay.

https://www.torproject.org/projects/vidalia.html.en vidalia.

http://portforward.com/ verificador de router

http://portforward.com/help/portcheck.htm portcheck...puertos .

___________________________________________________________________________

I2P2

Si Tor es un tipo de Onion Routing (enrutado de cebolla), I2P2 es un tipo de Garlic Routing (enrutado de ajo). El sistema es parecido al de TOR, aunque está menos desarrollado y está más centrado en compartir archivos. En la página de I2P2 encontrarás una comparativa entre TOR y I2P2. Una de las diferencias fundamentales es que I2P2 está programado en Java y requiere tener Java instalado. Por lo demás la arquitectura de I2P2 está diseñada de forma que, en principio, es menos vulnerable a ataques: enrouta de forma diferente cada paquete (en lugar de cada conexión como hace TOR) y el camino de ida y de vuelta son distintos.

    Primero entiende cómo funciona i2p2 leyendo esta introducción al funcionamiento de I2P2 (en inglés) y versión reducida en castellano.
    Sigue las instrucciones de instalación y configuración de I2P2. Para Ubuntu es tan fácil como

$ sudo apt-add-repository ppa:i2p-maintainers/i2p $ sudo apt-get update $ sudo apt-get install i2p

Ya puedes lanzar i2p (no se recomienda hacerlo como root):

$ i2prouter start

Ya tenemos el i2prouter funcionando como demonio. Ahora abre una pestaña de un navegador y comprueba que funciona visitando la siguiente dirección



http://127.0.0.1:7657/

Aquí podras configurar diversos servicios de i2p, la interfaz es fácil de usar pero i2p da muchas posibilidades y es fácil que te pierdas. FALTA COMPLETAR CON LA CONFIGURACIÓN MÁS IMPORTANTE (navegación, IRC, mail...)

http://www.i2p2.de/ descargar.download

http://www.i2p2.de/how_intro.html introduccion al i2p2

http://www.i2p2.de/download.html linux ubuntu

__________________________________________________________________________

Anonimato en los chat

Los chat irc (Internet Relay Chat) son una herramienta muy usada entre hacktivistas. Sin embargo si no tomas medidas, cada vez que entras en un canal o alguien mira en tu información de usuaria puede encontrar tu IP directamente (recuerda que también puede haber gente en modo invisible en un canal espiando dicha información). Para evitarlo puedes ejecutar el siguiente comando:

/mode TU_NICK +x

Pero este comando no funciona en freenode y otros servidores. Para conseguir que desaparezca tu IP en Freenode tienes que contactar con los administradores y pedirles que te hagan un "cloak". Para ello lo primero es seguir estas instrucciones para registrar tu nombre. Después tendrás que contactar con un administrador. Para ello ejecuta:
/stats p

Ahora veremos una practicas realizadas en clase.

1. Descargar la versión de Firefox de internet 
2. Buscar los plugins o firecats: 
        a. Show Ip
        b. Foxyproxy
3. Instalar los componentes al navegador 
4. Utilizar un servicio para obtener listas de proxys anónimos y configurar dichos proxys en el Foxyproxy
5. Realizar pruebas con diferentes proxys, minimo 5 proxys de diferentes países, verificando conectividad y rapidez en el servicio.

Entramos a la lista de proxys para escoger uno para configurarlo

Al darle click en opciones nos sale esta pantalla donde escogemos añadir nuevo proxy.

Aquí escribimos la dirección del proxy y el puerto a configurar.

Se selecciona el proxy a utilizar y se prueba entrando a navegar

Aquí vemos que estamos navegando por el proxy de Rusia.


ANONYMOUSE



Cada vez que una persona accede a Internet, ya sea desde su hogar o desde una PC ajena, está enviando y recibiendo información por Internet, la cual puede ser usada por algún método por terceros.

Para evitar, por ejemplo, que otras personas sepan nuestra dirección de IP, se puede usar algún software o aplicación web que nos permita disfrazar dicha numeración para que ni siquiera puedan saber nuestro país de residencia original.

Una de las herramientas web que recomiendo en estos casos es Anonymouse.org, una sencilla aplicación con la cual podemos acceder a cualquier página web de forma anónima, sin dejar rastros y sin mostrar información verdadera.

Lo bueno de Anonymouse.org es que no presenta dificultad alguna. De hecho, si vamos a utilizarla notaremos que una vez dentro de la web, solo hará falta teclear la web a la que queremos ingresar dentro de un campo que se indica en la interfaz de la aplicación.

Con esto hecho, Anonymouse.org comenzará a mostrar la web a la que ingresaste, pero enviando información falsa que te permitirá mantenerte en el anonimato. Lo que es probable, es que notes que la velocidad de carga y navegación se relentece un poco, algo normal ya que aumentan la cantidad de procesos necesarios.









TOR



¿Qué es Tor?

Tor es una aplicación que toma los datos que entran y salen a través de tu conexión a Internet y los hace pasar a través de un circuito de servidores repartidos por todo el mundo. Eso consigue que tu tráfico se vuelva totalmente anónimo.

La red de Tor, en la que cualquiera puede participar como nodo voluntario, consta de más de 4.000 máquinas repartidas por decenas de países de todo el mundo. Esta cantidad de nodos garantiza anonimato y conectividad para los usuarios de Tor.

¿Qué significa Tor?

Tor no hace referencia al dios nórdico del trueno, sino que es un acrónimo para The Onion Router, el “enrutador cebolla”. La referencia se debe a la estructura de la red usada por Tor, que consiste en varias capas de cifrado que protegen los datos.

El proyecto Onion Router fue financiado originalmente por el gobierno de los Estados Unidos, y se desarrolló en los laboratorios de investigación de la marina de los EEUU. A día de hoy, Tor recibe financiación de diversas fuentes, como empresas y ONGs.

¿Para qué se usa Tor?

Tor se usa cuando se desea impedir que una actividad en Internet se pueda relacionar con la persona que la lleva a cabo. Tor crea anonimato en la red. Este anonimato puede ser aprovechado para las finalidades más diversas.