Dans cet article, nous allons apprendre à installer et à trouver des rootkits avec Rootkit Hunter, entre autres menaces, vous pourrez l'utiliser pour trouver des signes de certaines variantes du malware XOR.DDoS, qui est actuellement utilisé pour créer des botnets avec Systèmes Linux pour les attaques massives par déni de service distribué.
Table des matières
- Installer
- Télécharger
- Correctif - (facultatif)
- Installer
- Configurer
- tests
- journaux
- listes d'attente
- divers
- Exécuter
- drapeaux
- planification cron
Installer RKHunter
Téléchargez Rkhunter, essayez cURL pour le faire.
curl http://nbtelecom.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.2/rkhunter-1.4.2.tar.gz -o rkhunter-1.4.2.tar.gz
Puis extrayez le contenu du package.
tar zxvf rkhunter-1.4.2.tar.gz
Entrez le répertoire tarball.
cd rkhunter-1.4.2
Correctif (facultatif)
Cette étape va par contre patcher le script rkhunter et sa base de données pour rechercher le malware XOR DDoS Linux. Ce correctif est basé sur le port et les fichiers trouvés dans les rapports d'Akamai, Avast et Malware Must Die.
Entrez dans le répertoire des fichiers sous le répertoire rkthunter.
cd files
Installez le correctif utilitaire avec yum.
yum install patch
Téléchargez maintenant le correctif.
curl http://sourceforge.net/p/rkhunter/patches/44/attachment/rkhunter.patch -o rkhunter.patch
Alternativement, vous pouvez copier et coller le contenu du fichier rkhunter.patch à partir d'ici.
--- rkhunter 2014-03-12 17:54:55.000000000 -0300
+++ rkhunter.new 2015-10-02 17:01:25.040000000 -0300
@@ -7797,6 +7797,19 @@
#
+ # XOR.DDoS
+ XORDDOS_FILES="/lib/udev/udev
+ /lib/udev/debug
+ /etc/cron.hourly/cron.sh
+ /etc/cron.hourly/udev.sh
+ /lib/libgcc4.so
+ /var/run/udev.pid
+ /var/run/sftp.pid"
+ XORDDOS_DIRS=
+ XORDDOS_KSYMS=
+
+
+
# 55808 Variant A
W55808A_FILES="/tmp/.../r
/tmp/.../a"
@@ -11907,6 +11920,13 @@
return
fi
+ # XOR.DDoS Rootkit
+ SCAN_ROOTKIT="XOR.DDoS - Rootkit"
+ SCAN_FILES=${XORDDOS_FILES}
+ SCAN_DIRS=${XORDDOS_DIRS}
+ SCAN_KSYMS=${XORDDOS_KSYMS}
+ scanrootkit
+
# 55808 Trojan - Variant A
--- backdoorports.dat 2010-11-13 20:41:19.000000000 -0300
+++ backdoorports.dat.new 2015-10-02 17:10:24.086000000 -0300
@@ -12,6 +12,7 @@
2001:Scalper:UDP:
2006:CB Rootkit or w00tkit Rootkit SSH server:TCP:
2128:MRK:TCP:
+3502:Possible XOR.DDoS Botnet Malware:TCP:
6666:Possible rogue IRC bot:TCP:
6667:Possible rogue IRC bot:TCP:
6668:Possible rogue IRC bot:TCP:
Appliquez le patch sur le rkhunter script et backdoors.dat fichiers avec la commande suivante.
patch < rkhunter.patch
Le patch est terminé, revenez maintenant au répertoire racine de l'archive pour continuer l'installation.
cd ..
Installer les fichiers
Exécutez le script d'installation avec les paramètres suivants pour l'installer sous /usr/local.
./installer.sh --install --layout /usr/local
Vous pouvez également utiliser les --exemples drapeau pour afficher plus d'informations et d'exemples de mise en page ou et le --show au lieu de l'option --install pour montrer ce qui doit être installé sur votre mise en page.
Installer Afficher (recommandé)
Le afficher et unhide-tcp les utilitaires rechercheront les processus et les ports cachés, bien que cela ne soit pas obligatoire, cela est fortement recommandé car la plupart des rootkits sophistiqués cacheront leur présence.
Tout d'abord, nous devons installer GNU Compiler Collection.
yum install gcc
Installez glibc-static, nécessaire pour créer les binaires entrelacés.
yum install glibc-static
Compilez unhide-linux.
gcc -Wall -O2 --static -pthread unhide-linux*.c unhide-output.c -o unhide-linux
Compilez unhide-tcp.
gcc -Wall -O2 --static unhide-tcp.c unhide-tcp-fast.c unhide-output.c -o unhide-tcp
Installez les fichiers sous /usr/local/bin et créez un lien symbolique pour les afficher.
cp unhide-linux unhide-tcp /usr/local/bin && cd /usr/local/bin/ && ln -s unhide-linux unhide && cd -
Configurer
Dans cette section, je vais montrer certaines des options trouvées sur le rkhunter.conf fichier, les options sont séparées en groupe et leur description est simplifiée, lisez la description réelle sur le fichier et si vous n'êtes pas sûr, ignorez simplement car les options par défaut devraient suffire, la plupart d'entre elles sont commentées.
Nous vous encourageons à faire une première exécution avant de faire les modifications réelles sur le fichier de configuration, cela vous donnera une meilleure compréhension du fonctionnement de rkhunter et la possibilité d'identifier certains faux positifs à mettre en liste blanche sur le fichier de configuration.
Appelez simplement rkhunter avec le -c ou --vérifier paramètres.
rkhunter -c
Comme vous pouvez le voir sur l'image ci-dessus, il y aura des avertissements concernant des fichiers comme egrep ou ifup pour être des scripts au lieu de binaires ELF, mais ce sont des fichiers système légitimes et la plupart des options sur le fichier de configuration concernent la façon dont faire rkhunter ignorer ces occurrences.
Tests
Les options suivantes ENABLE_TESTS et DISABLE_TESTS définissent les types de testicules à créer, activent tous, puis désactivent ceux qui ne sont pas souhaités. C'est une bonne idée d'avoir au moins suspscan désactivé par défaut car il est sujet aux faux positifs.
ENABLE_TESTS=ALL
DISABLE_TESTS=suspscan
Secure Shell
Ce n'est jamais une bonne idée d'activer la connexion root sur les connexions SSH, utilisez plutôt su/sudo, sinon définissez-le sur yes.
ALLOW_SSH_ROOT_USER=no
La version 1 du protocole SSH est connue pour être non sécurisée, définissez-la sur 1 besoin d'ignorer cette vérification de protocole
ALLOW_SSH_PROT_V1=0
Ports réseau
Ports réseau autorisés au format protocol:port
PORT_WHITELIST
Définissez la liste blanche pour certains programmes avec la syntaxe path_to_binary:protocol:port_number
PORT_PATH_WHITELIST=/usr/sbin/squid:TCP:3801
Version de l'application
Cette option vous permet d'exécuter certaines applications obsolètes, ce n'est généralement pas recommandé et vous devez être sûr que l'application est sûre avant de la mettre sur cette liste.
APP_WHITELIST=openssl:0.9.7d gpg httpd:1.3.29
Renifleurs
Autoriser l'utilisation de renifleurs, des logiciels qui capturent les paquets réseau.
Autorisez le processus suivant à écouter le réseau, comme la ligne suivante.
ALLOWPROCLISTEN=/usr/sbin/snort-plain
Cela permettra à l'interface réseau répertoriée d'écouter le réseau en mode promiscuité.
ALLOWPROMISCIF=eth0
Fichiers
Vous devrez créer des exceptions aux tests effectués par rkhunter, les options suivantes vous permettent de contourner les tests sur des objets spécifiques, tels que des fichiers, des répertoires.
Autoriser certains répertoires cachés.
ALLOWHIDDENDIR=/etc/.java
Autoriser certains fichiers cachés.
ALLOWHIDDENFILE=/usr/share/man/man1/..1.gz
ALLOWHIDDENFILE=/usr/share/man/man5/.k5identity.5.gz
ALLOWHIDDENFILE=/usr/share/man/man5/.k5login.5.gz
Cette liste blanche permettra à certains fichiers d'être des scripts au lieu d'un binaire ELF.
SCRIPTWHITELIST=/usr/sbin/ifdown
SCRIPTWHITELIST=/usr/sbin/ifup
SCRIPTWHITELIST=/usr/bin/egrep
SCRIPTWHITELIST=/usr/bin/fgrep
SCRIPTWHITELIST=/usr/bin/ldd
Autoriser le fichier à être accessible en écriture par tout le monde.
WRITEWHITELIST=/usr/bin/date
Autoriser le fichier à avoir des changements d'attributs.
ATTRWHITELIST=/usr/bin/date
Autoriser le processus à interroger les fichiers supprimés.
ALLOWPROCDELFILE=/sbin/cardmgr
Options de journal
Cela définira dans quel fichier se connecter.
LOGFILE=/var/log/rkhunter.log
Définissez celui-ci sur 1 si vous souhaitez continuer à vous connecter sur le même fichier à chaque exécution de rkhunter, la valeur par défaut est 0, cela ajoutera '.old' au fichier journal et en créera un nouveau.
APPEND_LOG=0
Si vous souhaitez conserver le fichier journal en cas de problème, définissez l'option suivante sur 1.
COPY_LOG_ON_ERROR=0
Décommentez et définissez la fonction de journalisation si vous souhaitez utiliser syslog.
USE_SYSLOG=authpriv.warning
Par défaut, les éléments de la liste blanche rapporteront ok sur les tests, si vous souhaitez mettre en évidence les éléments de la liste blanche, vous devez définir cette option sur 1.
WHITELISTED_IS_WHITE=0
Options du système d'exploitation
Définissez l'option du gestionnaire de packages sur RPM sur les systèmes de type Red Hat, qui incluent CentOS.
PKGMGR=RPM
Activez cette option pour signaler un avertissement lorsque le système d'exploitation change de version/version.
WARN_ON_OS_CHANGE
Doit-on mettre à jour notre base de données lors d'un changement de système d'exploitation ?
UPDT_ON_OS_CHANGE
Où trouver le fichier de version du système d'exploitation, défini sur /etc/redhat-release sur CentOS.
OS_VERSION_FILE=/etc/redhat-release
Verrouillage
Si vous êtes susceptible d'avoir plus d'un rkhunter en cours d'exécution en même temps, vous devez activer cette option pour permettre l'utilisation de fichiers de verrouillage et éviter la corruption de la base de données.
USE_LOCKING=0
Si vous avez activé l'utilisation des verrous, vous devez définir un délai d'attente pour éviter les blocages.
LOCK_TIMEOUT
Doit-on avertir des sessions verrouillées ?
SHOW_LOCK_MSGS
Startup et super démon
Où se trouve le fichier de configuration inetd.
INETD_CONF_PATH=/etc/inetd.conf
Quels services sont autorisés à s'exécuter via l'inetd.
INETD_ALLOWED_SVC=/usr/sbin/rpc.metad /usr/sbin/rpc.metamhd
Fichier de configuration Xinetd.
XINETD_CONF_PATH=/etc/xinetd.conf
Chemins des fichiers de démarrage RC.
STARTUP_PATHS=/etc/rc.d /etc/rc.local
Comptes
Le fichier qui contient les mots de passe cachés.
PASSWORD_FILE=/etc/shadow
Autoriser les comptes d'utilisateurs autres que root avoir l'UID 0.
UID0_ACCOUNTS=toor rooty
Autoriser les comptes sans mot de passe.
PWDLESS_ACCOUNTS=abc
Syslog
Fichier de configuration Syslog.
SYSLOG_CONFIG_FILE=/etc/syslog.conf
Autoriser syslog à se connecter à distance.
ALLOW_SYSLOG_REMOTE_LOGGING=0
Rapports
Signaler le nombre d'avertissements ?
SHOW_SUMMARY_WARNINGS_NUMBER
Afficher le temps total nécessaire pour exécuter les tests ?
SHOW_SUMMARY_TIME
Pour recevoir des rapports par e-mail lorsque rkhunter trouve quelque chose, vous devez définir les options suivantes et disposer d'une application de messagerie.
Qui recevra l'e-mail.
[email protected]
Quelle commande a été utilisée pour envoyer un e-mail.
MAIL_CMD=mail -s "[rkhunter] Warnings found for ${HOST_NAME}"
Exécuter rkhunter
OK, à ce stade, vous devriez déjà avoir exécuté rkhunter au moins une fois, jetez maintenant un coup d'œil à d'autres drapeaux qui peuvent être utilisés avec rkhunter.
Vérifiez vos modifications
Une fois la configuration terminée, exécutez rkhunter avec le -C ou --check-config drapeau pour vérifier toute erreur dans le fichier.
rkhunter -C
Mise à jour des propriétés
Maintenant, et chaque fois que vous modifiez le fichier de configuration, assurez-vous de mettre à jour la base de données des propriétés du fichier.
rkhunter --propupd
Signaler uniquement les avertissements.
rkhunter --rwo
Parfois, vous souhaitez exécuter uniquement un test spécifique, pour cela essayez --list tests pour obtenir les noms des tests disponibles, puis utilisez le --enable drapeau suivi du nom du test.
rkhunter --list tests
L'option suivante désactivera l'invite d'appui sur les touches.
rkhunter --sk
Pour exécuter rkhunter sur un cronjob, utilisez le --cronjob flag, créez le fichier exécutable /etc/cron.daily/rkhunter.sh avec le contenu suivant pour effectuer une vérification quotidienne
#!/bin/sh
( /usr/local/bin/rkhunter --versioncheck
/usr/local/bin/rkhunter --update
/usr/local/bin/rkhunter --cronjob -c ) >> /dev/null 2>&1
Conclusion
Cela devrait vous permettre de démarrer avec rkhunter, vous offrant une couche de sécurité supplémentaire, mais cela ne suffira pas si vous négligez les principes de sécurité de base ainsi que si vous mettez tous les avertissements que vous rencontrez sur des listes blanches au lieu d'atténuer les problèmes. Gardez également à l'esprit que rkhunter vous aidera à empêcher vos machines de devenir membres d'un botnet Linux mais ne protégera pas votre site contre la cible d'une campagne DDoS. Merci d'avoir lu !