Está circulando un gusano, extremadamente complejo, que ataca a
los servidores web basados en Apache, en la plataforma FreeBSD,
que todavía no han sido actualizados.
Tal como informó Hispasec, en sendos boletines publicados el 17 y
20 de junio, a finales del mes pasado se dio a conocer la
existencia de una vulnerabilidad en las versiones de Apache
anteriores a la 1.3.26 y la 2.0.39. El problema radicaba en la
forma en que Apache procesaba las cabeceras incorrectas en los
«datos troceados» («chunked data»).
La vulnerabilidad podía permitir a un atacante remoto originar
una condición de error en el servidor. En función de la versión
de Apache y el sistema operativo utilizado en el servidor podía
llegar a ser posible la ejecución de código en el servidor.
Desgraciadamente, y en una actuación que levantó mucha polémica,
la vulnerabilidad fue divulgada por ISS a las pocas horas de ser
descubierta, sin dejar margen a los responsables del proyecto
Apache a publicar las versiones actualizadas. Las nuevas
versiones de Apache tardaron casi dos días en estar disponibles
para su descarga.
El gusano APC
El pasado 28 de junio, un servidor que actuaba como «honeypot»
con Apache 1.3.24, permitió capturar un gusano que se conectaba
a los servidores web e intentaba determinar si el mismo era
vulnerable. El gusano ha sido bautizado como «APC» a partir de
una cadena de texto que aparece dentro del mismo.
Comportamiento
La primera acción que realiza el gusano es enviar un paquete (un
simple «hola») al puerto 2001/udp a una dirección IP fija. A
continuación queda a la escucha en este mismo puerto, esperando
la recepción de órdenes. Esto permite controlar remotamente el
gusano para utilizarlo como un «zombie» en un ataque de
denegación de servicio distribuido contra objetivos concretos.
Simultáneamente, el gusano empieza a rastrear direcciones IP,
de forma aleatoria. En cada dirección intenta establecer una
conexión TCP contra el puerto 80, enviando una simple petición
HTTP («GET / HTTP/1.1») .
Si la máquina remota responde, el gusano analiza la respuesta. Si
el servidor remoto se identifica como Apache envía una segunda
petición HTTP que contiene el código del ataque (ver
http://www.idefense.com/idtools/Apache%20Worm.txt).
Este ataque es específico contra la plataforma FreeBSD 4.5.
Infección
El servidor web registra, en el archivo log, la siguiente
entrada:
[Sun Jul 7 13:47:19 2002] [error] [client xx.xx.xx.xx] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /
Por su parte, en /var/log/messages se registra el siguiente
mensaje:
Jul 7 13:47:25 foobar /kernel: pid 22639 (httpd), uid 80: exited on signal 11
En los sistemas vulnerables, el gusano se copia en el directorio
/tmp con los nombres «.a» y «.uua».
Una vez copiados estos archivos, se ejecuta /tmp/.a, completando
el ciclo.
Detección
Se puede detectar la presencia del gusano comprobando la
existencia de los archivos «.a» y «.uua» en el directorio /tmp.
Otra forma de detectar la actividad del gusano es monitorizando
el tráfico que utilice el puerto 2001/udp.
Eliminación
Para eliminar el gusano de una máquina comprometida deben
borrarse los archivos «.a» y «.uua» del directorio /tmp y matar
el proceso del gusano:
% ps aux ! grep «.a»
nobody 1103 0.0 0.4 932 444 v1 S 6:46PM 0:00.00 /tmp/.a xx.xx.xx.xx
% kill -9 1103
Prevención
Actualizar la versión de Apache a la 1.3.26.
xavi@hispasec.com
Deja una respuesta