martes, 16 de enero de 2018

¿Como siguen tus huellas?


Antes de que un ataque comience, el atacante debe tener información sobre el objetivo (target), esta fase de recogida de información se puede dividir en dos etapas: Footprinting y Fingerprinting


Footprinting

Footprinting o también conocida como OSINT (Open Source Intelligence) se encarga de la adquisición, tratamiento y posterior transformación en inteligencia de la información conseguida a partir de fuentes de carácter público como prensa, radio, televisión , internet, informes de diferentes sectores y en general cualquier recurso accesible públicamente.
Los buscadores Google (buscador genérico), Shodan (buscador de dispositivos conectados a Internet) y NameCHK (buscador de dominios y nombres de usuario en diferentes servicios) suelen ser utilizados en esta etapa ya que los "dorks"(combinación de operadores para buscar información) con los que cuentan estos buscadores ayudan mucho a obtener exactamente el tipo de información que están buscando.
Como ya se ha mencionado, también se puede obtener información que esta públicamente accesible, como la información acerca de un autor de un documento subido en la red o la información que se puede obtener de las redes sociales.

Un ejemplo de este es el vídeo de un falso "mentalista" que adivina información personal de personas al azar, usando las redes sociales.
"Tu vida entera esta en linea, y puede ser usada en tu contra" el vídeo lo puedes ver aqui, hagamos conciencia sobre lo que publicamos y donde publicamos cierta informacion

Esta etapa no implica actividades ilegales.

Fingerprinting

Se trata de una recogida de datos más específicos que permiten recopilar información sobre TCP/IP de una red o  sistema concreto. Como por ejemplo: topologías, direcciones y nombres  a diferentes niveles, estado de puertos, versiones y  estado de actualización de software y parches de SO, listados de vulnerabilidades, etc. 
La información no suele ser pública y se suele conseguir utilizando técnicas y herramientas más específicas: ingeniería social, phishing, sniffing y scanning.

Esta etapa implica actividades alegales o ilegales.




Fuentes de información:
Curso en linea de Ciberseguridad en Miriadax

miércoles, 10 de enero de 2018

Crawling y Fuzzing

Crawling

El “crawling” también conocido como “spidering” es una técnica que se utiliza en las fases de una auditoria web cuando se realiza el análisis de información, esta técnica puede construir un mapa del sitio web descargando información de forma masiva para posteriormente indexar el contenido de un conjunto de páginas web no estructuradas, se puede decir que se “araña” el sitio web objetivo.

A medida que el “crawler” visita URL, identifica todos los hipervínculos en la página y los agrega a la lista de URL para visitar. Cuando el “crawler” está archivando sitios web, copia y guarda la información a medida que avanza. El archivo se conoce como “repositorio” y está diseñado para almacenar y administrar la colección de páginas web. Un repositorio es similar a una base de datos.


Para la ejecución de esta técnica se mencionan algunas herramientas como:
Black widow
Website Ripper Copier
Burp Suite
DirBuster
WFuzz

Fuentes de información:

Imagenes:
123rf

Fuzzing

Son técnicas capaces de generar y enviar datos secuenciales o aleatorios a una o varias áreas o puntos de una aplicación con la que es posible evaluarlas en búsqueda de vulnerabilidades, como por ejemplo, aquellas que utilizan la red para conectarse con otros módulos y que pueden ser explotables de forma remota.
Estas técnicas proporcionan cobertura a fallos de datos y regiones de código no testados, gracias a la combinación del poder de la aleatoriedad y ataques heurísticos entre otros.

Las pruebas semiautomáticas o automáticas que utilizan estas técnicas se llaman fuzzers. En general, la mayoría de los fuzzers intentan encontrar vulnerabilidades del tipo buffer overflow, integer overflow, format string o condiciones de carrera, aunque también abarcan otros tipos de errores, como inyecciones sql.

El funcionamiento de los fuzzers suele realizarse en las siguientes etapas:
  • Obtención de datos: se obtendrán los datos a enviar de una lista estática almacenada en archivos o en el propio código fuente, o se generara en el mismo momento según las configuraciones efectuadas. Este proceso se puede realizar únicamente al inicio de la sesión o justo antes de cada envío.
  • Envío de datos: una vez se dispone de la información que se desea enviar a la aplicación objetivo, se realizará el proceso eligiendo los mecanismos de entradas que pueden ser a través de un archivo y, en otros casos, las entradas pueden ser a través de la interacción del usuario.
  • Análisis: después de realizado el envío, solo quedará esperar los resultados del fuzzing. Su función principal es la búsqueda de errores  y en el impacto que estos pueden tener sobre el propio sistema de prueba. A partir de los errores es posible determinar cuál de esos errores son críticos y pueden ser explotados.

Técnicas de Fuzzing

Mutación: consiste en partir de una entrada válida y realizar ciertas mutaciones de esos datos, con la intención de que sigan siendo válidas para la aplicación pero lo suficientemente inesperadas para lograr el objetivo


Generación: se deben crear los datos antes de enviarlos, pudiendo descubrir fallos que el otro método obviaba. Normalmente, los datos obtenidos también se sustituirán en una entrada válida del objetivo. Dependiendo de la forma de generar los datos se encuentran otros dos subgrupos:
  • Los recursivos, que se obtienen de la iteración sobre un alfabeto dado o de la repetición de un mismo carácter, como son:

    Permutación: teniendo en cuenta, por ejemplo, el alfabeto hexadecimal “0,1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F” y buscando datos de seis caracteres  para sustituir de la forma siguiente:
    Repetición: se usa generalmente para la búsqueda de fallos del tipo buffer overflow. Se suele usar un incremento en cada repetición para no alargar el proceso inútilmente

  • El otro subgrupo es el que hace uso de la sustitución, que se centrará en reemplazar cierta parte de una entrada válida por los elementos de un vector de fuzzing. Algunos casos son:

    Integer overflow: ocurre cuando un programa recibe en una entrada un número que está fuera del rango que es capaz de manejar: un cero, un número negativo, un número mayor o menor que el rango actual, o uno con diferente tipo numérico (decimal en vez de entero). Este agujero puede derivar en un ataque de buffer overflow

    Format string: este tipo de ataques se producen cuando se introducen ciertos elementos para proporcionar formato a las cadenas de texto y no existe un mínimo control de seguridad. De esta forma, se puede conseguir una denegación de servicio o incluso la ejecución de código arbitrario en el sistema.
Herramientas para la ejecución de fuzzing :
PowerFuzzer
JBroFuzz
WebScarabat
Wapiti
Socket Fuzzer


Fuentes de Información:

viernes, 8 de diciembre de 2017

Protocolo OSPF


Open Shortest Path First (OSPF), Primer Camino Más Corto es un protocolo de red que usa un algoritmo de trayectoria más corta primero para construir y calcular la trayectoria más corta a todos los destinos conocidos. La trayectoria más corta se calcula con el uso del algoritmo Dijkstra. El algoritmo en sí mismo es muy complicado. La siguiente es una forma simplificada de nivel muy elevado de analizar los diversos pasos del algoritmo:
En la inicialización y debido a cualquier cambio en la información de ruteo, un router genera un anuncio de estado de link (El estado del link ofrece una descripción de esa interfaz y de su relación con los routers vecinos). Este anuncio representa la colección de todos los estados de link en ese router.
Todos los routers intercambian estados de link mediante inundación. Cada router que recibe una actualización de estado de link debe almacenar una copia en su base de datos de estados de link y a continuación propagar la actualización a otros routers.
Una vez que la base de datos de cada router está completa, el router calcula un árbol de trayectoria más corta a todos los destinos. El router utiliza el algoritmo Dijkstra para calcular el árbol de trayectoria más corta. Los destinos, el costo asociado y el salto siguiente para alcanzar dichos destinos forman la tabla de IP Routing.
En caso de que no ocurran cambios en la red OSPF, tales como el costo de un link, o el agregado o eliminación de una red, OSPF debería permanecer muy tranquila. Cualquier cambio que ocurra se comunica a través de los paquetes de estado de link, y el algoritmo Dijkstra se recalcula para encontrar la trayectoria más corta.
El algoritmo coloca cada router en la raíz de un árbol y calcula la trayectoria más corta a cada destino basándose en el costo acumulativo necesario para alcanzar ese destino. Cada router dispondrá de su propia vista de la topología, a pesar de que todos los routers crearán un árbol de trayectoria más corta usando la misma base de datos de estados de link. Las secciones siguientes indican que comprende la creación de un árbol de trayecto más corto

Access List (ACL's)


Una ACL es una serie de comandos que controlan si un router reenvía o descarta paquetes según la información que se encuentra en el encabezado del paquete. Cuando se las configura, las ACL realizan las siguientes tareas:
·         Limitan el tráfico de la red para aumentar su rendimiento. Por ejemplo, si la política corporativa no permite el tráfico de video en la red, se pueden configurar y aplicar ACL que bloqueen el tráfico de video. Esto reduciría considerablemente la carga de la red y aumentaría su rendimiento.
·         Proporcionan control del flujo de tráfico. Las ACL pueden restringir la entrega de actualizaciones de routing para asegurar que las actualizaciones provienen de un origen conocido.
·         Proporcionan un nivel básico de seguridad para el acceso a la red. Las ACL pueden permitir que un host acceda a una parte de la red y evitar que otro host acceda a la misma área. Por ejemplo, se puede restringir el acceso a la red de Recursos Humanos a los usuarios autorizados.
·         Filtran el tráfico según el tipo de tráfico. Por ejemplo, una ACL puede permitir el tráfico de correo electrónico, pero bloquear todo el tráfico de Telnet.
·         Filtran a los hosts para permitirles o denegarles el acceso a los servicios de red. Las ACL pueden permitirles o denegarles a los usuarios el acceso a determinados tipos de archivos, como FTP o HTTP.

Practica

Para la actividad se configuro la siguiente maqueta:


En la cual se asignaron las siguientes direcciones IP:
Router 1
Router 2
Router 3
WAN
200.210.222.129/30
WAN
200.210.222.130/30
WAN
200.210.222.134/30
LAN
200.210.220.1/24
WAN
200.210.222.133/30
LAN
200.210.222.1/25
PC-A
200.210.220.2/24
LAN
200.210.221.1/24
PC-C
200.210.222.10/25
PC-B
200.210.221.10/24

Configuramos cada router con los siguientes comandos
Router >enable                                                                        
Router #configure terminal                                                      // en modo de configuración
Router (config)#int s[ID]                                                                  //elegimos puerto serial
Router (config-if)#ip add <ip address> <submask>      //configuramos IP correspondiente
Router (config-if)#clock rate 64000                 //aquí solo configuramos si el cable es DCE
Router (config-if)#no shut                                                                    //activamos el puerto
Router (config-if)#exit                                                  //regresamos a configuración global
Router (config)#int gi[ID]                          //configuramos el puerto al que se conecta la PC
Router (config-if)#ip add <ip address> <submask>                   //asignamos su direccion IP
Y le asignamos a las PC las direcciones IP correspondientes a la Tabla


Se verifica la conectividad haciendo PING y se detecta que no hay conectividad debido a que no se ha establecido ningún protocolo de comunicación

Se establece el protocolo de rutas OSPF de la siguiente manera:

Router >enable                                                                        
Router #configure terminal                                                   
Router (config)#router ospf  <process id>                                                             
Router (config)# network <network ID>  <wildcard mask>  área 0  
//Router (config)# network <network ID>  <wildcard……… hasta incluir  todas las redes
Router (config)#exit

Se configuraron los siguientes routers:
R1
R1 >enable                                                                        
R1 #configure terminal                                                   
R1 (config)#router ospf  1                                                             
R1 (config)# network 200.210.220.0 0.0.0.255  área 0  
R1 (config)# network 200.210.222.128 0.0.0.3  área 0  
R1 (config)#exit

R2
R2 >enable                                                                        
R2 #configure terminal                                                   
R2 (config)#router ospf  1                                                             
R2 (config)# network 200.210.221.0 0.0.0.255  área 0  
R2 (config)# network 200.210.222.128 0.0.0.3  área 0
R2 (config)# network 200.210.222.132 0.0.0.3  área 0     
R2 (config)#exit




R3
R3 >enable                                                                        
R3 #configure terminal                                                   
R3 (config)#router ospf  1                                                             
R3 (config)# network 200.210.222.133 0.0.0.3  área 0  
R3 (config)# network 200.210.222.0 0.0.0.127  área 0
R3 (config)#exit


jueves, 7 de diciembre de 2017

Enrutamiento Estático y RIP


Enrutamiento Estático

El enrutamiento es fundamental para cualquier red de datos, ya que transfiere información a través de una internetwork de origen a destino. 
Las rutas estáticas son útiles para redes pequeñas con solo una ruta hacia una red externa, por lo tanto, es una ruta conocida, estas no se anuncian a través de la red, lo cual aumenta la seguridad, consumen menos ancho de banda que los protocolos de routing dinámico y no se utiliza ningún ciclo de CPU para calcular y comunicar las rutas.

No se recomienda para redes en crecimiento ya que el mantenimiento puede ser cada vez más complicado y requieren un conocimiento completo de la red para implementarla correctamente.



RIPV2 (Protocolo dinámico)

RIP utiliza dos tipos de mensajes especificados en el campo Comando: Mensaje de solicitud y Mensaje de respuesta.
Cada interfaz configurada con RIP envía un mensaje de solicitud durante el inicio solicita que todos los RIP vecinos envíen sus tablas de enrutamiento completas. Se envía de regreso un mensaje de respuesta por parte de los vecinos habilitados con RIP.
Cuando el router que realiza la solicitud recibe las respuestas, evalúa cada entrada de ruta. Si una entrada de ruta es nueva, el router receptor instala la ruta en la tabla de enrutamiento. Si la ruta ya se encuentra en la tabla, la entrada existente se reemplaza si la nueva entrada tiene un mejor conteo de saltos.
El router de inicio luego envía un triggered update desde todas las interfaces habilitadas con RIP que incluyen su propia tabla de enrutamiento para que los RIP vecinos puedan recibir la información acerca de todas las nuevas rutas.

Algunas características de RIP:
Es un protocolo de enrutamiento vector distancia.
Utiliza el conteo de saltos como su única métrica para la selección de rutas.
Las rutas publicadas con conteo de saltos mayores que 15 son inalcanzables.
Se transmiten mensajes cada 30 segundos.

La porción de datos de un mensaje de RIP se encapsula en un segmento UDP, con los números de puerto de origen y destino establecidos en 520. El encabezado IP y los encabezados de enlace de datos agregan direcciones de destino de broadcast antes de enviar el mensaje a todas las interfaces configuradas con RIP.

Practica

Para la actividad se configuro la siguiente maqueta:
En la cual se asignaron las siguientes direcciones IP:
Router 1
Router 2
Router 3
WAN
200.210.222.129/30
WAN
200.210.222.130/30
WAN
200.210.222.134/30
LAN
200.210.220.1/24
WAN
200.210.222.133/30
LAN
200.210.222.1/25
PC-A
200.210.220.2/24
LAN
200.210.221.1/24
PC-C
200.210.222.10/25
PC-B
200.210.221.10/24

Configuramos cada router con los siguientes comandos y los datos correspondientes a cada router:

Router >enable                                                                         
Router #configure terminal                                                      // en modo de configuración
Router (config)#int s[ID]                                                                  //elegimos puerto serial
Router (config-if)#ip add <ip address> <submask>      //configuramos IP correspondiente
Router (config-if)#clock rate 64000                 //aquí solo configuramos si el cable es DCE
Router (config-if)#no shut                                                                    //activamos el puerto
Router (config-if)#exit                                                  //regresamos a configuración global
Router (config)#int gi[ID]                          //configuramos el puerto al que se conecta la PC
Router (config-if)#ip add <ip address> <submask>                   //asignamos su dirección IP

Y le asignamos a las PC las direcciones IP correspondientes a la Tabla.

Se verifica la conectividad haciendo PING y se detecta que no hay conectividad debido a que no se ha establecido ningún protocolo de comunicación.

Se establece el protocolo de rutas estáticas de la siguiente manera

router#config t
router(config)#ip route <Net-ID> <Net-ID Mask> <Next Hop>

Net-ID: Identificador de la red destino
Net-ID Mask: Máscara de red de la red destino
Next Hop: IP de la interfaz del router próximo en la trayectoria hacia la red

En la cual se carga la siguiente configuración en cada uno de los routers:

Router 1
ip route 200.210.221.0 255.255.255.0
200.210.222.130
ip route 200.210.222.132 255.255.255.252
200.210.222.130
ip route 200.210.222.0 255.255.255.128
200.210.222.130
Router 2
ip route 200.210.220.0 255.255.255.0
200.210.222.129
ip route 200.210.222.0 255.255.255.0
200.210.222.134
Router 3
ip route 200.210.220.0 255.255.255.0
200.210.222.133
ip route 200.210.221.0 255.255.255.0
200.210.222.133
ip route 200.210.222.128 255.255.255.252
200.210.222.133

Después de realizar las configuraciones se realiza ping y se verifica que hay conectividad


Se eliminan las rutas estáticas con el comando:

router#config t
router(config)#no ip route <Net-ID> <Net-ID Mask> <Next Hop>

En cada router deshabilitando cada ruta estática establecida en el proceso. A continuación se configura RIPv2 (protocolo dinámico) en cada Router de la siguiente manera

Router(config)#router rip
Router(config-router)#network <IP-de-red>
Router(config-router)#version 2
Router(config-router)#no auto-summary
Router(config-router)#exit

NOTA: no auto-summary : Al ingresar este comando le decimos al router que NO sumarize las rutas que tiene. Es de gran utilidad cuando no tenemos redes contiguas.


En Conclusion

Los protocolos de enrutamiento facilitan el intercambio de información de enrutamiento en los router. Permiten compartir información sobre redes remotas y agregar esta información a sus tablas de enrutamiento para así seleccionar el mejor camino que debe tomar un paquete y hacer mas rápido el trafico de red.

Establecer rutas estáticas se recomienda ser una red pequeña, ya que se torna mas complicado a medida que crece una red, y el protocolo dinámico se recomienda establecerlo en redes en crecimiento ya que es mas sencillo el mantenimiento y configuración, aunque también es valido una combinación de los dos protocolos dependiendo de los requerimientos de la red.

A continuación Ventajas y Desventajas de los protocolos dinámico y estático




miércoles, 1 de noviembre de 2017

Backdoor





Se define a un backdoor como:

Tipo de troyano que permite el acceso al sistema infectado y su control remoto. El atacante puede entonces eliminar o modificar archivos, ejecutar programas, enviar correos masivamente o instalar herramientas maliciosas.

Es usado frecuentemente con aplicaciones comerciales para ofrecer soporte a dispositivos mediante servicio remoto, también para trabajar desde casa accediendo al ordenador de la oficina y trabajando como si estuviese sentado justo delante de él.

Backdoor puede venir ya integrada en el sistema de manera intencional o no intencional, ya sea que se requiera sacar provecho del dispositivo en el que se instalo el sistema infectado o que se hubiera olvidado quitar o desactivar esta función. Permite el acceso continuo a todos los datos y procesos que se están ejecutando en el equipo a nivel de sistema, de forma completamente remota. Esto resulta muy jugoso para un atacante malicioso que desea mantener el control del equipo el mayor tiempo posible.
También se puede crear en una determinada aplicación de dudosa procedencia que se ejecuta en el sistema. Esta puede ser insertada por el propio desarrollador, a propósito, tanto con una intención maliciosa en mente o para labores de depuración de código.



Recomendaciones:
No instalar aplicaciones de dudosa procedencia.
Un análisis del tráfico de nuestra red o incluso del propio binario puede sacar a la luz funcionalidades no deseadas.
Tener antivirus actualizado 
Realizar un análisis profundo con una herramienta de desensamblaje ya que pueden revelar funciones ocultas de backdoor que no se ven a primera instancia.


Fuentes:

Imagen: