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

Bile Suite : outil d’investigation DNS

flattr this!

Qu’il s’agisse d’analyse forensic ou de test offensif d’intrusion, on a régulièrement besoin de faire des recherche sur les DNS, par exemple pour savoir quels sont les domaines hébergés sur un serveur donné. Si des outils en ligne sont souvent très utiles, la consultation d’un navigateur ou un client lourd alors qu’on a le nez dans le shell est pas toujours des plus pratiques. BileSuite est une suite de scripts écrits en Perl dont la vocation est d’investiguer sur les DNS et leurs relations en procédant à divers tests. Sa vocation première, un peu comme le ferait Maltego sous forme graphique, est d’établir des relations entre DNS. BileSuite utilise HTTrack pour le discover, son installation est donc prérequise et sa configuration se fait à la 67 du fichier BiLE.pl (il suffit d’indiquer le path d’HTTrack.

Installation

$ git clone https://github.com/sensepost/BiLE-suite && cd  BiLE-suite

Usage 

$ perl BiLE-weigh.pl exemple.com sp_bile_out.txt.mine sortie.txt

WebSorrow : un scanner de vulnérabilité pour CMS

flattr this!

WebSorrow est un petit scanner de vulnérabilités pour les applications web dont l’objet est de se concentrer sur les 3 CMS majeurs : Drupal, Joomla et WordPress. Il est capable de détecter des collections de plugins de ces CMS, leur version et ainsi d’identifier des vulnérabilités potencielles. A noter aussi qu’il est doté d’un mode « furtif » avec l’option -ninja qui se veut un scan indétectable. Vous pourrez en outre effectuer le balayage en utilisant un proxy avec l’option -proxy. Autre particularité sympathique, il utilise pour le bruteforcing la base de données de Dirbuster

Usage :

HOST OPTIONS:
    -host [host]     -- Defines host to use.
    -proxy [ip:port] -- use a proxy server


SCANS:
    -S    --  Standard misconfig scans including: agresive directory indexing, banner grabbing,
              language detection, robots.txt, HTTP 200 response testing, etc.
    -auth --  Dictionary attack to find login pages (not passwords)
    -Cp [dp | jm | wp | all] -- scan for cms plugins.
                dp = drupal
                jm = joomla
                wp = wordpress 
    -Fd   --  look for common interesting files and dirs
    -Fp   --  Fingerprint http server based on behavior
    -Ws   --  scan for Web Services on host such as: hosting porvider, 
              blogging service, favicon fingerprinting, and cms version info
    -Db   --  BruteForce Directories with the big dirbuster Database
    -e    --  everything. run all scans


OTHER:
    -I      --  Passively find interesting strings in responses
    -ninja  --  A light weight and undetectable scan that uses bits and peices 
                from other scans (it is not recomended to use with any other scans 
                if you want to be stealthy)
    -ua     --  useragent to use (default is firefox linux)

Exemples :

Scan d’une application wordpress :

$ perl Wsorrow.pl -host exemple.org -Cp wp

Exemple d’un scan complet en mode furtif :

$ perl Wsorrow.pl -host exemple.org -e -Ws -ninja