Archives pour l'étiquette spam

Configurer un serveur SMTP et cacher sa bannière (Exim4)

Bijour à vous …

Today, la configuration d’un serveur de mail exim4 (le serveur smtp par défaut de Debian … ), à la base je voulais juste m’amuser à filer une astuce pour cacher la bannière du serveur (Il est fufu mon serveur smtp!!! Gaffe au backstab ;)), et pis, prendre des screenshots, c’est pas compliqué, donc ben vous aurez droits à la version complète du Grand LoupZeur … si c’est pas la lose ça :D. (Mon but est seulement de configurer le smtp, pas de truc anti-spam et …, y’a plein de tutos pour ça)

Sinon, quelques liens sur des tutos d’installation d’exim4 :

Pour l’installation, la démarche à suivre est simple …

apt-get install exim4
dpkg-reconfigure exim4-config

Pour un dédié j’ai choisit la config internet (comme j’ai une ip fixe, je n’ai pas besoin de smarthost):
config-internet
Ensuite, le nom de domaine utilisé :
fqdn-exim4
L’ip sur laquelle on écoute :
ip-exim4
Les domaines pour lesquelles on acceptes les mails (noté la séparation des domaines par 🙂 :
mail-destination-accepte
Les relais que l’on autorise à envoyer des mails (NE JAMAIS AUTORISER TOUT LES DOMAINES, c’est le principal vecteur de spam)
relay-autorise-exim4
et la même choses pour les ip (autorisé les ips local, si vous êtes dans un réseau local).
relay-ip
Les requêtes DNS (pour ma part j’ai mis non comme j’ai un serveur DNS local normalement, ça ne pose pas de problème, à part si le DNS tombe, tous les mails seront mis dans la queue … ça m’est arrivé suite à la « sécurisation » de mon serveur DNS 😉 j’ai oublié d’autoriser 127.0.0.1 à faire des requêtes DNS :p ololz le Jean-Kevin!!!! ).
dns-exim4
Le maildir (pour ma part, /var étant plus petit que /home, pour gagner de la place je l’ai mis dans le repertoire utilisateur).
le-maildir
et c’est la fin ^^, on demande le split config, c’est plus simple pour le noob comme moi de comprendre la configuration du soft :
split-config-exim4

Bon donc voilà, l’ennui, c’est que lorsque l’on se connecte en telnet sur le port 25 de mon serveur, exim donne directement le nom du logiciel et sa version (sacrilège!!!).

Après avoir cherché un petit moment … voici l’astuce du Père GG :
Ouvrir le fichier /etc/exim4/conf.d/main/02_exim4-config_options (avec un éditeur plein de charme genre vi ^^).
et modifier les dernières lignes :

MAIN_SMTP_BANNER = "${primary_hostname} ESMTP Exim ${version_number} (Debian package MAIN_PACKAGE_VERSION) ${tod_full}"
smtp_banner = $smtp_active_hostname ESMTP Exim $version_number $tod_full

pour quelles ressemblent à ceci :

MAIN_SMTP_BANNER = "${primary_hostname}"
smtp_banner = $smtp_active_hostname

Et désormais lors de la connexion en telnet à la bête, ça retourne seulement le nom de ma machine (comme c’est le seul truc que les spammeurs/hackers connaissent déjà, on ne lui apprend donc rien) :

kikoo@WillOwnDaWorld:~$ telnet gaetan-grigis.eu 25
Trying mon.ip.a.moi...
Connected to gaetan-grigis.eu.
Escape character is '^]'.
220 r22686.ovh.net
quit
221 r22686.ovh.net closing connection
Connection closed by foreign host.

Et voilà, sinon, pour les petits désagrément, les stats de tentatives d’utilisation de mon serveur en tant que relais publique :
spam-exim4
En rouge, ce sont les mails bloqués qui n’appartiennent pas à mon domaine … je vais peut-être créer une liste d’ip à bannir ^^.

Et c’est la fin … go spam Da Worldz 😉

Attaque de sites et Script php C99Shell

Bijour à vous …

Aujourd’hui, un gentil script pour détecter de façon TRÈS TRÈS simple les scripts php C99 « illisible » (en eval(gzinflate(base64_decode()) suite à la découverte du piratage du serveur d’un pote (le deuxième quand même … je suis le suivant ;)) sur un site joomla (joomla c’est le mal … mais bon, il l’a voulu, il l’a eu).

Mais avant le script (faut bien le mériter) … mon analyse bourrée de fautes d’orthographes et de grammaires …

Son attaque : une simple sql injection, récupération du pass admin, (10 jours plus tard selon les logs d’apache, le pirate revient après avoir cassé le pass en md5 … il le voulait son accès admin :p), il upload un sympatique C99 depuis la partie admin du site et là terminé, il commence l’envoi de spam et cache des liens plutôt bof sur la homepage (il n’aurait rien mis, on l’aurait pas remarqué le bougre d’âne :p … à part le spam, mais bon c’est autre chose ;)).
A noter quand même, que le pirate semblait à la fois connaitre son boulot, et ne pas connaitre grand chose au serveur web/hacking système :

  • Il a certes exécuté dans le vide pas mal d’sql inj., mais en a aussi écrit plusieurs spécifique pour un module dev unique en son genre … et la requête renvoyée était plutôt sympa, le mec semblait bien connaitre les sites joomla 😉
  • Sa version de C99 m’est inconnu, pas mal de chose en plus, des binder, des systèmes de contrôle de masse pour les bots, un système de mise à jour … (un connaisseur le mec … le tracker pourrait être sympa ^^)
  • Néanmoins … il a oublié de supprimer les logs (on a pu suivre son attaque de bout en bout … toujours avec la même ip), selon les locales de sont navigateurs, il serait russe, utiliserait une ip lituanienne hébergeant des sites européen plutôt spé genre suchelove rogue-av et compagnie (donc proxy, la plage ip est blacklisté ^^).
  • Le serveur embarquait un kernel vérolé permettant un local privilège escalation … la honte, un gosse de 16ans aurait pu choper l’exploit sur milw0rm (paix à son âme) et prendre le root du serveur … déçu

L’analyse :

  • Profil du « spammeur » sans aucun doute … (rien que parce qu’il est russe ?? meuh non c’est pas du racisme ;))
  • L’utilisation d’un script permettant le contrôle à distance depuis des moyens décentralisé (permet de rester caché et de balancer la sauce), ainsi que le système de mise à jour/désinstallation du script automatisé et la modification de la homepage en mettant des liens dans une balise div hidden (un vrai pirate aurait défacé le site pour vanter son coup, ou mis un malware).
  • La non-exploitation du LEP (là faut le faire quand même …)
  • L’envoi de spam ^^.
  • La crackage du md5 peut révéler 2 choses : soit la patience (et ce mec est un fêlé), soit ce pirate est un « gros » spammeur, avec la structure nécessaire pour péter du md5 (le passe choisit était pas mal … majuscules, chiffres et caractères spéciaux, ok y’a pas mal de soft pour ça mais bon) et fait ça toutes la journée d’où les connexions au panel C99 tous les 3 jours.

La conclusion :

A voir les techniques employées, et la volonté du mec (passer 10 jours à cracker un md5, revenir sur le site, modifier le site, configurer sa tambouille et revenir tous les 3 jours … quand même faut le vouloir … ), je ne sais pas si on pourra un jour arrêter le spam (enfin en France quoi), avec le gouvernement qui en est encore au stade du mouchard en hardware, alors que des mecs chope des accès sur des serveurs à tire larigot en s’en foutant royalement du root (je suis blazé sur ce coup :p) pour envoyer des millions de trucs qui seront peut-être lu par deux/trois personnes et qui font ramer des SI dédié au filtrage, travailler des chercheurs à temps complet pour établir des moyens inefficaces (même google en laisse passer, c’est pour dire ^^) et faire réagir de pauvres noob comme moi …

Délivrance … vous avez réussi à tenir jusque là, malgré les fautes, les incohérences, et ma qualité rédactionnelle qu’on ne pourrait même pas utiliser en PQ qu’ça filerait la courante …

Maintenant, le cœur du sujet, je ne vais donc pas présenter le shell C99 (bien connu des pirates de sites web à la chaine …), donc mon script, plutôt basique, que j’ai écris pour vérifier que le pirate n’en ai pas disséminé dans d’autre dossiers sur la machine (et ce fut le cas, d’où ce post).

#!/bin/bash
PATH=${1:-`pwd`}

for i in « $PATH »/*
do
CURRENT_FILE=$i
if [ -d « $CURRENT_FILE » ]
then
echo « DOSSIER EN COURS DE SCAN $CURRENT_FILE »
$0 « $CURRENT_FILE »
else
/bin/cat « $CURRENT_FILE »|/bin/grep -q « eval(gzinflate(base64_decode( »
if [ $? -eq 0 ]
then
echo « LE FICHIER $CURRENT_FILE EST UN C99 SHELL »
fi
fi
done

Et voilà … bien sûr, ce script peut vous permettre de faire des recherches sur d’autre chose, il suffit de changer le contenu du grep, genre chercher une fonction spécifique dans tous les fichiers C de votre appli de 1000 fichiers que votre IDE favorite supporte pas (mais non, ça m’est jamais arrivé), ….

Quoi vous lisez encore ça ?? Bon ben bonne nuit 😉

Marre du spam sur wordpress ??

Plopinou …

Une rapide technique pour baisser d’un nombre assez important le spam sur un blog wordpress, en profitant de la gentillesse des spammers ^^.
En effet, la plupart du temps :

  • les ip tournent (donc impossible de bannir toutes les ip)
  • les adresses mails sont générées à la volées et comme c’est sur le domaine de gmail, bannir le domaine est impossible
  • Les commentaires changent …

Il reste donc une information qu’ils donnent, et qu’ils ne semblent pas changer … l’url de leurs sites, qui terminent toujours par « map.html » … sympa non ??

Donc pour leurs envoyer un message plein d’amour et de paix on peut gentillement modifier le fichier wp-comments-post.php : (après la ligne 38)
[sourcecode language=php]
if(preg_match("#^.*/map.html$#",$comment_author_url))
die("Go home and die!!!");
[/sourcecode]
Et voilà … 90% du spam de vos blogs devraient disparaitre. (reste plus qu’à trouver un filtre pour les casinos et on héradique toutes forme de spam sur les blogs ^^ (pas complexe je pense, mais ça fait un bail que j’en ai plus chopé donc je peux pas créer la regexp :D) ).

Petite note : J’ai testé le code ci-dessous pendant une journée et ma liste de commentaires indésirables est encore vide … ce qui est un miracle !!! Je chopais entre 25 et 50 spams par jour … (ok c’est pas beaucoup … mais c’est quand même ça de moins).

EDIT : Ne pas oublier de refaire la modification, après une mise à jour de wordpress (comme tous les fichiers sont réecrit, on perd les modifications et on remarque tout de suite le spam qui revient ;))