marzo 28, 2024
Voiced by Amazon Polly
Comparte en redes sociales

El OS Fingerprinting es una técnica que cosiste en analizar las huellas que deja un sistema operativo en sus conexiones de red. Está basada en los tiempos de respuesta a los diferentes paquetes, al establecer una conexión en el protocolo TCP/IP, que utilizan los diferentes sistemas operativos.

Lo más habitual para evitar esta técnica es implementar IDS (sistema de detección de intrusos). Pero algunas veces un IDS no detecta esta técnica y aunque la detecte si no es un IDS reactivo (que responde a la actividad sospechosa reprogramando los cortafuegos para que bloquee tráfico que proviene de la red del atacante) nos sirve para evitarla.

Existe otra forma de evitar estés ataques que consiste en enmascarar nuestro sistema, o bien modificando los valores TCP/IP o utilizar sistemas operativos virtuales con una filosofía parecida a los honeypots.

Modificar valores TCP/IP en Windows:

  • Time To Live (TTL). En sistemas Windows tiene un valor de 128. Para modificarlo se usa el regedit y en “ HKLMSystemCurrentControlSetServicesTcpipParameters” se crea o se modifica una nueva variable DWORD con el nombre DefaultTTL y se introduce el valor deseado. Por ejemplo: 64 el usado para sistemas Linux.
  • Modificar el tamaño de la ventana. Usando el regedit en “HKLMSystemCurrentControlSetServicesTcpipParametersInterfaces” se crea o se modifica una nueva variable DWORD con el nombre TcpWindowSize y se introduce el valor deseado.
  • Desactivar paquetes ICMP Redirects.Con el regedit en “HKLMSystemCurrentControlSetServicesTcpipParameters” se crea o se modifica una nueva variable DWORD con el nombre EnableICMPRedirects y se introduce el valor 0 (por defecto está a 1).

Es recomendable antes de hacer estas modificaciones hacer una copia de seguridad del registro de Windows, debido a que estas modificaciones pueden afectar a la conectividad del sistema a los diferentes servicios.

Modificar valores TCP/IP en sistemas Linux:

  • Time To Live (TTL). En sistemas Linux tiene un valor de 64. Para modificarlo usamos el comando “echo 128 > /proc/sys/net/ipv4/ip_default_ttl”, introducimos 128 porque es el valor por defecto de Windows.
  • Desactivación de TCP TIMESTAMP. Utilizamos el comando “echo 0 > /proc/sys/net/ipv4/tcp_timestamps”.
  • Desactivación del tamaño de la ventana. Utilizamos el comando “echo 0 > /proc/sys/net/ipv4/tpc_window_scaling”.
  • Activar ICMP REDIRECTS. Utilizamos los comandos: “echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects” para aceptar estés paquetes y “echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects” para enviarlos.

También se recomienda hacer copias de seguridad ya que modificar estos parámetros puede afectar a la conectividad del sistema.

Utilizar sistemas operativos virtuales.

La siguiente técnica no nos permite ocultar o cambiar completamente nuestro SO, pero nos va permitir ocultarlo en aspectos concretos de conexiones. Esta idea está siendo aplicada en el tema de los honeypots y consiste en hacer creer a los atacantes que hay máquinas de un SO específico (el virtual) y ocultar tu SO real para atraerlos.

La herramienta que emplearemos es honeyd, de Niels Provos. Una de sus grandes características es que podemos asignar a cada una de nuestros dispositivos virtuales el SO que queramos. Esa personalidad también se especifica con un fichero normal de firmas de SO de Nmap, permitiéndonos convertirnos en el SO que queramos.

Un ejemplo practico:

Tenemos un servidor Linux que queremos que responda como: si fuera Sistema Solaris si se intenta conectar un Windows con el, que es un Windows 2000 server SP2 si se conectan desde un rango de Ip asignado y que es un router si se conectan a determinadas horas desde 12:00am a 5:00am.

En primer lugar instalamos honeyd, y después configuramos el archivo honeyd.conf:
El servidor tiene la ip 192.168.1.100.

Archivo honeyd.conf:

##### Honeyd Configuration File #####

###
### Start with default template. If you don’t assign specifc
### behavior to a specific IP address, Honeyd defaults to the
### ‘default’ template. You must have a template with the name
### ‘default’.

### Default Template
create default
# Set default behavior
set default personality «Windows NT4 / Win95 / Win98»
set default default tcp action reset
set default default udp action reset
set default default icmp action open
# Add specific services
add default tcp port 139 open
add default tcp port 137 open
add default udp port 137 open
add default udp port 135 open

### We now have the rest of our templates and honeypot behavior
###
### Port Behavior
### TCP (default is Open)
### – Open: Respond with Syn/Ack, establish connection
### – Block: Drop packet and do not reply
### – Reset: Respond with RST
### – Tarpit: Sticky connection
###
### UDP (default is Closed)
### – Open: No response
### – Block: Drop packet and do not reply
### – Reset: Respond with ICMP port error message
###
### ICMP (default is Open)
### – Open: Reply to ICMP packets
### – Block: Drop packet and do not reply
###

### Tarpit Template
### Insecure and open Mac box designed to tarpit worms/autorooters

### Solaris Spam Relay
create relay
set relay personality «Solaris 2.6 – 2.7»
set relay default tcp action reset
set relay default udp action reset
add relay tcp port 25 «perl scripts/unix/general/smtp.pl»
add relay tcp port 111″perl scripts/unix/general/rpc/bportmapd –proto tcp –host scripts/unix/general/rpc/hosts/solaris-2.7 –srcip $ipsrc –dstip $ipdst –srcport $srcport –dstport $dport –logfile /var/log/honeyd –logall»
add relay tcp port 8080 «perl scripts/unix/general/proxy.pl»
add relay udp port 111″perl scripts/unix/general/rpc/bportmapd –proto udp –host scripts/unix/general/rpc/hosts/solaris-2.7 –srcip $ipsrc –dstip $ipdst –srcport $srcport –dstport $dport –logfile /var/log/honeyd –logall»
bind 192.168.1.120 relay

### Standard Windows 2000 computer
create win2k
set win2k personality «Windows 2000 server SP2»
set win2k default tcp action reset
set win2k default udp action reset
set win2k default icmp action block
set win2k uptime 3567
set win2k droprate in 13
add win2k tcp port 21 «sh scripts/win32/win2k/msftp.sh $ipsrc $sport $ipdst $dport»
add win2k tcp port 25 «sh scripts/win32/win2k/exchange-smtp.sh $ipsrc $sport $ipdst $dport»
add win2k tcp port 80 «sh scripts/win32/win2k/iis.sh $ipsrc $sport $ipdst $dport»
add win2k tcp port 110 «sh scripts/win32/win2k/exchange-pop3.sh $ipsrc $sport $ipdst $dport»
add win2k tcp port 143 «sh scripts/win32/win2k/exchange-imap.sh $ipsrc $sport $ipdst $dport»
add win2k tcp port 389 «sh scripts/win32/win2k/ldap.sh $ipsrc $sport $ipdst $dport»
add win2k tcp port 5901 «sh scripts/win32/win2k/vnc.sh $ipsrc $sport $ipdst $dport»
add win2k udp port 161 «perl scripts/unix/general/snmp/fake-snmp.pl public private –config=scripts/unix/general»
# This will redirect incomming windows-filesharing back to the source
add win2k udp port 137 proxy $ipsrc:137
add win2k udp port 138 proxy $ipsrc:138
add win2k udp port 445 proxy $ipsrc:445
add win2k tcp port 137 proxy $ipsrc:137
add win2k tcp port 138 proxy $ipsrc:138
add win2k tcp port 139 proxy $ipsrc:139
add win2k tcp port 445 proxy $ipsrc:445
bind 192.168.1.130 win2k

### Cisco router
create router
set router personality «Cisco IOS 12.1(5)-12.2(1)»
set router default tcp action reset
set router default udp action reset
set router uid 32767 gid 32767
set router uptime 1327650
add router tcp port 23 «perl scripts/router/cisco/router-telnet.pl»
add router tcp port 80 open
add router udp port 161 «perl scripts/unix/general/snmp/fake-snmp.pl public private –config=scripts/unix/general»
bind 192.168.1.254 router

###
### We now have our dynamic template, which creates different
### virtual honeypots based on the attacker, including OS. Honeyd
### has passive fingerprinting capabilities built into it. You
### can see which OS types it can passively fingerprint in the
### file pf.os.
###
### NOTE: You can make the dynamic template your default template
### with ‘dynamic default’. Also, the dynamic template must
### go after all the other templates it is using, as such
### the dynamic template should go last.
###

### Dynamic honeypot
dynamic magichost
add magichost use relay if source os = «windows»
add magichost use win2k if source ip = 192.168.1.0/28
add magichost use router if time between 12:00am – 5:00am
bind 192.168.1.100 routerone

Existen mas configuración y documentación en la pagina web del proyecto honeyd.

Modificar los valores TCP/IP en ambos sistemas operativos puede tener problemas de conectividad y no funcionar algunos servicios, si se quiere realizar esta técnica se necesita probar que los servicios que se ofrecen funcionan al hacer las modifcaciones, además no garantiza que no sean detectados. Usar honeyd dentro de sus limitaciones es la mejor opción y camufla perfectamente el sistema.

Más información y descarga de honeyd:
http://www.honeyd.org/

Honeypots:
http://vtroger.blogspot.com/2006/11/tarros-de-miel.html

6 pensamientos sobre “Enmascarar sistema para evitar OS Fingerprinting.

  1. Excelente blog. La verdad es que modificar los parámetros de TCP/IP no me parece muy buena idea pero la de usar honeyd me parece una excelente idea para evitar el OS Fingerprinting.

  2. tremendo articulo!! Yo lo que estaba haciendo era modificando los el header de http correspondiente al user-agent, estaba usando modify headers que es un plugin del firefox. Y en la empresa donde estoy lo hacemos en el proxy mismo. Te parece que eso es «menos seguro»

    Saludos.

  3. Hay que tener en cuenta que el OS Fingerprinting es una técnica que cosiste en analizar las huellas que deja un sistema operativo en sus conexiones de red basada en los tiempos de respuesta y se realiza mediante un escaeno. Y los header es la información que tú dejas en servidor cuando accedes a una página web.
    Cambiar el header sería una medida de protección ante un servidor que recaba información para después atacar a los sistemas que han visitado la página web que sirve. Y lo que escribo aquí es para evitar que alguien al escanear tu sistema desde el exterior no descubra su identidad.
    Cambiar los header no tendría ningún efecto ante un OS Fingerprinting.
    Un saludo

Deja un comentario