Posteado por: Jose David Baena | julio 21, 2008

Lost in translation

Esta es una de las últimas películas que he visto y que me ha llamado bastante la atención. Trata sobre un actor que va a rodar un spot publicitario de whisky en Tokio y no tiene ni idea de japonés ni de sus costumbres. Allí conoce a otras personas que están perdidas como él, pero poco a poco van entendiendo otra forma de ver las cosas… A todos los que os guste viajar, esta es una película que merece la pena ver.

Aquí teneis un resumen sacado de la wikipedia:

Bob Harris (Bill Murray) es un actor de mediana edad que se encuentra en Tokio para realizar sesiones fotográficas publicitarias. Está casado, pero su matrimonio ha entrado en una fase de aburrimiento. Respecto a la vida Harris se siente melancólico. En el hotel conoce a Charlotte (Scarlett Johansson), la joven esposa de un fotógrafo que está trabajando durante unos días en otros lugares del Japón, de forma que ella se encuentra sola en Tokyo. También Charlotte se siente triste. Entre Harris y Charlotte se establece una relación de mutua comprensión, que se va estrechando a lo largo de los días en los que están juntos. Cada uno puede aprender algo del otro.

Anuncios
Posteado por: Jose David Baena | julio 17, 2008

Hablando de Fingerprinting y OS Guessing

Durante este curso hice un trabajo sobre figerprinting y trabajé con una herramienta de ‘os guessing’ pasivo. Dicha herramienta se llamaba P0f y la verdad es que me ha sido muy util en posteriores auditorias y ayudas a la predicción de máquinas de mi alrededor.

A continuación muestro algunas de las partes que pueden resultar interesante para aquellos que les gusta la seguridad y se han preguntado alguna vez acerca del fingerprinting… Espero que aproveche.
Lo he separado en un conjunto de varios posts divididos por ideas para que no se tenga que leer de golpe y sea más ameno para el lector… Ya me contareis.

  1. Fingerprinting

  2. Fingerprinting activo y pasivo

  3. La herramienta de fingerprinting P0F

  4. Usando P0f (I)- Un ordenador en una LAN cualquiera

  5. Usando P0f (II)- Trabajando con un archivo de capturas.

  6. Usando P0f (III) – P0f para OS Guessing remoto.

  7. Usando P0f (IV) – P0f para OS Guessing de máquinas que rechazan nuestras conexiones.

https://i1.wp.com/gcswebservice.com/images/ServerMask_appliances_nmap3.gif

Quizás tengamos posesión de una máquina a la que se le rechazan las peticiones que efectua. No hay que irse tan lejos para imaginarselo, basta con que alguien use TCP Wrappers y te deniegue toda comunicación…

A continuación vamos a ver como SI se puede reconocer sistemas operativos de máquinas que nos rechazan el tráfico. Esta opción se hace con -R…

-R
a barely-supported option for RST+ mode. This option will prompt p0f to fingerprint several different types of traffic, most importantly “connection refused” and “timeout” messages.This mode is similar to SYN+ACK (-A), except that the program will now look for p0fr.fp. The usual config is NOT SUITABLE for this mode. You may have to familiarize yourself with p0fr.fp before using it.

Para ver este ejemplo vamos a conectarnos al servidor del lsi: www.lsi.us.es mientras tenemos lanzado p0f. Anteriormente no hemos podido obtener el sistema operativo de dicho servidor de forma pasiva, pero en este caso, haciendo que nos rechace conexiones el servidor; como por ejemplo una solicitud de conexiones agresiva y poniéndonos en medio de los dos sistemas, podremos sacar algo de información:

root@joseda-mindlap:~# p0f -R -i ath0

p0f – passive os fingerprinting utility, version 2.0.8

(C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns <wstearns@pobox.com>

p0f: listening (RST+) on ‘ath0’, 46 sigs (3 generic, cksum 1AE3081F), rule: ‘all’.

192.168.1.113:49068 – Linux 2.4 (?) (dropped, lame) (up: 6 hrs)

-> 150.214.141.42:80 (distance 0, link: unspecified)

192.168.1.113:49069 – Linux 2.4 (?) (dropped, lame) (up: 6 hrs)

-> 150.214.141.42:80 (distance 0, link: unspecified)

192.168.1.113:58039 – Linux 2.4 (?) (dropped, lame) (up: 6 hrs)

-> 150.214.141.42:25 (distance 0, link: unspecified)

192.168.1.113:39792 – Linux 2.4 (?) (dropped, lame) (up: 6 hrs)

-> 150.214.141.42:443 (distance 0, link: unspecified)

150.214.141.42:113 – Linux 2.0/2.2 (refused)

-> 192.168.1.113:36026 (distance 4, link: unspecified)

192.168.1.113:41881 – Linux 2.4 (?) (dropped, lame) (up: 6 hrs)

-> 150.214.141.42:21 (distance 0, link: unspecified)

+++ Exiting on signal 2 +++

[+] Average packet ratio: 2.32 per minute.

No lo puedo afirmar con seguridad, pero podría aventurarme a decir que es un Linux el que provee los servicios del lsi. Además podemos decir que probee algunos servicios como http (80),ssh(443)… De hecho creo que a partir de este método (RST+) y centrandonos en su implementación podríamos obtener y mejorar de forma abismal esta herramienta.

Por curiosidad hemos probado tambien con el servidor del ccia, el cual sabemos que va sobre linux. Es solo ver si la herramienta da la misma información:

root@joseda-mindlap:~# p0f -R -i ath0

p0f – passive os fingerprinting utility, version 2.0.8

(C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns <wstearns@pobox.com>

p0f: listening (RST+) on ‘ath0’, 46 sigs (3 generic, cksum 1AE3081F), rule: ‘all’.

192.168.1.113:36918 – Linux 2.4 (?) (dropped, lame) (up: 7 hrs)

-> 150.214.140.135:80 (distance 0, link: unspecified)

192.168.1.113:48593 – Linux 2.4 (?) (dropped, lame) (up: 7 hrs)

-> 150.214.140.135:443 (distance 0, link: unspecified)

192.168.1.113:44640 – Linux 2.4 (?) (dropped, lame) (up: 7 hrs)

-> 150.214.140.135:25 (distance 0, link: unspecified)

150.214.140.135:113 – Linux 2.0/2.2 (refused)

-> 192.168.1.113:41680 (distance 4, link: unspecified)

192.168.1.113:36929 – Linux 2.4 (?) (dropped, lame) (up: 7 hrs)

-> 150.214.140.135:80 (distance 0, link: unspecified)

192.168.1.113:60547 – Linux 2.4 (?) (dropped, lame) (up: 7 hrs)

-> 150.214.140.135:21 (distance 0, link: unspecified)

+++ Exiting on signal 2 +++

[+] Average packet ratio: 22.50 per minute.

En efecto, el análisis mediante rechazo a nuestra máquina de conexiones tiene como resultado que el sistema operativo es Linux. No creo que sea la versión 2.0 ni la 2.2; tampoco la 2.4 suponiendo que se está administrando bien… De todas formas no me cabe duda que es un Linux… (o eso espero ;))

Posts relacionados:

  1. Fingerprinting

  2. Fingerprinting activo y pasivo

  3. La herramienta de fingerprinting P0F

  4. Usando P0f (I)- Un ordenador en una LAN cualquiera

  5. Usando P0f (II)- Trabajando con un archivo de capturas.

  6. Usando P0f (III) – P0f para OS Guessing remoto.

  7. Usando P0f (IV) – P0f para OS Guessing de máquinas que rechazan nuestras conexiones.

Posteado por: Jose David Baena | julio 17, 2008

Usando P0f (III) – P0f para OS Guessing remoto.

Una vez visto lo básico de p0f y como trabaja dicha herramienta, es hora de intentar averiguar el sistema operativo de un destino al que nos conectemos.

Sí, se ha leído bien, no se trata de averiguar conexiones que nos realizan o pasan por nuestra máquina, sino de conexiones que hacemos nosotros a otras máquinas; y dicha técnica no es considerada activa, sino pasiva. Como dijimos al comienzo del documento, p0f tiene tres tipos de fingerprinting pasivo.

Para este nuevo caso, usamos la opción de p0f -A:

A semi-supported option for SYN+ACK mode. This option will cause p0f to fingerprint systems you connect to, as opposed to systems that connect to you (default). With this option, p0f will look for p0fa.fp file instead of the usual p0f.fp. The usual config is NOT SUITABLE for this mode.

The SYN+ACK signature database is sort of small at the moment, but suitable for many uses. Feel free to contribute.

Una estructura de la red para este nuevo ejemplo sería algo parecido a la siguiente figura:

Y los resultados con P0f son los siguientes:

root@joseda-mindlap:~# p0f -i ath0 -A

p0f – passive os fingerprinting utility, version 2.0.8

(C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns <wstearns@pobox.com>

p0f: listening (SYN+ACK) on ‘ath0’, 61 sigs (1 generic, cksum B253FA88), rule: ‘all’.

… Muchos resultados….. Se omite por legibilidad

216.73.87.153:80 – UNKNOWN [16384:251:0:64:M1452,N,W0,N,N,T0,N,N,S:A:?:?]

-> 192.168.1.113:44662 (link: pppoe (DSL))

74.125.39.164:80 – UNKNOWN [5672:251:0:60:M1430,S,T,N,W6:AT:?:?] (up: 2598 hrs) -> 192.168.1.113:48224 (link: (Google 2))

74.125.97.33:80 – UNKNOWN [5792:251:1:60:M1452,S,T,N,W6:ZAT:?:?] (up: 9679 hrs) -> 192.168.1.113:43821 (link: pppoe (DSL))

74.125.97.30:80 – UNKNOWN [5792:251:1:60:M1452,S,T,N,W6:ZAT:?:?] (up: 9677 hrs) -> 192.168.1.113:54651 (link: pppoe (DSL))

209.85.135.127:80 – UNKNOWN [5672:251:0:60:M1430,S,T,N,W6:AT:?:?] (up: 2546 hrs) -> 192.168.1.113:49417 (link: (Google 2))

209.85.135.127:80 – UNKNOWN [5672:251:0:60:M1430,S,T,N,W6:AT:?:?] (up: 2554 hrs) -> 192.168.1.113:49418 (link: (Google 2))

74.125.13.18:80 – UNKNOWN [5792:251:1:60:M1452,S,T,N,W6:ZAT:?:?] (up: 6626 hrs) -> 192.168.1.113:59698 (link: pppoe (DSL))

72.14.221.118:80 – UNKNOWN [5672:251:0:60:M1430,S,T,N,W6:AT:?:?] (up: 643 hrs) -> 192.168.1.113:41014 (link: (Google 2))

209.85.135.127:80 – UNKNOWN [5672:251:0:60:M1430,S,T,N,W6:AT:?:?] (up: 2554 hrs) -> 192.168.1.113:57794 (link: (Google 2))

Cuando se lanzó p0f -A, se visitaron las paginas de Google y youtube. En la captura anterior solo hemos mostrado parte de la salida, puesto que es muy larga y muy parecida… También nos conectamos a otros sitios como el servidor del ……OMITIDO….. y también nos dió como sistema operativo desconocido. Visto lo visto, decidí probar a ver si me reconocía una conexión que realizase a un servidor apache que tengo escuchando en el puerto 80 de mi máquina y mi sorpresa fue , que tampoco me lo reconocía el sistema operativo, dándomelo como UNKNOWN.

De esta parte de la aplicación, puede concluir que está todavía por desarrollar bastante, aunque vista la efectividad que tiene el análisis por defecto del p0f y como dice su autor en la página del proyecto, mejorará para futuras versiones como p0f 3.0…

Posts relacionados:

  1. Fingerprinting

  2. Fingerprinting activo y pasivo

  3. La herramienta de fingerprinting P0F

  4. Usando P0f (I)- Un ordenador en una LAN cualquiera

  5. Usando P0f (II)- Trabajando con un archivo de capturas.

  6. Usando P0f (III) – P0f para OS Guessing remoto.

  7. Usando P0f (IV) – P0f para OS Guessing de máquinas que rechazan nuestras conexiones.

Posteado por: Jose David Baena | julio 17, 2008

Usando P0f (II)- Trabajando con un archivo de capturas.

También se puede usar p0f para averiguar los sistemas operativos que están en una determinada zona física de dos formas:

  • Bien lanzando p0f y especificando la interface ath0 (mi interfaz expuesta al tráfico en este caso) . Empezaremos a recoger y analizar el trafico que circula por el aire de nuestro alrededor.
  • analizando algún fichero tipo .cap o .pcap. Este tipo de ficheros suelen ser la salida de una sesión de sniffing. En este caso, es un fichero que guarda unos minutos de sniffing en la biblioteca de la facultad…

Se puede analizar el tráfico guardado en un archivo cap o pcap con la opción –s.

En concreto –s hará:

-s file
read packets from tcpdump snapshot; this is an alternate
mode of operation, in which p0f reads packet from pcapdata capture file,
instead of a live network. Useful for
forensics (this will parse tcpdump -w output,f.e). 
              

La red con la que vamos a trabajar en este caso se puede parecer a la siguiente figura:

A continuación muestro el resultado de la herramienta ante esta nueva situación:

# p0f -s ‘/home/joseda/capturas/15_5_2008v1’

p0f – passive os fingerprinting utility, version 2.0.8
(C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns <wstearns@pobox.com>
p0f: listening (SYN) on ‘/home/joseda/capturas/15_5_2008v1’, 262 sigs (14 generic, cksum 0F1F5CA2), rule: ‘all’.

10.101.6.107:51636 – Linux 2.6 (newer, 2) (up: 0 hrs)

-> 72.14.221.91:80 (distance 0, link: ethernet/modem)

10.101.6.107:50615 – Linux 2.6 (newer, 2) (up: 0 hrs)

-> 91.189.90.132:80 (distance 0, link: ethernet/modem)

10.101.6.107:50616 – Linux 2.6 (newer, 2) (up: 0 hrs)

-> 91.189.90.132:80 (distance 0, link: ethernet/modem)

10.101.6.107:33916 – Linux 2.6 (newer, 2) (up: 0 hrs)

-> 91.189.88.31:80 (distance 0, link: ethernet/modem)

10.101.6.107:33916 – Linux 2.6 (newer, 2) (up: 0 hrs)

-> 91.189.88.31:80 (distance 0, link: ethernet/modem)

:4202 – Windows 2000 SP2+, XP SP1+ (seldom 98)

-> 10.101.5.120:445 (distance 0, link: ethernet/modem)

10.101.5.179:4202 – Windows 2000 SP2+, XP SP1+ (seldom 98)

-> 10.101.5.120:445 (distance 0, link: ethernet/modem)

… Muchas trazas que dicen la misma información que la expuesta

10.101.6.107:54864 – Linux 2.6 (newer, 2) (up: 0 hrs)

-> 72.5.124.55:80 (distance 0, link: ethernet/modem)

10.101.5.179:4573 – Windows 2000 SP2+, XP SP1+ (seldom 98)

-> 10.101.5.120:445 (distance 0, link: ethernet/modem)

10.101.5.165:4573 – Windows 2000 SP2+, XP SP1+ (seldom 98)

-> 10.101.5.120:445 (distance 0, link: ethernet/modem)

10.101.5.165:4623 – Windows 2000 SP2+, XP SP1+ (seldom 98)

-> 10.101.5.120:445 (distance 0, link: ethernet/modem)

10.101.5.179:4623 – Windows 2000 SP2+, XP SP1+ (seldom 98)

-> 10.101.5.120:445 (distance 0, link: ethernet/modem)

10.101.5.179:4623 – Windows 2000 SP2+, XP SP1+ (seldom 98)

-> 10.101.5.120:445 (distance 0, link: ethernet/modem)

10.101.6.107:33859 – Linux 2.6 (newer, 2) (up: 2 hrs)

-> 72.5.124.55:80 (distance 0, link: ethernet/modem)

10.101.6.107:46258 – Linux 2.6 (newer, 2) (up: 2 hrs)

-> 72.5.124.55:80 (distance 0, link: ethernet/modem)

10.101.6.107:39107 – Linux 2.6 (newer, 2) (up: 2 hrs)

-> 10.101.0.1:443 (distance 0, link: ethernet/modem)

10.101.6.107:48759 – Linux 2.6 (newer, 2) (up: 2 hrs)

-> 10.101.0.1:443 (distance 0, link: ethernet/modem)

[+] End of input file.

El archivo .cap se creó con la herramienta wireshark. Aunque podía haberse creado con cualquier otra como ettercap o ethereal… En este ejemplo en concreto se pueden apreciar dos sistemas operativos que son Windows 2000 SP2+ y Linux 2.6; esto es por que a la hora del sniffing no había cerca más portátiles y la tarjeta no “coge” mucho tráfico lejano (solo cercano), aunque como vemos algo si coge(además de lo de mi máquina).

Lo que quiero reflejar con este ejemplo, es que un administrador o atacante que quisiera obtener diversa información de un grupo de personas, las cuales están conectadas a la misma red en la que está él, mediante un sniffer podría capturar la información y luego realizar diversos procesos; entre ellos averiguar los sistemas operativos que utilizan mediante p0f. Veo mejor esta forma que lanzar al principio p0f directamente, ya que podemos realizar otros tratamientos que nos pueden revelar mayor información sobre las víctimas.

Decir también, que podemos lanzar p0f y luego guardar lo que ha capturado en formato para el programa tcpdump y derivados, pero soy más partidario de utilizar por ej. Wireshark y a partir de ahí, lo que haga falta.

Una mejora con respecto a las anteriores versiones es que puedes incluir la opción de que te visualice el trafico que está leyendo con marcas de tiempo “entendibles para los humanos”. Esto se hace con la opción -t:

root@joseda-mindlap:~# p0f -s ‘/home/joseda/capturas/13_5_2008v2’ -t

p0f – passive os fingerprinting utility, version 2.0.8

(C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns <wstearns@pobox.com>

p0f: listening (SYN) on ‘/home/joseda/capturas/13_5_2008v2’, 262 sigs (14 generic, cksum 0F1F5CA2), rule: ‘all’.

<Thu May 15 17:12:33 2008> 10.101.7.191:50443 – Linux 2.6 (newer, 2) (up: 2 hrs)

-> 72.14.221.91:80 (distance 0, link: ethernet/modem)

<Thu May 15 17:13:14 2008> 10.101.7.191:41236 – Linux 2.6 (newer, 2) (up: 2 hrs)

-> 72.5.124.55:80 (distance 0, link: ethernet/modem)

<Thu May 15 17:13:15 2008> 10.101.7.191:33373 – Linux 2.6 (newer, 2) (up: 2 hrs)

-> 72.5.124.55:80 (distance 0, link: ethernet/modem)

<Thu May 15 17:13:33 2008> 10.101.7.191:43181 – Linux 2.6 (newer, 2) (up: 2 hrs)

-> 74.125.39.104:80 (distance 0, link: ethernet/modem)

<Thu May 15 17:13:33 2008> 10.101.7.191:35136 – Linux 2.6 (newer, 2) (up: 2 hrs)

-> 74.125.39.99:80 (distance 0, link: ethernet/modem)

<Thu May 15 17:13:54 2008> 10.101.7.191:35137 – Linux 2.6 (newer, 2) (up: 3 hrs)

-> 74.125.39.99:80 (distance 0, link: ethernet/modem)

<Thu May 15 17:13:59 2008> 10.101.7.191:56301 – Linux 2.6 (newer, 2) (up: 3 hrs)

-> 216.93.175.73:80 (distance 0, link: ethernet/modem)

<Thu May 15 17:14:00 2008> 10.101.7.191:56302 – Linux 2.6 (newer, 2) (up: 3 hrs)

-> 216.93.175.73:80 (distance 0, link: ethernet/modem)

<Thu May 15 17:14:02 2008> 10.101.7.191:43227 – Linux 2.6 (newer, 2) (up: 3 hrs)

-> 72.14.217.104:80 (distance 0, link: ethernet/modem)

<Thu May 15 17:14:02 2008> 10.101.7.191:56304 – Linux 2.6 (newer, 2) (up: 3 hrs)

-> 216.93.175.73:80 (distance 0, link: ethernet/modem)

Esto siempre nos puede resultar útil a la hora de obtener información. Podemos saber a qué usuarios pertenecen las conexiones si tenemos suerte…

Posts relacionados:

  1. Fingerprinting

  2. Fingerprinting activo y pasivo

  3. La herramienta de fingerprinting P0F

  4. Usando P0f (I)- Un ordenador en una LAN cualquiera

  5. Usando P0f (II)- Trabajando con un archivo de capturas.

  6. Usando P0f (III) – P0f para OS Guessing remoto.

  7. Usando P0f (IV) – P0f para OS Guessing de máquinas que rechazan nuestras conexiones.

Posteado por: Jose David Baena | julio 17, 2008

Usando P0f (I)- Un ordenador en una LAN cualquiera

Primer caso: Un ordenador en una LAN cualquiera

Este primer caso es muy sencillo pero nos sirve para darnos cuenta de qué es lo que hace p0f. Este ejemplo se ha llevado a cabo en una LAN en la que yo (el autor del documento) he sido el único que ha estado conectado a dicha LAN y generando tráfico y solicitándolo del exterior.

La situación se puede ver como la siguiente figura:

Empezamos a lanzar p0f para que nos pueda decir que tipo de sistema operativo mediante la información que captura que enviamos y recibimos cree que es:

root@joseda-mindlap:~# p0f ath0
p0f – passive os fingerprinting utility, version 2.0.8
(C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns <wstearns@pobox.com>
pcap_compile: syntax error in filter expression
See man tcpdump or p0f README for help on bpf filter expressions.

root@joseda-mindlap:~# p0f -i ath0
p0f – passive os fingerprinting utility, version 2.0.8
(C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns <wstearns@pobox.com>
p0f: listening (SYN) on ‘ath0’, 262 sigs (14 generic, cksum 0F1F5CA2), rule: ‘all’.

192.168.1.113:52575 – Linux 2.6 (newer, 2) (up: 0 hrs)

-> 209.85.135.127:80 (distance 0, link: ethernet/modem)

192.168.1.113:56758 – Linux 2.6 (newer, 2) (up: 0 hrs)

-> 72.14.221.118:80 (distance 0, link: ethernet/modem)

192.168.1.113:56759 – Linux 2.6 (newer, 2) (up: 0 hrs)

-> 72.14.221.118:80 (distance 0, link: ethernet/modem)

192.168.1.113:52578 – Linux 2.6 (newer, 2) (up: 0 hrs)

-> 209.85.135.127:80 (distance 0, link: ethernet/modem)

192.168.1.113:42600 – Linux 2.6 (newer, 2) (up: 0 hrs)

-> 201.216.208.177:80 (distance 0, link: ethernet/modem)

192.168.1.113:38786 – Linux 2.6 (newer, 2) (up: 0 hrs)

-> 72.14.221.118:80 (distance 0, link: ethernet/modem)

192.168.1.113:38787 – Linux 2.6 (newer, 2) (up: 0 hrs)

-> 72.14.221.118:80 (distance 0, link: ethernet/modem)

192.168.1.113:42876 – Linux 2.6 (newer, 2) (up: 0 hrs)

-> 74.125.13.24:80 (distance 0, link: ethernet/modem)

+++ Exiting on signal 2 +++

[+] Average packet ratio: 5.45 per minute.

Como vemos, p0f con apenas un segundo, y nosotros habiéndonos conectado a google, nos dice que nuestro sistema es un Linux con el núcleo 2.6 y está en lo cierto. Para ello lo comprobamos en nuestro sistema:

root@joseda-mindlap:~# uname -r

2.6.22-14-generic

Ahora vamos a probar extraer la misma operación pero con un escaner activo como es nmap:

root@joseda-mindlap:~# nmap -O 192.168.1.113

Starting Nmap 4.20 ( http://insecure.org ) at 2008-05-30 17:57 CEST

Interesting ports on 192.168.1.113:

No exact OS matches for host (If you know what OS is running on it, see http://insecure.org/nmap/submit/ ).

TCP/IP fingerprint:

OS:SCAN(V=4.20%D=5/30%OT=22%CT=1%CU=37642%PV=Y%DS=0%G=Y%TM=4840240A%
P=i686-OS:pc-linux-gnu)SEQ(SP=D1%GCD=1%ISR=EF%TI=Z%II=I%TS=8)OPS
(O1=M400CST11NW6%O

OS:2=M400CST11NW6%O3=M400CNNT11NW6%O4=M400CST11NW6%
O5=M400CST11NW6%O6=M400C

… Respuestas de varios tests………………………………………….

OS:0%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1
(R=Y%DF=N%T=40%TOS=C0%IPL=164%UN=0%RIPL

OS:=G%RID=G%RIPCK=G%RUCK=G%RUL=G%RUD=G)IE
(R=Y%DFI=N%T=40%TOSI=S%CD=S%SI=S%D

OS:LI=S)

Uptime: 0.017 days (since Fri May 30 17:33:12 2008)

Network Distance: 0 hops

OS detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ .

Nmap finished: 1 IP address (1 host up) scanned in 11.617 seconds

Dos cosas a destacar de este ejemplo:

  • Nmap no ha podido averiguar el sistema operativo
  • Nmap ha tardado casi 12 segundos frente a menos de un segundo con p0f

En una primera conclusión podemos decir:

  • para redes en las que haya tráfico, p0f nos será más útil. No generará trafico innecesario.
  • nmap generará tráfico innecesario, que puede hacer que observen nuestras acciones.
  • El caso de que p0f haya durado mucho menos no significa que siempre sea así. Cuando se realizaron estas pruebas, se estaban solicitando datos de streaming de youtube…Si no hubiese trafico, p0f habría tardado tanto tiempo como hubiese sido necesario para capturar paquetes, y sin embargo nmap hubiera tardado lo mismo (aprox. 12 seg.).

Posts relacionados:

  1. Fingerprinting

  2. Fingerprinting activo y pasivo

  3. La herramienta de fingerprinting P0F

  4. Usando P0f (I)- Un ordenador en una LAN cualquiera

  5. Usando P0f (II)- Trabajando con un archivo de capturas.

  6. Usando P0f (III) – P0f para OS Guessing remoto.

  7. Usando P0f (IV) – P0f para OS Guessing de máquinas que rechazan nuestras conexiones.

Posteado por: Jose David Baena | julio 17, 2008

La herramienta de fingerprinting P0F

La herramienta p0f está desarrollada para realizar fingerprinting de forma pasiva. Este tipo de técnica, al contrario que la activa, no genera tráfico adicional o inusual para detectar o extraer información y por lo tanto no puede ser detectado. El hecho de no ser detectado suele ser un aliciente para usar estas técnicas pasivas frente a las activas, ya que podemos explorar entre datos de la red y sabemos que la víctima no se enterará de que estamos interactuando con la información que manda o recibe.

Los paquetes capturados, normalmente contienen la información suficiente como para identificar los sistemas operativos ejecutándose en las máquinas remotas gracias a las diferencias entre las pilas TCP/IP (Cada SO implementa la pila de protocolos TCP/IP a su manera, por lo que es normal que se puedan diferenciar unas versiones de otras).

P0f tiene tres modos de detección diferentes:

· Fingerprinting del trafico entrante (SYN mode, por defecto)

Si quieres saber acerca del sistema que se conecta a tu ordenador.

· Fingerprinting del trafico saliente (SYN+ACk mode)

Para realizar fingerprinting a sistemas a los que se conecta tu máquina.

· Fingerprinting del trafico saliente rechazado (RST mode)

Para realizar fingerprinting a sistemas que rechazan el tráfico que tu les mandas.

P0f no es tampoco la mejor herramienta para hacer fingerprinting, todo dependerá de qué información queremos obtener y con el tiempo con el que contamos, además de si queremos que la técnica sea más o menos agresiva…

P0f hace uso de un solo thread del procesador y consume muy poca CPU por lo que se convierte en una excelente herramienta para el análisis pasivo de datos de nuestra red o máquina víctima.

Existen otras alternativas a P0f como son Ettercap y el primero de este tipo de técnicas que fue Siphon.

Requisitos de P0f:

P0f está disponible para varias plataformas como las siguientes: NetBSD, FreeBSD, MacOS X ,Linux , Solaris ,Windows y AIX.

En este documento se explicará todo lo que se vaya a hacer con esta herramienta, desde su configuración hasta su instalación, con el sistema operativo Linux.

Para ser instalado en Linux, P0f requiere de lo siguiente:

– libpcap 0.4 o superior
– GNU C Compiler 2.7.x o superior
– GNU make 3.7x or superior
– GNU bash / awk / grep / sed / textutils (no es realmente necesario, pero si útil)

Instalación de la herramienta

En primer lugar tenemos que instalar los requisitos que nos pide la herramienta, los cuales han sido mencionados anteriormente.

Dependiendo de la versión de Linux que tengamos y de nuestro nivel de experiencia en dicho sistema, nos resultará más fácil o más difícil su instalación. Yo recomiendo usar Debian o Ubuntu, que son con los que estoy más familiarizado. En dichos sistemas existe una herramienta llamada apt-get que está instalada por defecto en dichos sistemas. Con apt-get,apt-search y apt-get-install deberíamos instalar estas dependencias fácilmente. Para el usuario que no quiera usar la línea de comandos, también se puede usar aplicaciones graficas como synaptic.

La herramienta es muy facil de instalar y no ha dado ningún problema durante la instalación. Si el usuario posee Ubuntu, el instalar la aplicación p0f con synaptic sería tan sencillo como buscarlo e instalarlo con todas las dependencias que haga falta.
En mi caso, esta herramienta se encuentra en los repositorios oficiales, por lo que ningún problema…

Posts relacionados:

  1. Fingerprinting

  2. Fingerprinting activo y pasivo

  3. La herramienta de fingerprinting P0F

  4. Usando P0f (I)- Un ordenador en una LAN cualquiera

  5. Usando P0f (II)- Trabajando con un archivo de capturas.

  6. Usando P0f (III) – P0f para OS Guessing remoto.

  7. Usando P0f (IV) – P0f para OS Guessing de máquinas que rechazan nuestras conexiones.

Posteado por: Jose David Baena | julio 17, 2008

Fingerprinting activo y pasivo

1. Fingerprinting activo.

El fingerprinting activo se define como aquel en el que el atacante realiza alguna acción que provoque algún tipo de respuesta en la vıctima. Esto se traduce en el envío de paquetes destinados a la maquina víctima, con los que comprobar su comportamiento en situaciones anómalas o no especificadas por los estándares.
Las pruebas más usuales que se suelen realizar son:

  • Sonda FIN. Se envía un paquete FIN a un puerto abierto del objetivo y se espera respuesta. Windows, BSDI, CISCO, MVS, IRIX o HP-UX responden con un RESET.
  • Flags TCP incorrectos. Consiste en el envío de un paquete con flags no definidos (64 o 128) en la cabecera de un paquete SYN.
  • ISN o numero de secuencia inicial. Se trata de comprobar el numero inicial de secuencia elegido por la vıctima en una conexión TCP.
  • Bit de no fragmentación. Algunos sistemas operativos como Solaris activan este bit en algunos de sus paquetes para mejorar el rendimiento.
  • Inundación de paquetes SYN. Una técnica muy agresiva basada en el envío masivo de paquetes SYN a la maquina remota. Muchas dejan de aceptar conexiones tras recibir 8 paquetes seguidos. Por lo general los sistemas modernos implementan contramedidas para este tipo de ataques, que además son muy “ruidosos” y pueden tener efectos colaterales no deseados.

Algunas herramientas de este tipo de fingerprinting serían nmap,xprobe,hping…

2. Fingerprinting pasivo.

Cuando se utiliza la variante pasiva de la técnica del fingerprinting los paquetes a analizar se obtienen directamente de la red local, lo cual quiere decir que el sistema atacante no genera ningún tipo de comunicación hacia el destino con el fin de provocar una respuesta. Esta es sin duda mi técnica favorita, ya que te permite pasar totalmente inadvertido.
La implicación inmediata de esta técnica es que no permite analizar sistemas fuera de la red local o ambito de broadcast en el que se esté, y que obliga al atacante a configurar su dispositivo de red en modo promıscuo. Adicionalmente significa que el atacante está a merced del trafico que circule por la red. Si desea obtener información de una maquina concreta es posible que tenga que esperar bastante tiempo o que incluso nunca llegue a ver un paquete proveniente de dicha maquina hacia otra.
Una de las herramientas de este tipo de fingerprinting sería p0f y sus versiones posteriores. Aunque ya veremos en un post dedicado posteriormente a P0f como se puede obtener el so de una máquina realizando conexiones a ella y de forma pasiva!

Los dos terminos anteriormente explicados los podemos mostrar mediante la siguiente figura, sacada de securityfocus:

network schema

network schema

Posts relacionados:

  1. Fingerprinting

  2. Fingerprinting activo y pasivo

  3. La herramienta de fingerprinting P0F

  4. Usando P0f (I)- Un ordenador en una LAN cualquiera

  5. Usando P0f (II)- Trabajando con un archivo de capturas.

  6. Usando P0f (III) – P0f para OS Guessing remoto.

  7. Usando P0f (IV) – P0f para OS Guessing de máquinas que rechazan nuestras conexiones.

Posteado por: Jose David Baena | julio 17, 2008

Fingerprinting

La detección de un SO de forma remota se está haciendo popular entre las personas dedicadas a la seguridad informática. Es normal que sea así, ya que cuando se quiere encontrar la forma de penetrar en un sistema, primero el atacante tendrá que saber a qué se está enfrentando. Cuando me refiero a atacante, también me estoy refiriendo al administrador de dicho sistema que quiere comprobar como de seguro es el equipo a su cargo y determinar que es lo que quiere mostrar de cara al exterior.

https://i0.wp.com/www.leadermagazine.co.uk/images/uploads/615.jpg

Dicha detección de sistema operativo es llevada a cabo por muchas herramientas y la técnica más usada para obtener dicha información se llama fingerprinting.

Las técnicas de fingerprinting se basan en analizar una serie de patrones que se obtienen de diversas formas de la máquina remota de la cual quieren obtener información. Dichos patrones son contrastados con una “colección” de ejemplos en los que se sabe que para determinadas respuestas, es el sistema operativo X el que está actuando en dicha máquina. Por lo tanto, con un “corpus” de ejemplos elevado, podemos saber que tipo sistema operativo está realizando una determinada maquina con solo hacer unas peticiones concretas. Algunas veces hará falta manipular las peticiones; es decir crear nuestros propios paquetes, para que den unas respuestas las máquinas un poco distintas de lo habitual.

Algunas de las herramientas que realizan dichas técnicas son Nmap y p0f.

A partir de este post y de los siguientes hablaremos de cómo usar p0f y en qué es lo que se basa dicha herramienta.

En primer lugar demos una idea aproximada de lo que es el fingerprinting y sus principales clasificaciones…

2. Idea del fingerprinting

La técnica del fingerprinting de sistema operativo consiste en la suposición de un determinado SO a través del análisis del comportamiento observado cuando se realizan determinadas peticiones a una máquina o análisis de tráfico de un sistema determinado. Dicho análisis se realiza mediante el aprendizaje de distintos patrones observados a lo largo del tiempo y de reportes de usuarios que contribuyen a mejorar la herramienta de análisis, perfeccionándola poco a poco.

Con los datos recogidos de la máquina remota; bien sea por escucha de tráfico o por respuestas a peticiones que nosotros hemos fabricado; se identificará de forma unívoca el sistema operativo que se está utilizando (si está catalogado dicho caso en nuestra base de datos). Junto con la información del sistema operativo, puede venir información como versión del núcleo, parches que se tienen instalados…

Cada SO tiene su propia pila de protocolos TCP/IP, de hecho no existe una implementación común (creo que debería ser así; y que cada sistema operativo tuviera un adaptador para su implementación concreta).

Decir también, que no todo el fingerprinting se tiene que hacer sobre TCP/IP; se puede realizar también sobre otros protocolos en los cuales, también se puede determinar que tipo de sistema operativo esta atendiendo nuestras “llamadas”, como puede ser el protocolo ICMP.

Existen dos tipos de realizar fingerprinting:

· Técnicas activas

· Técnicas pasivas

A continuación podemos ver una manera más detallada de cómo se clasifican este tipo de técnicas:

https://i2.wp.com/www.sans.org/resources/idfaq/amap1.gif

Utilizando la herramienta Nmap (técnica activa) podemos obtener información acerca de un servidor de Internet como la siguiente:

:~# nmap -O servidor.es

Starting Nmap 4.20 ( http://insecure.org ) at 2008-05-30 18:24 CEST

Insufficient responses for TCP sequencing (2), OS detection may be less accurate

Insufficient responses for TCP sequencing (3), OS detection may be less accurate

Interesting ports on servidor.es (150.214.140.135):

Not shown: 1687 filtered ports

PORT STATE SERVICE

21/tcp open ftp

22/tcp open ssh

25/tcp open smtp

80/tcp open http

110/tcp open pop3

113/tcp closed auth

143/tcp open imap

443/tcp open https

5190/tcp open aol

8081/tcp open blackice-icecap

Device type: general purpose

Running: Microsoft Windows NT/2K/XP

OS details: Microsoft Windows XP Pro SP2

Uptime: 7.312 days (since Fri May 23 10:55:48 2008)

OS detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ .

Nmap finished: 1 IP address (1 host up) scanned in 27.133 seconds

En los siguientes posts se describirá brevemente en qué se basan estos dos tipos de técnicas, cuya información nos puede ser útil para la mejor comprensión de la futura explicación de la herramienta.
En posts más avanzados, se hablará sobre P0f y su forma de determinar el so de una máquina remota…

Posts relacionados:

  1. Fingerprinting

  2. Fingerprinting activo y pasivo

  3. La herramienta de fingerprinting P0F

  4. Usando P0f (I)- Un ordenador en una LAN cualquiera

  5. Usando P0f (II)- Trabajando con un archivo de capturas.

  6. Usando P0f (III) – P0f para OS Guessing remoto.

  7. Usando P0f (IV) – P0f para OS Guessing de máquinas que rechazan nuestras conexiones.

Posteado por: Jose David Baena | julio 1, 2008

Playmobil Surfilm

Uno de los videos hecho con playmobil de los muchos que te puedes encontrar en youtube.
Se ve a uno de los playmobil grindando sobre un mechero, deslizandose en una bañera, en un tubo…
Bastante original…

« Newer Posts - Older Posts »

Categorías