Header Ads

APIPA

Los sistemas IPv4, en especial Windows, tienen una característica que lejos de ser funcional, se ha convertido en una vulnerabilidad y genera múltiples problemas de conectividad. Hablamos de un proceso llamado  Automatic Private IP Addresing   APIPA 
La falla se presenta cuando estamos en una red local con servidor DHCP y al conectarnos, nuestro adaptador de red no recibe la ip asignada y, en el caso de Windows, activa APIPA y se autoasigna una IP (Por lo general de clase B en el rango 169.254.0.1 a 169.254.255.254 con máscara 255.255.0.0 pero puede variar en dependencia de la versión de Windows), lo cual impide la conexión a la red.
Supuestamente esto es una autoasignación temporal y Windows debería realizar un nuevo intento cada 5 minutos para conectarse al servidor DHCP, pero casi nunca sucede. 
Las causas pueden ser muchas; drivers desactualizados o en conflicto, copia de Windows defectuosa, parchada o pirata, la métrica del adaptador alterada, servidor DHCP distante, red de datos con tramos defectuosos, adaptador de red defectuoso, marcador BROADCAST de los paquetes de descubrimiento DHCP en algunas distribuciones de Windows viene activado y en otra no, etc, etc. Este problema se ha incrementado a partir de las versiones Vista/7 y 8 (No sabemos si en 8.1 se corrigió esta vulnerabilidad).
Vulnerabilidad
Esto debería considerarse un Bug, pero se ha convertido en una peligrosa vulnerabilidad, que abre un enorme boquete de seguridad en los sistemas Windows (los más afectados), ya que técnicamente un atacante podría lanzar un rootkit, en una escalada de privilegios, para correr un proceso oculto contra un servidor Windows Server, PC o nodo en nuestra red, y obligarlo a activar APIPA persistente, para sacarlo de servicios con tan solo un .reg
Alterando APIPA vía regedit
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"IPAutoconfigurationEnabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"ArpRetryCount"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"DhcpConnEnableBcastFlagToggle"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"DhcpConnForceBroadcastFlag"=dword:00000001
O desactivar el DHCP
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"EnableDHCP"=dword:00000000
O modificar la métrica de los adaptadores de red, para afectar las peticiones. (Nota: El valor de registro InterfaceMetric es diferente para cada adaptador de red)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\
Y afectar los valores REG_DWORD de las interfaces
InterfaceMetric de 1 a 9999
... O con un . bat
netsh interface ip set address name="Conexi¢n de  rea local" source=static 169.254.0.30 255.255.0.0 169.254.0.1 9999
netsh interface ip set dns "Conexi¢n de  rea local" static 169.254.0.1
netsh interface ip add dns name="Conexi¢n de  rea local" addr=169.254.0.1
# para conexión WiFi...
netsh interface ip set address name="Conexiones de red inal mbricas" source=static 169.254.0.30 255.255.0.0 169.254.0.1 9999
netsh interface ip set dns "Conexiones de red inal mbricas" static 169.254.0.1
netsh interface ip add dns name="Conexiones de red inal mbricas" addr=169.254.0.1
Para Windows 7 cambiar "Conexiones de red inal mbricas" por "Conexi¢n de red inal mbrica" 
O también puede deshabilitarlo/corregirlo con un script vbs
Nota: Los procedimientos descritos anteriormente solo aplican para IPv4
Contramedidas
Sea cual sea la causa que produce este "mal funcionamiento" de los sistemas Windows, a continuación brindamos algunas soluciones que deben tomar si se le presenta esta situación. Las acciones descritas a continuación deben ser aplicadas en el orden descrito (Si no funciona al aplicar un paso, ir al siguiente)
a. Si la red local a la cual pretende acceder está protegida, asegúrese que la dirección mac de su adaptador de red esté validada para ingresar y que la asignación de IP sea por DHCP y no manual.
b. Si accede por WIFI, asegúrese que su adaptador de red es compatible para "negociar" con el punto WIFI al cual pretende conectarse y en caso de tener encriptación (WPA/WPA2/etc) que su adaptador de red soporte este tipo de conexión y seguridad.
c. Verifique que sus navegadores tengan la misma configuración del proxy de la red donde se conectará (en caso de que no sea transparente).
d. Verifique los parámetros de seguridad que puedan bloquear la conexión (firewall de la red, firewall interno de Windows, Suite antivirus de seguridad , etc)
e. Contacte al administrador de la red local para validar los parámetros de la red y requisitos mínimos de conectividad y seguridad.
f. Verifique si su terminal tiene malware
Pasos
1. Deshabilitar el adaptador de red, esperar 5 segundos y habilitarlo nuevamente
2. Restablecer el protocolo TCP/IP: Clic en Inicio/Ejecutar/cmd (Accesorios/Simbolo de Sistema en XP) y presiona "Entrar" y digitar en el terminal 
netsh int ip reset c:\resetlog.txt
netsh winsock reset
ipconfig /registerdns
ipconfig /flushdns
ipconfig /release
Y reiniciar el PC
3. Clic en Inicio/Ejecutar/ Services.msc. Buscar los servicios relacionados con su adaptador de red, DHCP y en Propiedades/modo de inicio, ponerlo en Automático e iniciar el servicio.
4. Actualizar los drivers de la tarjeta de red
5. Descargue el siguiente DHCPfix y ejecute el archivo disableAPIPA.reg. Agregue la clave de registro y reinicie su PC.
6. Descargue la app Microsoft Fix it, y ejecútela con privilegios y corrija los problemas relacionados. Reinicie su PC
7. Descargue el siguiente DHCPfix y ejecute la app DHCPBroadcastFixTool.exe (con privilegios si usa Windows Vista/7/8). Luego seleccione su adaptador de red y presione el botón Apply Fix y al terminar reinicie su PC
8. Revise la métrica de las tarjetas de red (si tiene más de una) y si existen tarjetas de red virtuales creadas por hipervisores como VMWare, Virtualbox, etc, que pueden causar conflicto. La métrica de todas las tarjetas de red deberá estar en automático, sin embargo, debe verificar el órden de las prioridades. Para hacerlo, haga Clic en Inicio/Ejecutar/cmd (Accesorios/Simbolo de Sistema en XP) y presiona "Enter" y digitar en el terminal 
netstat -rn
El estado de la prioridad (métrica) lo pude encontrar en la columna "métrica". Para cambiarlo vaya a su dispositivo de red (Inicio/Panel de Control/Redes e Internet/Conexiones de Red/Cambiar Configuración del Adaptador/), clic derecho y elija "Propiedades". Luego seleccione el protocolo TCP/IP (para el caso de ipv4, ya que IPV6 tiene un método diferente) y pulse el botón "Propiedades", verifique que esté seleccionada la opción "Obtener una dirección ip y DNS automáticamente" y en "Opciones Avanzadas", desmarque la casilla de la métrica y coloque el valor 1 en la tarjeta de red primaria que pretenda usar para recibir la ip del servidor DHCP (El resto de las tarjetas puede dejarlas en automático). Luego reinicie el PC. Para mayor información, consulte el post orden de enlace de los adaptadores.
9. Si ninguna de las acciones anteriores funcionan, se recomienda reemplazar la tarjeta de red o reinstalar Windows
Para Linux
De acuerdo a los aportes realizados por el usuario Erick, en el foro alterserv.com, en Linux también existe esta problemática, (heredada probablemente de su archi-rival Windows), pero puede mitigarse de dos maneras:
Solución No 1: iptables
if [ "`route -n | grep 169.254.0.0`" ]; then
route del -net 169.254.0.0/16 dev eth0
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0
echo -e "$R Borrado APIPA$N"
else
echo -e "$R No Existe APIPA$N"
fi
Nota: La línea ' route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0', se agrega una ruta con destino 192.168.1.0 con mascara de subred 255.255.255.0 y la puerta de enlace 192.168.1.1 en eth0. Modifíquela de acuerdo a los parámetros de su red local.
Solución No 2: Modificando el archivo avahi-autoipd
nano /etc/network/if-up.d/avahi-autoipd
Y comentar las líneas
#/bin/ip route add 169.254.0.0/16 dev $IFACE metric 1000 scope link
#/sbin/route add -net 169.254.0.0 netmask 255.255.0.0 dev $IFACE metric 1000
Y reiniciar el sistema
Con la tecnología de Blogger.