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

domingo, 29 de diciembre de 2013

Deep Sqlite I (El análisis)

Cada día se ve mas Sqlite como base de datos  gracias a los "smartphone" y no solo a ellos a firefox, skype, dropbox y muchos mas utiliza esta tecnología para almacenar su información.

Esta vez nos vamos a centrar en la cabecera de cualquier archivo sqlite (que no este cifrado), en los 100 primeros bytes encontramos informacion imporante de sqlite (The SQLite Database File Format).

Figura 1. Cabecera de un archivo Sqlite
Ahora que tenemos la estructura de la cabecera vamos a ver un ejemplo abriendo con un editor hexadecimal para analizar los primeros 100 bytes, en este ejemplo vamos a ver una base de datos de Skype (main.db)

Figura 2. Cabecera Sqlite

53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00 : Cadena escrita que termina con "00"
10 00 : Tamaño de la página 4096 bytes
01: No dispone de modo WAL para escritura
01: No dispone de modo WAL para lectura
0000134C: El fichero ha sido cambiado 4.940 veces
0000011D: El fichero contiene 285 páginas
00000119: Número de la primera página libre troncal
00000001: Codificación de texto UTF-8
00000000: Al estar todo a 0, no hay auto-vacuum
002DE225 : Equivale a la version de la Base de datos

Write Ahead Logging es un método de rollback desde la versión 3.x , el cual invierte el proceso tradicional de rollback. En teoría los cambios de una base de datos son escritos en el mismo archivo original llevando un control en un registro de modificaciones en otro fichero del cual podrá ser recuperado si algo no fue escrito de forma correcta por algún problema.

La tecnología WAL crea un nuevo fichero con el mismo nombre agregando el (-wal) al final, donde se harán los cambios y se sobrescribirá el original cuando de se ejecute la orden de sobrescritura.

En el siguiente post, vamos hablar de las "hojas", arboles y demás ;)





viernes, 20 de diciembre de 2013

Destripando Skype (Análisis Forense Digital)

Dejamos el "hacking" por un lado (muy cerca , no tan lejos ) y continuamos con lo que es el análisis forense digital , en este caso nos enfocaremos en el cliente de mensajería, Chat , VoIP  llamado Skype.

Muchas veces cuando se realiza un análisis forense digital y necesitamos extraer información de los clientes de mensajería no se cuenta con una herramienta "amigable" que permite llevar acabo un análisis en este caso de la relación de información almacenada en una base de datos.

Encontré una que otra herramienta (script) escritos en python (love it) , pero no son tan amigables , decidí crear una herramienta que permite realizar el análisis de una forma mas fácil y amigable , estas son algunas de sus funciones:
  1. Crear un perfil del o de los usuarios de Skype de un determinado Equipo
  2. Lista de Contactos de Skype  (Nombre , User , Pais ,Fecha de relación de amistad ) 
  3. Lista de Conversaciones (Chat)
  4. Relación de conversaciones  (Conversación entre usuarios , fecha , Usuario)
  5. Transferencia de archivos (Quien envió a quien , fecha , archivo enviado , nombre del archivo , donde se encontraba, fecha de envio , tamaño del archivo)
  6. Vídeo llamadas (Participantes, duración de la vídeo conferencia , ip de llamadas )
  7. Generar un Hash (MD5 y SHA1) del archivo analizado , preservación de la evidencia
  8. Reportes de las funcionalidades en formato .xls
Por el momento considero que le falta madurar a la herramienta , dentro de algunos días soltare la versión Free de la herramienta.

El Splash de mi App (me quedo de 10 )
Bueno para no ser diseñador me quedo bien ! , continuando  con la aplicación tenemos la opción principal de abrir la base de datos (SQLITE) una vez cargada la BD se procede a analizar y relacionar la información.
Seleccionando la base de datos para analizar
 Por el momento estas son las funciones con las que cuenta mi aplicación, a medida que vaya madurando se vera la necesidad de implementar algunas nuevas funciones.
Las funciones de la aplicación 
Una de las funciones importantes desde mi humilde punto de vista es la de transferencia de archivos , si bien usuarios "inteligentes" borran sus conversaciones de la base de datos no se borran , entonces podríamos determinar si existe fuga de información (si utilizan este medio para hacerlo).

Algo que me llamo la atención fue las direcciones IP que se registran en las vídeo llamadas ya que con eso podemos determinar la ubicación geográfica de los participantes

La herramienta esta en su fase de desarrollo , no  soy muy bueno con la interfaz si alguien me da la mano con eso Bienvenido!.

Espero liberar pronto la version Free, saludos!

EOF


martes, 3 de mayo de 2011

Datos en los Datos (Extrayendo Información)

En esta oportunidad vamos a hablar de una herramienta forense que permite extraer información valiosa “metadatos” de distintos tipos o formatos de archivo.

Seguramente no se ve la importancia necesaria a esto ¿Tenemos los datos y ahora qué?
Bueno esa información ¿Qué tan importante es? , establezcamos un escenario

Supongamos que Pepito es detenido por una investigación de Pedofilia, a pepito le incautan  10 fotografías de la victima1 susceptibles a consumar un delito, en el proceso de aprensión se le confisca una cámara fotográfica con las que se presume que se han tomado las fotos,  paralelamente detienen a Juanito en   poder de 10 fotografías de otra  víctima2.

Si mediante un análisis forense, y en virtud a los metadatos relacionados, determinamos que las fotografías de la victima2 fueron tomadas con la misma de la victima1 y la cámara confiscada, se puede relacionar a Pepito y a Juanito en la comisión del delito. De esta forma se apreciará que las fotos fueron tomadas por Pepito  y que Juanito obtuvo las imágenes del alguna forma.

Esta información puede ser utilizada como evidencia un proceso legal en el cual se puede determinar si Pepito es culpable o inocente.


Exiftool puede extraer y modificar información de una gran gama de tipos de archivos como se muestra en la imagen anterior. No solo permite extraer también modificar los datos que se encuentran en los archivos, en nuestro caso determinaremos ¿Cuándo? , ¿con qué y tipo de cámara captura esta fotografía? e información adicional como exififd

Exif es un invento de JEIDA (Japan Electronic Industry Development Association) en un intento de normalizar el empleo de etiquetas a la hora de intercambiar ficheros de imágenes, y con el paso de los años se ha convertido prácticamente en un estándar de facto. 

Tan sólo basta con saber que Exif permite emplear etiquetas (marcadores) para almacenar datos críticos de una imagen, y que en virtud a Exif, una imagen digital comprimida se puede representar siempre acorde a una estructura de segmentos parecida a la siguiente:


Ahora que ya entramos en calor utilicemos a exiftool, la siguiente imagen fue tomada hace un tiempo


Los parámetros que se utilizaron para la extracción de datos son los siguientes
-a Permite extraer etiquetas repetidas
-u Extrae etiquetas desconocidas
-g1 Organiza la salida de información por grupos de etiquetas el 1 especifica la locación
exiftool.exe –a –u –g1 Pastelillo.jpg

Una imagen vale más que mil palabras , Gracias Morocha por el Muffin




lunes, 2 de mayo de 2011

Construyendo Paquetes TCP Raw

En esta ocasión tengo el agrado de presentar a nuestro nuevo amigo el señor Hping (ni tan nuevo).
Hping es una herramienta muy versátil, que permite la manipulación de paquetes TCP/IP desde línea de comandos. Es factible modificar la información contenida en las cabeceras de los paquetes ya sean TCP, UDP e ICMP, en función de los parámetros con que ejecutemos Hping


En la imagen anterior se puede observar que es una herramienta muy completa, el protocolo que utiliza en su forma “default mode” es TCP.
Cuando hacemos uso de la herramienta sin agregar parámetros realiza un Ping “común” pero con la particularidad de mostrar un poco más información en este caso envía un paquete al puerto 0 con una ventana de 64 bytes


  
La tercer Columna TTL (Time to live) indica la cantidad de saltos que tiene que transitar para llegar al host destino en el ejemplo claramente se observa que no hay un router de por medio, sport=0  (puerto destino) Flags=RA (Reset/ACK) Seq= i++ (Numero de Secuencia) Win=0 Capacidad de la ventana para recibir datos

Hping =Flood Syn + Ip Spoofing

Podemos realizar un ataque con Hping de la siguiente manera

Hping2 192.168.100.10 –rand-source –destport 80 –-syn –c 1000




192.168.100.10 = Equipo remoto
--rand-source = Modifica la Cabecera TCP asignando una IP de Origen Distinta en cada envío de Paquetes
--destport = Puerto Destino, en nuestro ejemplo se utiliza el puerto 80 del protocolo http
--syn o –S = Manipulamos la cabecera TCP levantando un bit en este caso el de sincronización SYN
-c =  Cantidad de Paquete que se va a enviar


Por otro lado en la maquina que se llevo a cabo el ataque SYN Flood se puede observar el comportamiento de los paquetes y la manipulación que se realizo.



De la misma forma el estado las conexiones entrantes haciendo uso de la herramienta nativa del S.O netstat

Hping no solo sirve para estas cosas, tiene muchas mas utilidades solo se expuso un pequeño e insignificante ejemplo de la Herramienta

Saludos


martes, 26 de abril de 2011

Fase de un Ataque (Según CEH)

No existe una regla clara de cómo se debe llevar a cabo un Ataque informático, el presente artículo  utiliza como apoyo los siguientes libros Digitales: “Official Certified Ethical Hacker Review guide” y “The CEH Prep Guide” y “Penetration Tester’s Open Source Tool Kitslos 2 primeros libros son guías  para obtener la certificación de CEH “Certified Ethical Hacker”  que propone seguir etapas para efectuar un ethical hacking.
Reconocimiento 

Esta etapa  que a su vez se divide en 2 formas Reconocimiento Pasivo que es llevado sin que la organización lo note, puede recopilar información por internet usando google, también se utiliza la Ingeniería Social y el Sniffing. La esencia del reconocimiento activo es de generar vital información acerca del rango de direcciones IP que utiliza, Dominios,DNS toda la información que se pueda recabar haciendo uso de Internet y las Herramientas Necesarias para obtener la información 

Escaneo  

La segunda Fase del Ethical Hacking consiste en determinar que puertos y que servicios y que Sistema Operativo está corriendo en el equipo en el cual se realizara la prueba de intrusión, existente distintos tipos de escaneos y técnicas para perpetrar un scan de acuerdo al escenario en el que se encuentre el Pentester, en un tópico anterior se hablo de distintas técnicas de scan utilizando la herramienta Nmap (Mapeador de redes).

Acceso
En esta etapa se utiliza toda la información recolectada y generada para comprometer un equipo aprovechando vulnerabilidades detectadas o encontradas, pueden ser ataques a aplicaciones, al S.O, Configuraciones por defecto.
Existentes numerosas herramientas y Framework para tener éxito en esta etapa aunque también es la más complicada porque se debe saltar Firewall’s evadir IDS y Muchas Aplicaciones que alertan por algún tipo de intrusión



Manteniendo Acceso

Una vez realizada la intrusión al equipo debemos dejar una puerta abierta para ingresar, troyanizar el Sistema Operativo, incluso con las propias herramientas nativas del equipo se puede llevar a cabo esta parte, crear Shell reversas, Tunneling.

Borrado de Huellas

Esta etapa final es en la cual el pentester debe eliminar todo rastro generado por los accesos, los scaneos y todo Log que genere las aplicaciones que corren en un determinado servicio.







martes, 19 de abril de 2011

Una de Firewall ;)

Un Firewall (Corta Fuegos) en un sistema con interfaces múltiples que está sujeto a diferentes redes, que cuenta con un mecanismo de filtrado para permitir o denegar el trafico entre las redes.

Los filtros de paquetes

El filtrado de paquetes analiza los paquetes en la  Capa de Red (3) y la Capa de Transporte (4) del modelo ISO/OSI. Eso significa que un filtro de paquetes utiliza principalmente el siguiente criterio para acometer su decisión de filtrado:
  • Los protocolos (ICMP, OSPF, AH, ESP, etc.),
  • La dirección IP de origen,
  • La dirección IP de destino,
  • El puerto de origen,
  • El puerto de destino,
  • Los indicadores TCP (SYN, ACK, RST, FIN, etc.).
En la figura anterior se observa el escenario, el intruso se encuentra afuera de la red corporativa, supongamos que debemos determinar el equipo remoto en este caso Web Server   al momento de realizar un Ping al WS  seguramente nos devolverá un mensaje ICMP de tipo 3 esto quiere decir que el host remoto “podría” estar Down y hasta ahí llego la historia no?. No!
 
Utilicemos a nuestro Nmap haber que nos dice , hacemos un Escaneo SYN  y utilizando nuestro wireshark se ve la secuencia de comunicación en el protocolo TCP/IP
 
Ahora sabemos que el host esta up , pero que si efectivamente están filtrados los paquetes los puertos ;( pero nuestra misión es determinar que S.O esta en el equipo remoto, y si esta filtrando el Fw como vamos a saber que puertos y que servicios están corriendo en el equipo para determinar el S.O.

Seguíamos con el escaneo con nuestro amigo Nmap en este caso utilizamos un parámetro de la sección de Burlar FW y demás!, el parámetro –g que indica el puerto por el cual saldríamos al equipo remoto.

De igual manera podemos utilizar los puertos más comunes y conocidos en los sistemas operativos ;) vamos a probar con los mas 139,445,443,80,25,21,53

 
En este caso esta se asume  que es Windows el que esta corriendo, por el servicio  que dice “Microsoft-ds” y si esta bloqueado , atrás de la shell se puede observar que no recibimos respuesta del equipo remoto , solo de nuestro equipo que esta enviando paquetes TCP con el Flag SYN Levantado 

 Hay que tener mucho cuidado ya que muchas veces puede que las herramientas arrojen  Falsos Positivos !
 

viernes, 15 de abril de 2011

TÉCNICAS DE ESCANEO DE PUERTOS II

TCP SYN

Esta técnica es también conocida como Half-open, (Medio Abierto) es muy parecida a la TCP Connect pero la gran diferencia es que no llega a establecer una conexión con el host remoto

Esta Técnica envía un paquete SYN al equipo remoto, si el equipo remoto responde con un SYN/ACK quiere decir que el puerto esta abierto y se termina devolviendo un paquete RST (Se envía un RST para que se lleve a cabo la conexión completamente) y no como se espera en el clásico saludo de los tres pasos; si llega un RST quiere decir que el puerto se encuentra Cerrado. En el caso de no recibir ningún tipo de paquetes quiere decir que el puerto esta Silencioso.

Para llevar acabo este tipo de escaneo un S.O *nix se debe tener los privilegios de root  debido a que este tipo de escaneo utiliza los Socket TCP raw.

LHOST                                                            RHOST
Puerto Abierto

-------------------------------- [SYN] -------------------> [O]

<---------------------------- [SYN/ACK] ---------------- [O]

-------------------------------- [RST] -------------------> [O]


Puerto Cerrado

--------------------------------[SYN]------------------->[x]

<----------------------------[RST]----------------[x]

Puerto Silencioso

-------------------------------- [SYN] -------------------> [?]

Utilizando nuestro Nmap podemos realizar el escaneo TCP Connect  mediante el siguiente comando:


Nmap –vv –P0 –sS ip_host_remoto





TCP FIN

Esta técnica es también conocida como Stealth Scan  (Escaneo Silencioso) es uno de los más discretos dentro de las técnicas mas convencionales se apoya en los estándares internacionales de TCP/IP.

Al momento de realizar el escaneo, el equipo local envía un paquete FIN al puerto del host destino que queremos escanear; Los estándares internacionales dicen que al momento de enviar un paquete FIN el equipo remoto responde con un RST si el puerto esta cerrado en el caso de no recibir respuesta se puede decir que el puerto esta Abierto o Filtrado.

La principal desventaja de este Tipo de escaneo es que nos deja una gran lista de falsos positivos.

La gran ventaja que tiene este tipo de escaneo es que la gran mayoría Firewall no detecta este tipo de escaneo, pero si un buen IDS bien configurado lo detectaría.
LHOST                                                            RHOST
Puerto Abierto

-------------------------------- [FIN] -------------------> [O]

Puerto Cerrado

--------------------------------[FIN]------------------->[x]

<----------------------------[RST]----------------[x]

Puerto Silencioso

-------------------------------- [SYN] -------------------> [?]

Utilizando nuestro Nmap podemos realizar el escaneo TCP Connect  mediante el siguiente comando:


Nmap –vv –P0 –sF ip_host_remoto


En este caso esta técnica nos muestra falsos positivos al decir que no se encuentran puertos abiertos y ¿por que? , si con la anterior técnica y al mismo HOST nos muestra una cantidad de puertos abiertos, es por que se realizo sobre un Windows XP y esta empresa (Microsoft) esta cansada de pasarse los estándares internacionales por donde más le parezca.

jueves, 14 de abril de 2011

TÉCNICAS DE ESCANEO DE PUERTOS I

“Cierren los puertos que se entran los barcos….”

TCP Connect

Esta técnica es la mas común, consiste en utilizar la llamada connect () a un nivel raw de TCP  para intentar establecer una conexión con cada uno de los puertos del host a escanear.

Si la Conexión se establece quiere decir que el puerto esta abierto, en el caso de recibir un RST quiere decir que el puerto se encuentra cerrado, si no se recibe ninguna respuesta se deduce que el puerto esta silencioso.

El escaneo de puertos utilizando esta técnica es rápido ya que se puede utilizar varios socket’s de forma paralela para realizar un barrido de puertos. La principal desventaja de este tipo de escaneo es que es ilógico que se realicen muchas conexiones en pocos segundos, además al realizar la conexión completamente  quedaría registrado en el equipo remoto.


LHOST                                                            RHOST
Puerto Abierto

-------------------------------- [SYN] -------------------> [O]

<---------------------------- [SYN/ACK] ---------------- [O]

Puerto Cerrado

--------------------------------[SYN]------------------->[x]

<----------------------------[SYN/ACK]----------------[x]

Puerto Silencioso

-------------------------------- [SYN] -------------------> [?]


Utilizando nuestro Nmap podemos realizar el escaneo TCP Connect  mediante el siguiente comando:
Nmap –vv –P0 –sT ip_host_remoto


Como se observa en la figura anterior, se ve como el LHOST .86 manda la bandera SYN  y el RHOST .11 devuelve un [SYN/ACK] y el LHOST .86 Responde con un [ACK] este asegura que el puerto esta Open |:¬)

viernes, 13 de agosto de 2010

Manual Nmap IV

Continuando con la saga :) ahora es el ultimo capitulo

Control de tiempo y Rendimiento

Una de las prioridades durante el desarrollo de Nmap ha sido siempre el rendimiento. Un sondeo por omisión (nmap nombre_de_sistema) de cualquier sistema en una red local tarda un quinto de segundo. Esto es menos que el tiempo que uno tarda en parpadear,pero se va sumando al tiempo que se tarda cuando se realiza un sondeo sobre decenas ocentenares o miles de equipos. 

Además, ciertas opciones de sondeo como puedan ser el sondeo UDP y la detección de versiones pueden incrementar los tiempos de sondeos deforma sustancial. También puede afectar a este tiempo algunas configuraciones desistemas cortafuegos, especialmente cuando implementan limitaciones a la tasa de respuestas. Aunque Nmap trabaja en paralelo y tiene muchos algoritmos avanzados para acelerar estos sondeos, el usuario tiene el control en última instancia de cómo funcionaéste. 

Los usuarios con experiencia pueden definir las órdenes a Nmap cuidadosamente para obtener sólo la información que necesitan mientras que, al mismo tiempo, cumplenlas limitaciones de tiempo que tengan.

--min-hostgroup ; --max-hostgroup (Ajustar el tamaño del grupo para los sondeos paralelos).- Nmap tiene la capacidad de hacer un sondeo de puertos o versiones sobre múltiples
sistemas en paralelo. Hace eso dividiendo el espacio de direcciones IP en grupos y analizando un grupo cada vez. Habitualmente es más eficiente utilizar grupos grandes. La contrapartida es que los resultados por sistema no se pueden dar hasta que se ha terminado de analizar todo el grupo. En este caso, si Nmap empezara con un tamaño de grupo de 50, el usuario no obtendría ningún resultado hasta que termine con los primeros 50 (excepto las actualizaciones que envía el modo detallado).

--min-parallelism ; --max-parallelism (Ajustar el número de sondas enviadas en paralelo).- Esta opción controla el número de sondas activas para un grupo de sistemas. Éstas se utilizan para los sondeos de puertos y el descubrimiento de equipos. Por omisión, Nmap calcula un valor ideal del número de sondas a enviar en paralelo basado en el rendimiento de la red.

--min-rtt-timeout , --max-rtt-timeout , --initial-rtt-timeout (Ajustar expiración de sondas).-Nmap mantiene un valor de expiración en ejecución para saber cuánto tiempo debe
esperar para recibir la respuesta a una sonda o para retransmitir la sonda. Este valor está calculado en base a los tiempos de respuesta de las sondas previamente enviadas. El valor de expiración puede llegar a ser de varios segundos si se demuestra que la latencia de la red es significativa y variable.

--max-retries (Especifica el número máximo de sondas de puertos que se
retransmiten).-
Un puerto podría estar filtrado si Nmap no recibe ninguna respuesta a una sonda de análisis de puertos. O puede que la sonda o la respuesta a ésta se perdiera en la red. También puede darse el caso de que el sistema objetivo tenga una limitación de tasa de tráfico que haga que la respuesta quede bloqueada temporalmente. Así, Nmap lo intenta de nuevo retransmitiendo la sonda inicial.

--host-timeout (Abandona equipos objetivo lentos).-Hay algunos equipos en los que simplemente se tarda demasiado en sondearlos. Esto puede deberse a hardware de red de bajo rendimiento o poco fiable o bien a software, limitaciones de tasas de paquetes o un cortafuegos demasiado restrictivo.
Puede llegar a darse que Nmap dedica la mayor parte del tiempo de análisis en sondear un porcentaje reducido de sistemas.

--scan-delay ; --max-scan-delay (Ajusta la demora entre sondas).-Esta opción hace que Nmap espere al menos el tiempo indicado entre cada sonda enviada a un sistema determinado. Esto es muy útil cuando se quiere limitar la tasa de tráfico.

-T (Fija una plantilla de tiempos).-Algunas personas encuentran confusos los controles de grano fino explicados previamente, aunque éstos sean muy potentes y efectivos. Además, se puede a veces tardar más tiempo en encontrar los valores más apropiados que en hacer el análisis que se quiere optimizar.

Evasion de Cortafuegos/IDS y Falsificación

Los filtros de red como los cortafuegos pueden hacer muy difícil el análisis de una red. Esto no va a ser más fácil en el futuro, ya que uno de los objetivos de estos dispositivos es generalmente limitar el reconocimiento casual de la red. En cualquier caso, Nmap ofrece varias funcionalidades para ayudar a entender estas redes complejas, y que también sirven para verificar que los filtros funcionan como se espera de ellos. Incluso tiene mecanismos para saltarse las defensas que no hayan sido implementadas del todo correctamente. Uno de los mejores métodos de entender la posición de la seguridad de su red es intentar comprometerla. Empiece a pensar como un atacante, e intenta utilizar las técnicas de esta sección contra sus propias redes. Lance un sondeo de rebote FTP, un sondeo pasivo, un ataque de fragmentación, o intente realizar un túnel desde una de sus propias pasarelas.

-f (fragmentar los paquetes); --mtu (utilizar el MTU especificado).-La opción -f hace que el sondeo solicitado (incluyendo los sondeos ping) utilicen paquetes IP fragmentados pequeños. La idea es dividir la cabecera del paquete TCP entre varios paquetes para hacer más difícil que los filtros de paquetes, sistemas de detección de intrusos y otras molestias detecten lo que se está haciendo.

-D (Esconde un sondeo con señuelos).- Realiza un sondeo con señuelos. Esto hace creer que el/los equipo/s que utilice como señuelos están también haciendo un sondeo de la red. De esta manera sus IDS pueden llegar a informar de que se están realizando de 5 a 10 sondeos de puertos desde distintas direcciones IP, pero no sabrán qué dirección IP está realizando el análisis y cuáles son señuelos inocentes.

-S (Falsifica la dirección de origen).-Nmap puede que no sea capaz de determinar tu dirección IP en algunas ocasiones (Nmap se lo dirá si pasa). En esta situación, puede utilizar la opción -S con la dirección IP de la interfaz a través de la cual quieres enviar los paquetes.

-e (Utilizar la interfaz especificada).-Indica a Nmap a través de qué interfaz debe enviar y recibir los paquetes. Nmap debería detectar esto automáticamente, pero se lo dirá si no.

--source-port ; -g (Falsificar el puerto de origen).-Un error de configuración sorprendentemente común es confiar en el tráfico basándose únicamente en el número de puerto origen. Es fácil entender por qué pasa esto. Un administrador que está configurando su nuevo y flamante cortafuegos, recibe de repente quejas de todos sus usuarios desagradecidos que le dicen que sus aplicaciones han dejado de funcionar. En particular, puede romperse el DNS porque las respuestas UDP de DNS de servidores externos ya no pueden entrar en la red. Otro ejemplo habitual es el caso del FTP. En una transferencia activa de FTP, el servidor remoto intenta establecer una conexión de vuelta con el cliente para transferir el archivo solicitado.

--data-length (Añadir datos aleatorios a los paquetes enviados).- Normalmente Nmap envía paquetes mínimos que contienen sólo la cabecera. Así, los paquetes TCP que envía son generalmente de 40 bytes y las solicitudes echo de ICMP son de tan sólo 28. Esta opción le dice a Nmap que añada el número indicado de bytes aleatorios a la mayoría de los paquetes que envía.

--ttl (Indica el valor del campo tiempo-de-vida de la cabecera IP).-Establece el campo tiempo-de-vida («time-to-live», N. del T.) en la cabecera de los paquetes IPv4 al valor especificado.

--spoof-mac (Falsifica la dirección MAC).- Solicita a Nmap que utilice la MAC dada para todas las tramas de Ethernet enviadas. Esta opción activa implícitamente la opción --send-eth para asegurar que Nmap envía los paquetes del nivel Ethernet. La MAC dada puede tener varios formatos. Nmap elegirá una MAC completamente aleatoria para la sesión si se utiliza el valor “0”. Nmap utilizará la MAC indicada si el parámetro es un número par de dígitos hexadecimales (separando opcionalmente cada dos dígitos con dos puntos).

--badsum (Envía paquetes con sumas de comprobación TCP/UDP erróneas).-Esta opción le indica a Nmap que debe generar sumas de comprobación inválidas para los paquetes que se envíen a los equipos objetivos. Cualquier respuesta que se reciba vendrá de un cortafuegos o un IDS que no comprobó la suma, dado que la mayoría de las pilas IP descartan estos paquetes. Para obtener más información de esta técnica puede consultar aqui

Salida

La utilidad de una herramienta de seguridad está limitada por la salida que genera. De poco sirven pruebas y algoritmos complejos si luego no se presentan de una forma organizada y comprensible. Dada la cantidad de formas en las que puede utilizarse Nmap,tanto por personas como por otros programas, no es posible complacer a todos con unúnico formato. Por ello Nmap ofrece varios formatos, incluyendo el modo interactivo paraque los humanos lo lean directamente y un formato XML para que sea interpretado por
otros programas.

Además de ofrecer distintos formatos de salida, Nmap ofrece opciones adicionales para controlar cuanta información de más se muestra en la salida, así como opciones para controlar los mensajes de depuración que se muestran. Los tipos de salida pueden enviarse a la salida estándar o a algún archivo especificando su nombre. Nmap puede añadir información al archivo o sobreescribirlo. Los formatos de salida pueden utilizarse también para retomar un sondeo que se haya interrumpido.

-oN (Salida normal).- Solicita que la salida normal sea redirigida al archivo especificado. Como se ha dicho anteriormente, esto difiere un poco de la salida interactiva.

-oX (salida XML).-Solicita que la salida en XML se redirigida al archivo especificado. Nmap incluye un DTD que pueden utilizar los intérpretes de XML para validar la salida XML. Aunque está dirigida a que la utilicen programas, también puede ayudar a que una persona interprete la salida de Nmap. El DTD define los elementos legales del formato, y generalmente enumera los atributos y valores que pueden tener. 

-oS (SaLiDa ScRipT KIdd|3).- La salida «script kiddie» es como la salida interactiva, excepto que se post-procesa para que la vean mejor los «l33t HaXXorZ» a los que antes no les gustaba Nmap por
su uso consistente de mayúsculas y minúsculas. Aquellos que no tengan sentido del humor deberían tomar nota de que esta opción es una broma sobre los «script kiddies» antes de criticarme por “ayudarlos”.

-oG (Salida «grepeable»).-Este formato de salida se trata el último porque está obsoleto. La salida en formato XML es mucho más poderosa, y es igual de conveniente para los usuarios experimentados. XML es un estándar para el que se dispone de docenas de intérpretes, mientras que la salida para grep es un «hack» propio. XML

-oA (Salida en todos los formatos).- Por comodidad, puede especificar la opción -oA nombre_base para guardar los resultados de los sondeos en nombre_base.nmap, nombre_base.xml, y nombre_base.gnmap, respectivamente. Al igual que la mayoría de los programas puede poner un prefijo con la ruta del directorio como pudiera ser ~/registros_nmap/empresa_foo/ en UNIX o c:\hacking\sco en Windows.

-v (Incrementa el nivel de detalle).- Hace que Nmap imprima más información sobre el sondeo que está realizando incrementando el nivel de detalle. Los puertos abiertos se muestran en cuanto se encuentran y se muestra una estimación del tiempo que Nmap espera que dure la tarea de sondeo si piensa que va a durar más de un par de minutos. Puede utilizarlo dos veces para obtener aún más detalle. No tiene ningún efecto el utilizarlo más de dos veces.

-d [level] (Incrementar o fijar el nivel de depuración).- Cuando no obtiene suficientes datos ni siquiera con el modo de detalle, ¡puede utilizar el modo de depuración para inundarse de detalles! Al igual que con la opción de detalle (-v), puede activar la depuración con una opción en la línea de órdenes (- d). Puede incrementar el nivel de depuración si la especifica múltiples veces. También puede fijar directamente el nivel de depuración si da un argumento a la opción -d. Por ejemplo, si utiliza -d9 se fijaría el nivel de depuración en el nueve. Ese es el nivel más alto de depuración y provocará que se impriman miles de líneas a no ser que haga sondeos muy sencillos con pocos puertos y objetivos.

--packet-trace (Trazar paquetes y datos enviados y recibidos).- Esta opción hace que Nmap imprima un resumen de cada paquete que envía o recibe. Esto se utiliza muchas veces para poder depurar el programa, pero también es útil para los usuarios nuevos que quieren entender exactamente que es lo que hace Nmap bajo el capó.

--iflist (Listar interfaces y rutas).- Imprime la lista de interfaces y las rutas del sistema tal y como las detecta Nmap. Esta opción es útil para depurar problemas de enrutamiento o caracterizaciones equivocadas del tipo de interfaz (como por ejemplo, cuando Nmap trata una conexión PPP como una interfaz Ethernet).


EOF

martes, 3 de agosto de 2010

Manual Nmap II

Continuando con el Nmap vamos a descubrir puertos,segun nmap clasifica en seis estados distintos (del puerto): abierto, cerrado, filtrado, no filtrado, (abierto|filtrado), ( cerrado|filtrado).

Los 6 Estados Segun Nmap :
  • Abierto .-Una aplicación acepta conexiones TCP o paquetes UDP en este puerto. El encontrar esta clase de puertos es generalmente el objetivo primario de realizar un sondeo de puertos.
  • Cerrado.-Un puerto cerrado es accesible: recibe y responde a las sondas de Nmap, pero no tiene una aplicación escuchando en él.
  • Filtrado.-Nmap no puede determinar si el puerto se encuentra abierto porque un filtrado de paquetes previene que sus sondas alcancen el puerto. El filtrado puede provenir de un dispositivo de cortafuegos dedicado, de las reglas de un enrutador, o por una aplicación de cortafuegos instalada en el propio equipo.
  • No Filtrado.-Este estado indica que el puerto es accesible, pero que Nmap no puede determinar si se encuentra abierto o cerrado.
  • Abierto|Filtrado.-Nmap marca a los puertos en este estado cuando no puede determinar si el puerto se encuentra abierto o filtrado. Esto ocurre para tipos de análisis donde no responden los puertos abiertos.

  • Cerrado | Filtrado.-Este estado se utiliza cuando Nmap no puede determinar si un puerto se encuentra cerrado o filtrado, y puede aparecer aparecer sólo durante un sondeo IPID pasivo. 
Tecnicas de Sondeo Puertos

Existen distintas tecnicas para realizar el scaneo de puertos y su utilización depende mucho del escenario.

-sS (sondeo TCP SYN).- Esta tecnica es conocida como Sondeo Medio-Abierto por que simplemente no se llega a abrir una conexion TCP Completa.


Se envía un paquete SYN, como si se fuera a abrir una conexión real y después se espera una respuesta. Si se recibe un paquete SYN/ACK esto indica que el puerto está en escucha (abierto), mientras que si se recibe un RST (reset) indica que no hay nada escuchando en el puerto. Si no se recibe ninguna respuesta después de realizar algunas retransmisiones entonces el puerto se marca como filtrado. 

-sT (Sondeo TCP Connect) .- El sondeo TCP Connect() es el sondeo TCP por omisión cuando no se puede utilizar el sondeo SYN. Esto sucede, por ejemplo, cuando el usuario no tiene privilegios para enviar paquetes en crudo.Nmap utiliza las Api del S.O para realizar la conexion a nivel de Aplicacion como cualquier programa p2p. 

-sU (sondeos UDP).- Aunque la mayoría de los servicios más habituales en Internet utilizan el protocolo TCP, los servicios UDP también son muy comunes. Tres de los más comunes son los servicios DNS, SNMP, y DHCP.

Los sondeos UDP funcionan mediante el envío (sin datos) de una cabecera UDP
para cada puerto objetivo. Si se obtiene un error ICMP que indica que el puerto no es alcanzable (tipo 3, código 3) entonces se marca el puerto como cerrado. Si se recibe cualquier error ICMP no alcanzable (tipo 3, códigos 1, 2, 9, 10, o 13) se marca el puerto como filtrado. En algunas ocasiones se recibirá una respuesta al paquete UDP, lo que prueba que el puerto está abierto.

sN; -sF; -sX (sondeos TCP Null, FIN, y Xmas) .-Estos tres tipos de sondeos son exactamente los mismos en comportamiento salvo por las banderas TCP que se fijen en los paquetes sonda. Si se recibe un paquete RST entonces se considera que el puerto está cerrado. Si no se recibe ninguna respuesta el puerto se marca como cerrado|filtrado. El puerto se marca filtrado si se recibe un error ICMP no alcanzable (tipo 3, código 1, 2, 3, 9, 10, o 13).

La ventaja fundamental de este tipo de sondeos es que pueden atravesar algunos cortafuegos que no hagan inspección de estados o encaminadores que hagan filtrado de paquetes. Otra ventaja es que este tipo de sondeos son algo más sigilosos que, incluso, un sondeo SYN

-sA (sondeo TCP ACK).- Este sondeo es distinto de otros que se han discutido hasta ahora en que no puede determinar puertos abiertos (o incluso abiertos|filtrados). Se utiliza para mapear reglas de cortafuegos, y para determinar si son cortafuegos con inspección de estados y qué puertos están filtrados.

La sonda de un sondeo ACK sólo tiene fijada la bandera ACK (a menos que utilice --scanflags). Cuando se sondean sistemas no filtrados los puertos abiertos y cerrados devolverán un paquete RST. Nmap marca el puerto como no filtrado, lo que significa que son alcanzables por el paquete ACK, pero no se puede determinar si están abiertos o cerrados. Los puertos que no responden o que envían mensajes de error ICMP en respuesta (tipo 3, código 1, 2, 3, 9, 10, o 13), se marcan como filtrados.

-sW (sondeo de ventana TCP) .-El sondeo de ventana («window», N. del T.) es exactamente igual al sondeo ACK que se aprovecha de un detalle de implementación de algunos sistemas que permite diferenciar puertos abiertos de los cerrados, en lugar de imprimir no filtrado cuando se devuelve un RST. Hace esto examinando el campo de ventana TCP del paquete RST devuelto.

Algunos sistemas fijan un tamaño de ventana positivo para puertos abiertos (incluso para paquetes RST) mientras que se utiliza una ventana de tamaño cero para los cerrados. Así, en lugar de listar el puerto como no filtrado cuando se recibe un RST, el sondeo de ventana permite listar el puerto como abierto o cerrado en función de si el valor de la ventana TCP en ese paquete RST es positivo o cero,
respectivamente.
-sM (sondeo TCP Maimon).-El sondeo Maimon debe su nombre a la persona que lo descubrió: Uriel Maimon. Nmap, que incluye esta técnica es exactamente la misma a los sondeos Null, FIN, y Xmas, pero en los que se envía una sonda FIN/ACK. Según el RFC 793 (TCP), se debería generar un paquete RST cuando se responde a dicha sonda independientemente de si el puerto está cerrado o abierto.

Uriel se dio cuenta, sin embargo, de que muchos sistemas derivados de BSD simplemente descartan el paquete si el puerto está abierto.

--scanflags (Sondeo TCP a medida).- Los usuarios realmente avanzados de Nmap no tienen por qué limitarse a los tipos de sondeos preparados que se ofrecen. La opción --scanflags le permite diseñar su propio sondeo mediante la especificación de banderas TCP arbitrarias. Deje volar a su imaginación al tiempo que evita las reglas de los sistemas de detección de intrusos cuyos fabricantes sólo echaron un vistazo a la página de manual de Nmap y añadieron reglas específicas para detectarlo.


La opción --scanflags puede ser un valor numérico como el 9 (PSH y FIN), aunque es más sencillo utilizar nombres simbólicos. Sólo tienes que juntar una combinación de URG, ACK, PSH, RST, SYN, y FIN. Por ejemplo, la configuración --scanflags URGACKPSHRSTSYNFIN fija todas las banderas, aunque no es muy útil para sondear.



I (Sondeo ocioso).-Este es un método de sondeo avanzado que le permite hacer un sondeo de puertos TCP a ciegas de verdad (lo que significa que no se envía ningún paquete al sistema objetivo desde su dirección IP real).


En lugar de ésto se utiliza un ataque con un canal alternativo que se aprovecha de la generación de la secuencia de los identificadores de fragmentación IP del sistema zombi para obtener información de los puertos abiertos en el objetivo.


-sO (sondeo de protocolo IP).- El sondeo de protocolo IP le permite determinar qué protocolos (TCP, ICMP, IGMP,etc.) soportan los sistemas objetivo. Esto no es, técnicamente, un sondeo de puertos, dado que cambia los números de protocolo IP en lugar de los números de puerto TCP ó UDP.

Pero también se puede utilizar la opción -p para seleccionar los números de protocolo a analizar, los resultados se muestran en el formato de tabla utilizado para los puertos e incluso utiliza el mismo motor de sondeo que los métodos de sondeo de puertos reales. Es tan parecido a un sondeo de puertos que debe tratarse aquí.


-b (sondeo de rebote FTP).-Una funcionalidad interesante en el protocolo FTP (RFC 959) es la posibilidad de utilizar conexiones FTP de pasarela. Esta opción puede abusarse a muchos niveles así que muchos servidores han dejado de soportarla. Una de las formas de abusar de ésta es utilizar el servidor de FTP para hacer un sondeo de puertos a otro sistema.

Especificación de Puertos y Orden de Sondeo

Nmap ofrece distintas opciones para especificar los puertos que se van a sondear y si el orden de los sondeos es aleatorio o secuencial. Estas opciones se añaden a los métodos de sondeos que se han discutido previamente.

Nmap, por omisión, sondea todos los puertos hasta el 1024 además de algunos puertos con números altos listados en el fichero nmap-services para los protocolos que se sondeen.
 



p (Sólo sondea unos puertos específicos).-Esta opción especifica los puertos que desea sondear y toma precedencia sobre los      valores por omisión.Puede especificar tanto números de puerto de forma individual,así como rangos de puertos separados por un guión (p. ej. 1-1023). Puede omitir el valor inicial y/o el valor final del rango. Nmap utilizará 1 ó 65535 respectivamente. De esta forma, puede especificar -p- para sondear todos los puertos desde el 1 al     65535.

-F (Sondeo rápido (puertos limitados)).-Indica que sólo quiere sondear los puertos listados en el fichero nmap-services que  se incluye con nmap (o el fichero de protocolos si indica -sO). Esto es más rápido que sondear todos los 65535 puertos de un sistema.

La diferencia de velocidad con el sondeo TCP por omisión (unos 1650 puertos) no es muy alta dado que esta lista contiene muchos puertos TCP (más de 1200). La diferencia puede ser muy grande si especifica su propio fichero nmap-services más pequeño si utiliza la opción --datadir

-r (No aleatorizar los puertos).-Nmap ordena de forma aleatoria los puertos a sondear por omisión (aunque algunos puertos comúnmente accesibles se ponen al principio por razones de eficiencia).Esta aleatorización generalmente es deseable, pero si lo desea puede especificar la opción -r para analizar de forma secuencial los puertos.
Related Posts Plugin for WordPress, Blogger...