Distributions GNU Linux orientées sécurité

flattr this!

Parler de systèmes d’exploitation, c’est souvent un sujet à trolls. Accessoirement j’utilise de temps en temps Backtrack, mais voilà… sans plus. Pour mes besoins professionnels toutes mes machines embarquent des outils de tests d’intrusion et une petite panoplie d’utilitaires réseau, forensic, wireless etc… Comme tout geek qui se respecte, j’aime avoir mon environnement à moi, configuré aux petits oignons.  Ce petit article n’a pas d’autre prétention que de proposer une manière très simple d’avoir un système orienté sécurité bien à soi et que l’on peut utiliser au quotidien sans se piquer des sueurs froides. Mais bien plus que les outils, ne perdez pas de vue que c’est votre curiosité et votre capacité à vous documenter qui primeront. Ce qui suit est donc centré sur Debian parce que c’est le meilleur OS de l’univers, mais ça fonctionnera probablement pas trop mal sur des OS inférieurs ;)

De nombreuses distributions GNU/Linux orientées sécurité fleurissent sur la Toile, mais  la sécurité, c’est quand même quelque chose d’assez vaste. On pourrait distinguer 4 types de distributions, relatifs à 4 usages, 4 univers de la sécurité informatique :

  • Les distributions orientées forensic
  • Les distributions orientées offensif et tests d’intrusion
  • Les distributions orientées anonymat et protection des données personnelles
  • Les distributions Gateway/firewall/UTM ( Unified Threat Management) orientées protection du patrimoine informationnel (nous ne les traiterons pas ici mais vous pouvez par exemple vous tourner vers Redwall, IPCop, GibraltarEndian…).

Si l’on trouve des distributions orientées offensif qui font très bien leur office en forensic, il est assez improbable que vous trouviez une distribution à vocation offensive et donnant satisfaction en matière de protection des données personnelles. Matriux, une distribution basée sur Debian est cependant un projet à suivre car il propose un arsenal offensif intéressant et se montre assez versatile pour être utilisée au quotidien.

Les distributions orientées forensic et celles orientées tests de pénétration présentent souvent les faiblesses de leurs force, le défauts de leurs qualités. Certaines comme Backtrack propose de nombreux scripts d’intégration d’ applications à usage offensif et offrent au final quelque chose d’homogène et relativement agréable à utiliser, pour peu que l’on sache ce que l’on fait. Mais très vite, on se rend compte qu’une distribution comme Backtrack n’est pas destinée à un usage quotidien. La simple idée d’être en full root avec un X, pour toutes les applications, comme le navigateur ou le client IRC, peut vite donner des sueurs froides aux personnes soucieuses de la protection de leurs données et de la sécurité de leur propre système.

Pour ma part, je considère des distributions comme Backtrack ou Backbox très utiles, quand je ne souhaite pas perdre de temps et que je me trouve devant un cas d’utilisation  particulier qui me demanderait un peu trop de configuration et que le temps me manque. Le reste du temps, je reste très attaché à ma Debian.

Une Debian correctement configurée pourra se montrer assez versatile pour assurer correctement les 3 fonctions relatives aux 3 grands univers de la sécurité informatique qui nous intéressent aujourd’hui (offensif, forensic et protection des données personnelles). Le grand nombre de logiciels packagés par les contributeurs Debian en font un excellent choixpour presque tous les usages (au même titre qu’une Fedora ou qu’une Gentoo diront certains, mais les goûts et les packages managers… ça ne se discute pas). La « meilleure distribution », c’est avant tout celle avec laquelle vous vous sentez le plus à l’aise, celle que vous comprenez le mieux, celle dont vous connaissez les forces et les faiblesses.

Debian offre une base déjà robuste, mais ce n’est pas parceque c’est tout fait qu’il ne faiut rien faire. On préférera donc un installation avec l’option LVM Chiffré. Si vous préférez faire ça post-installation, voici un tutoriel vous expliquant comment chiffrer votre filesystem. Pour durcir votre système, vous pouvez également opter pour l’installation des patchs GRSecurity/Pax, c’est également une bonne pratique.

Voici une commande qui, post-installation, vous permettra de bénéficier de nombreux outils (forensic et offensifs) :

# apt-get install tcpdump wireshark tshark ettercap-gtk dsniff w3af john sipcrack sucrack weplab crack-md5 pdfcrack pyrit fcrackzip zzuf fusil fuzz inguma eresi flawfinder hping3 netsed netcat opendnssec-auditor mz smb-nat ratproxy nast wapiti nmapsi4 packit pnscan rkhunter chkrootkit sslscan ssldump scanssh memdump netsniff-ng yersinia autopsy tct scalpel pasco rdd dcfldd unhide openvas-server openvas-client openvas-plugins-dfsg mtr scamper git subversion python-setuptools python-pastescript

Tous les outils que j’utilise n’étant pas packagés, il va falloir en installer certains manuellement :

  • Metasploit, un outil d’exploitation incontournable
$ wget http://downloads.metasploit.com/data/releases/metasploit-latest-linux-x64-installer.run
# chmod +x metasploit-latest-linux-x64-installer.run && ./metasploit-latest-linux-x64-installer.run
  • Mantra : un firefox avec pas mal de plugins assez sympas
  • Xsser : un petit outil pour tester de manière automatisée les XSS
$ svn co https://xsser.svn.sourceforge.net/svnroot/xsser xsser
# apt-get install python-pycurl
# cd xsser && python setup.py install
  •  Backfuzz : un petit fuzzer assez polyvalent.
$ git clone https://github.com/localh0t/backfuzz
  • Nikto : un autre petit fuzzer celui ci web mais très efficace
$ wget --no-check-certificate https://cirt.net/nikto/nikto-2.1.4.tar.gz && tar -xvzf nikto-2.1.4.tar.gz
  • SQLMap : un incontournable pour tester les vulnérabilités SQL
$ git clone https://github.com/sqlmapproject/sqlmap.git

Concernant la protection de vos données personnelles voici une commande qui vous installera quelques outils bien utiles :

# apt-get install pidgin pidgin-otr icedove enigmail openvpn sweeper bleachbit linux-patch-grsecurity2 gradm2 twinkle pork irssi stunnel autossh

Additionnellement, il est toujours recommandé d’installer Tor (le Bundle est un bon moyen de débuter mais il est toujours bon de mettre un peu les mains dedans pour comprendre un peu les subtilités de configuration du proxy socks pour chiffrer le trafic de toutes ses applications) ou I2P (pour l’anonymisation) ainsi que Truecrypt (chiffrement local et cloaking).

Les distributions orientées anonymat et protection des données personnelles :

Les distributions orientées sécurité offensive

Les distributions orientées forensic

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

XRY : Et paff ton smartphone

flattr this!

Sécurité et smartphones ne font pas vraiment bon ménage, il existe des toolkits très élaborés qui permettent sans trop de peine d’extraire passwords et données de ces téléphones. XRY est l’un d’entre eux, et il est diablement efficace à en croire la vidéo que vous allez découvrir ci-dessous. XRY est développé par Micro Systemation, et c’est une solution destinée à un public autorisé. Comprenez les forces de l’ordre. Il opère aussi bien sur iPhone que sur Android, le tout avec une simplicité déconcertante.