Patator : un bruteforcer en python multi-protocoles

flattr this!

Patator c’est le petit nom donné à ce bruteforcer modulaire écrit en Python. Sa particularité est sa simplicité et les différents protocoles qu’il propose, il juste marche et il est plutôt performant (multithreadé), testé sur un Quadcore, c’est vraiment impressionnant. Il remplira parfaitement son office pour peu que l’on dispose d’un bon dictionnaire bien fourni ou du script qui va bien pour constituer ses propres dictionnaires. Attention pour la syntaxe, le README est dans le fichier python lui même, sa lecture n’est pas optionnelle. Toujours en fonction de la cible et du protocole testé, il se peut que vous ayez besoin de certaines dépendances, par exemple Paramiko pour le module ssh_login.

Installation de Paramiko :

$ wget http://www.lag.net/paramiko/download/paramiko-1.7.7.1.zip
$ unzip paramiko-1.7.7.1.zip
# cd paramiko-1.7.7.1 && python ./setup.py install

Patator est l’oeuvre de Sebastien Macke d’HSC

Les protocoles supportés le sont sous forme de modules à charger :

 * ftp_login     : Brute-force FTP
 * ssh_login     : Brute-force SSH
 * telnet_login  : Brute-force Telnet
 * smtp_login    : Brute-force SMTP
 * smtp_vrfy     : Enumerate valid users using the SMTP VRFY command
 * smtp_rcpt     : Enumerate valid users using the SMTP RCPT TO command
 * http_fuzz     : Brute-force HTTP/HTTPS
 * pop_passd     : Brute-force poppassd (not POP3)
 * ldap_login    : Brute-force LDAP
 * smb_login     : Brute-force SMB
 * mssql_login   : Brute-force MSSQL
 * oracle_login  : Brute-force Oracle
 * mysql_login   : Brute-force MySQL
 * pgsql_login   : Brute-force PostgreSQL
 * vnc_login     : Brute-force VNC
 * dns_forward   : Forward lookup subdomains
 * dns_reverse   : Reverse lookup subnets
 * snmp_login    : Brute-force SNMPv1/2 and SNMPv3
 * unzip_pass    : Brute-force the password of encrypted ZIP files
 * keystore_pass : Brute-force the password of Java keystore files

Usage : 

$ python patator_v0.3.py ftp_login host=ftp.exemple.com user=FILE0 password=FILE1 0=logins.txt 1=passwords.txt -x ignore:mesg='Login incorrect.' -x ignore,reset,retry:code=500 -x reset:fgrep='Login successful'
02:20:53 patator INFO - Starting Patator v0.3 (http://code.google.com/p/patator/) at 2012-04-24 02:20 CEST
02:20:53 patator INFO -
02:20:53 patator INFO - code & size | candidate | num | mesg
02:20:53 patator INFO - ---------------------------------------------------------------
02:21:03 patator INFO - 530 27 | root:root | 1 | Login authentication failed
02:21:03 patator INFO - 530 27 | root:admin | 2 | Login authentication failed
02:21:03 patator INFO - 530 27 | root:cisco | 3 | Login authentication failed
02:21:03 patator INFO - 530 27 | admin:root | 4 | Login authentication failed
02:21:03 patator INFO - 530 27 | admin:admin | 5 | Login authentication failed
02:21:03 patator INFO - 530 27 | admin:cisco | 6 | Login authentication failed
02:21:03 patator INFO - 530 27 | acer:root | 7 | Login authentication failed
02:21:03 patator INFO - 530 27 | acer:admin | 8 | Login authentication failed
02:21:03 patator INFO - 530 27 | acer:cisco | 9 | Login authentication failed
02:21:03 patator INFO - 530 27 | netgear:root | 10 | Login authentication failed
02:21:07 patator INFO - 530 27 | linksys:admin | 17 | Login authentication failed
02:21:07 patator INFO - 530 27 | cisco:root | 13 | Login authentication failed
02:21:07 patator INFO - 530 27 | cisco:cisco | 15 | Login authentication failed
02:21:07 patator INFO - 530 27 | netgear:admin | 11 | Login authentication failed
02:21:08 patator INFO - 530 27 | linksys:cisco | 18 | Login authentication failed
02:21:08 patator INFO - 530 27 | netgear:cisco | 12 | Login authentication failed
02:21:08 patator INFO - 530 27 | cisco:admin | 14 | Login authentication failed
02:21:10 patator INFO - 530 27 | linksys:root | 16 | Login authentication failed
02:21:10 patator INFO - Hits/Done/Size/Fail: 18/18/18/0, Avg: 1 r/s, Time: 0h 0m 16s

Pour ssh maintenant :

$ python patator_v0.3.py ssh_login host=exemple.org user=FILE0 password=FILE1 0=logins.txt 1=passwords.txt -x ignore:mesg='Login incorrect.' -x ignore,reset,retry:code=500 -x reset:fgrep='Login successful'

Options 

Les options proposées se font en fonction des modules que l’on charge, de manière contextuelle donc en fonction de votre cible, voici un exemple pour le module ftp_login relatif à notre exemple ci-dessus :

Module options:
 host : hostnames or subnets to target
 port : ports to target [21]
 user : usernames to test
 password : passwords to test
 persistent : use persistent connections [1|0]
* Allowed format in ()
* Allowed values in [] with the default value always listed first
Syntax:
 -x actions:conditions
actions := action[,action]*
 action := "ignore" | "retry" | "quit" | "reset"
 conditions := condition=value[,condition=value]*
 condition := "code" | "size" | "mesg" | "fgrep" | "egrep"
ignore : do not report
 retry : try payload again
 quit : terminate execution now
 reset : close current connection in order to reconnect for next probe
code : match status code
 size : match size (N or N-M or N- or -N)
 mesg : match message
 fgrep : search for string
 egrep : search for regex
For example, to ignore all redirects to the home page:
... -x ignore:code=302,fgrep='Location: /home.html'
-e tag:encoding
tag := any unique string (eg. T@G or _@@_ or ...)
 encoding := "sha1" | "md5" | "hex" | "b64"
sha1 : hash in sha1
 md5 : hash in md5
 hex : encode in hexadecimal
 b64 : encode in base64
For example, to encode every password in base64:
... host=10.0.0.1 user=admin password=_@@_FILE0_@@_ -e _@@_:b64
Options:
 -h, --help show this help message and exit
Execution:
 -x arg actions and conditions, see Syntax above
 --start=N start from offset N in the wordlist product
 --stop=N stop at offset N
 --resume=r1[,rN]* resume previous run
 -e arg encode everything between two tags, see Syntax above
 -C str delimiter string in combo files (default is ':')
 -X str delimiter string in conditions (default is ',')
Optimization:
 --rate-limit=N wait N seconds between tests (default is 0)
 --rate-reset=N reset module every N tests (default is 0: never reset)
 --failure-delay=N wait N seconds after a failure (default is 0.5)
 --max-retries=N skip payload after N failures (default is 5) (-1 for
 unlimited)
 -t N, --threads=N number of threads (default is 10)
Logging:
 -l DIR save output and response data into DIR
 -L SFX automatically save into DIR/yyyy-mm-dd/hh:mm:ss_SFX
 (DIR defaults to '/tmp/patator/index.html')
Debugging:
 -d, --debug enable debug messages

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>