vendredi 18 mars 2016

Cartographie réseau avec nmap

NMAP

Pour commencer; voici un rappel des types de ports :

   well-known ports     1-1023
   registered ports           1024-49151
   dynamic private ports                49152-65535 

Des statistiques sur l'occurence de ports ouverts sont données ci-dessous. Elles sont particulièrement interessante pour le scan de port UDP. En scannant les 15094 ports les plus fréquents ont atteint un taux de 99%. Cela permet de reduire considérablement le scan UDP car en pratique, les stacks n'acceptent d'envoyer d'un message ICMP / seconde induisant une temporisation de 65535 secondes au minimum pour un unique hôte.  

   %    TCP ports   UDP ports  
          requis     requis
-------- ---------- ---------
  10%        1         5
  20%        2         12
  30%        4         27
  40%        6        135
  50%       1O       1075
  60%       18       2618
  70%       44       5157
  80%      122       7981
  85%      236       9623
  90%      576      11307
  95%     1558      13035
  99%     3328      15094

 100%    65536      65536


Pour visualiser le top des ports utiliser par nmap, il faut scanner une machine (localhost est rapide) avec l'option --top-ports et -v. La sortie grepable sur stdout permet de lister de manière compact.

$ sudo nmap -top-ports 1000 localhost -v -oG -
 

Les comportements selon les types de scan

TCP SYN scan ou scan TCP scan 
State       Probe response
----------- ------------------------------------------------------------
open        SYN,ACK
closed      RST
filtered    no response or 
            ICMP unreachable (type 3, code 1, 2, 3, 9, 10, or 13)
                         1 Host unreachable
                         2 Protocol unreachable
                         3 Port unreachable
                         9 Destination network administratively prohibited
                        13 Communication administratively prohibited by filtering
---------------------------------------------------------------------------------

statless FW with NULL, FIN, XMAS scan probe
State           Probe response
-------------- -----------------------------------------------------------------
open|filtered
closed
filtered       ICMP unreachable error (type 3, code I , 2, 3, 9, IO, or 1 3)
---------------------------------------------------------------------------------


ACK scan
State          Probe response
-------------- -----------------------------------------------------------------
unfiltered
filtered       No response received (even after retransmissions)
filtered       ICMP unreachable error (type 3, code I , 2 , 3, 9, I O , or 13)
---------------------------------------------------------------------------------

Maimon scan
State          Probe response
-------------- -----------------------------------------------------------------
open|filtered  No response received (even after retransmissions)
closed         TCP RST packet
filtered       ICMP unreachable error (type 3, code 1, 2, 3, 9, 10, or 13)
---------------------------------------------------------------------------------

Window scan
State          Probe response
-------------- -----------------------------------------------------------------
open           TCP RST response with non-zero window field
closed         TCP RST response with zero window field
filtered       No response received (even after retransmissions)
filtered       ICMP unreachable error (type 3, code 1, 2, 3, 9, 10, or 13)
---------------------------------------------------------------------------------

UDP scan 
State           Probe response
-------------- -----------------------------------------------------------------
open           Any UDP response from target port (unusual)
open|filtered  No response received (even after retransmissions), use -sV or -A
               limitation dst unreach msg to 1/sec (65536 sec = +18h)
               use host group and parallelisation and version intensity
closed         ICMP port unreachable error (type 3, code 3) 
filtered       Other ICMP unreachable errors (type 3, code I , 2, 9, 10, or 1 3)
---------------------------------------------------------------------------------

Proto scan
State           Probe response
-------------- -----------------------------------------------------------------
open            Any response in any protocol from target host
closed ICMP protocol unreachable error (type 3, code 2)
filtered Other ICMP unreachable errors (type 3, code 1, 3, 9, 1O, or 13)
open|filtered No response received (even after retransmissions)

---------------------------------------------------------------------------------

IP

IPv4 header


IPv6 header


TCP Header




UDP header

SCTP header



ICMP

ICMP Header


Ping


Destination unreachable



La découverte réseau

Lors d'un pentest, la première étape est la découverte réseau. Cette découverte se passe au niveau 2, 3 ou 4 du modèle OSI.


Couche 2 - ARP request
Pour la couche 2, des requêtes ARP (-PR) sur le subnet local est suffisant, l'argument -sn désactive le scan de port. Le scan est rapide :

$ sudo nmap -PR -sn 192.168.1.0/24


Couche 3 - ICMP echo
Pour découvrir des systèmes hors du segment local, il faut oeuvrer au niveau de la couche 3 (IP). Des requêtes ping ou ICMP echo Request (-PE) sans scan de port (-sn) permet de voir les systèmes qui répondent au ping. 

$ sudo nmap -PE -sn 8.8.8.8/24

Avec ICMP, il y a aussi les requêtes de timestamp type 13 (-PP) et du masque de réseau type 17 (-PM)

$ sudo nmap -PP -PM -sn 8.8.8.8

Au niveau 3, il est possible de scanner une stack IP pour découvrir les protocoles actifs comme IPSec (AH, ESP), ICMP, IGMP, GRE, SCTP, etc.

$ sudo nmap -sO 192.168.1.50

Starting Nmap 6.49BETA5 ( https://nmap.org ) at 2016-03-18 14:39 CET
Nmap scan report for Kali (192.168.1.50)
Host is up (0.0000040s latency).
Not shown: 248 closed protocols
PROTOCOL STATE         SERVICE
1        open          icmp
2        open|filtered igmp
6        open          tcp
17       open          udp
103      open|filtered pim
132      open          sctp
136      open|filtered udplite
255      open|filtered unknown

Nmap done: 1 IP address (1 host up) scanned in 1.28 seconds

Un script NSE permet d'obtenir de l'information 
$ sudo map -sU -sV -p 500 <target>
$ sudo nmap -sU -p 500 --script ike-version <target>


Lorsque IPsec est encapsulé sur UDP pour passer la NAT il faut rechercher les port udp/500 (isakmp) et udp/4500 (nat-t-ike). L'utilitiaire ikescan permettra de scanner la passerelle IPsec.

$ ike-scan -v <target>       # IKE v1 main mode
$ ike-scan -v -2 <target>    # IKE v2 main mode
$ ike-scan -v -nat-t         # NAT-Traversal
$ ike-scan -v -A <target>    # IKE v1 aggressive mode

Couche 4 - port scan
Attention, tout équipement de sécurité sur le chemin peut bloquer les requêtes ICMP. Dans ce cas, la solution est d'effectuer une découverte au niveau 4 du modèle OSI avec un scan de ports udp, tcp ou sctp.

$ sudo nmap -PU53 -sn 8.8.8.8

Un scan TCP avec le flag ACK positionné (-PA) permet de traverser du filtrage sans état (stateless) :

$ sudo nmap -PA80 -sn 8.8.8.8

Attention ,un scan SCTP ne passe pas la NAT

$ sudo nmap -sY -p 1234 -n -Pn 192.168.1.50

-n :    ne fait pas de résolution DNS
-Pn : supprime le Ping (s'il est bloqué, la cible n'est pas testée)


Couche 7 - scan applicatif
nmpa permet de scanner les services en écoute pour essayer de détecter le protocole et la version applicative grâce au bannière retournée et à l'envoi de différents sondes (probe).

$ sudo nmap 192.168.1.95 -sV

nmap est également capable d'exécuter des scripts LUA pour effectuer un scan de découverte. Plusieurs catégories existe depuis la découverte jusqu'au scan de vulnérabilité (vuln). L'argument est --script, et peut être accompagné de --script-args pour les arguments, --script-help et --script-trace. Les fichiers LUA de NSE (Nmap Script Engine) portent l'extension .nse. Pour consulter les scripts exisatnts :

$ locate *.nse

Pour utiliser toutes les catégories, il faut préciser all et patienter plusieurs jours... La commande suivante charge les scripts de catégorie default et discovery : 

$ sudo nmap --script default,discovery 192.168.1.95

Dans le même esprit, la version de l'OS peut être déterminé.

$ sudo nmap 192.168.1.95 -sO

Parmis les options intéressantes, il y a --packet-trace qui permet de voir les paquets émis et --traceroute qui effectue un traceroute ICMP.

$ sudo nmap --traceroute --packet-trace -sn  8.8.8.8

Starting Nmap 6.49BETA5 ( https://nmap.org ) at 2016-03-18 14:50 CET
Nmap scan report for 192.168.1.95
Host is up (0.00015s latency).
Not shown: 977 closed ports
PORT     STATE SERVICE     VERSION
21/tcp   open  ftp         vsftpd 2.3.4
22/tcp   open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
23/tcp   open  telnet      Linux telnetd
25/tcp   open  smtp        Postfix smtpd
53/tcp   open  domain      ISC BIND 9.4.2
80/tcp   open  http        Apache httpd 2.2.8 ((Ubuntu) DAV/2)
111/tcp  open  rpcbind     2 (RPC #100000)
139/tcp  open  netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
512/tcp  open  exec?
513/tcp  open  login?
514/tcp  open  shell?
1099/tcp open  rmiregistry GNU Classpath grmiregistry
1524/tcp open  shell       Metasploitable root shell
2049/tcp open  nfs         2-4 (RPC #100003)
2121/tcp open  ftp         ProFTPD 1.3.1
3306/tcp open  mysql       MySQL 5.0.51a-3ubuntu5
5432/tcp open  postgresql  PostgreSQL DB 8.3.0 - 8.3.7
5900/tcp open  vnc         VNC (protocol 3.3)
6000/tcp open  X11         (access denied)
6667/tcp open  irc         Unreal ircd
8009/tcp open  ajp13?
8180/tcp open  unknown
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port514-TCP:V=6.49BETA5%I=7%D=3/18%Time=56EC07B2%P=x86_64-pc-linux-gnu%
SF:r(NULL,2B,"\x01Couldn't\x20get\x20address\x20for\x20your\x20host\x20\(K
SF:ali\)\n");
MAC Address: 08:00:27:5D:2A:61 (Cadmus Computer Systems)
Service Info: Hosts:  metasploitable.localdomain, localhost, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .


Nmap done: 1 IP address (1 host up) scanned in 145.80 seconds

Techniques avancées de scan
Nmap offre plusieurs options permettant d'opérer avec les IDS et FW et de cartographier le réseau.

Lorsqu'un équipement de filtrage est sans état, des paquets TCP sans le flag SYN peuvent passer le filtre et atteindre la cible. nmap permet de gérer finement ce cas de figure.
Parmis les options il ya :

-sN Scan TCP Null
-sF Scan TCP IN 
-sX Scan Xmas
-sA  Scan TCP ACK
-sW  Scan TCP Window (detection ports ouverts lorsque la fenêtre > 0
-sM Scan TCP Maimon avec les flags FIN/ACK. BSD supprime le paquets d'un port ouvert

-sI [zombie]  Scan Idle zombie 

Evasion IDS et Firewall

Des arguments agissent sur le temps. Le timing possède 6 valeurs de -T0 à -T5T0 et T1 permettent de passer sous le seuil d'alerte des IDS et IPS alors que T4 et T5 sont trés bruyant mais rapide. Ces options permettent de rester discret lorsque la cible est dans un environnement surveillé. Dans cas cas, il est également possible de noyer le traffic en ajoutant des paquets possédant des adresses sources aléatoires.

$ sudo nmap -p 80 192.168.1.95 -D RND:5 --packet-trace 2> /dev/null |grep SENT | cut -f1-6 -d' '
SENT (0.0555s) ARP who-has 192.168.1.95 tell
SENT (0.1466s) TCP 192.168.1.50:52262 > 192.168.1.95:80
SENT (0.1466s) TCP 35.170.213.48:52262 > 192.168.1.95:80
SENT (0.1466s) TCP 193.253.102.13:52262 > 192.168.1.95:80
SENT (0.1466s) TCP 181.91.92.201:52262 > 192.168.1.95:80
SENT (0.1467s) TCP 74.238.12.84:52262 > 192.168.1.95:80
SENT (0.1467s) TCP 41.216.142.154:52262 > 192.168.1.95:80

Certains firewall et IDS possèdent des bases de signature pour supprimer les paquets. Certaines soignatures sont basées sur la taille des paquets. Par défaut, les paquets de scan sont à zéro. Le paramètre --data-length permet de spécifier une taille.

$ sudo nmap -Pn -n -p 80 192.168.1.95 --data-length 32 --packet-trace

Starting Nmap 6.49BETA5 ( https://nmap.org ) at 2016-03-18 15:32 CET
SENT (0.0501s) ARP who-has 192.168.1.95 tell 192.168.1.50
RCVD (0.0502s) ARP reply 192.168.1.95 is-at 08:00:27:5D:2A:61
SENT (0.1259s) TCP 192.168.1.50:43532 > 192.168.1.95:80 S ttl=40 id=5711 iplen=76  seq=678458882 win=1024 <mss 1460>
RCVD (0.1261s) TCP 192.168.1.95:80 > 192.168.1.50:43532 SA ttl=64 id=0 iplen=44  seq=4233505341 win=5840 <mss 1460>
Nmap scan report for 192.168.1.95
Host is up (0.00015s latency).
PORT   STATE SERVICE
80/tcp open  http
MAC Address: 08:00:27:5D:2A:61 (Cadmus Computer Systems)

Nmap done: 1 IP address (1 host up) scanned in 0.20 seconds
  
La taille du paquet peut être modifié également en spécifiant un payload ASCII (--data-string) ou hexadécimal (--data) :

$ sudo nmap -Pn -n -p 80 192.168.1.95 --data-string "Hello World"
$ echo -n "Hello" | xxd -p
48656c6c6f
$ sudo nmap -Pn -n -p 80 192.168.1.95 --data 48656c6c6f

Un autre aspect consisyer à rendre aléatoire l'ordre des IP scannées avec l'argument (--randomize-hosts) :

$ sudo nmap -Pn -n -p 80 8.8.8.8/29 --packet-trace --randomize-hosts 2> /dev/null |grep SENT | cut -f1-6 -d' '
SENT (0.0668s) TCP 192.168.1.50:51695 > 8.8.8.14:80
SENT (0.0668s) TCP 192.168.1.50:51695 > 8.8.8.13:80
SENT (0.0668s) TCP 192.168.1.50:51695 > 8.8.8.10:80
SENT (0.0668s) TCP 192.168.1.50:51695 > 8.8.8.15:80
SENT (0.0668s) TCP 192.168.1.50:51695 > 8.8.8.8:80
SENT (0.0668s) TCP 192.168.1.50:51695 > 8.8.8.11:80
SENT (0.0668s) TCP 192.168.1.50:51695 > 8.8.8.12:80
SENT (0.0669s) TCP 192.168.1.50:51695 > 8.8.8.9:80
SENT (1.0679s) TCP 192.168.1.50:51696 > 8.8.8.9:80
SENT (1.0679s) TCP 192.168.1.50:51696 > 8.8.8.14:80
SENT (1.0679s) TCP 192.168.1.50:51696 > 8.8.8.13:80
SENT (1.0679s) TCP 192.168.1.50:51696 > 8.8.8.10:80
SENT (1.0679s) TCP 192.168.1.50:51696 > 8.8.8.15:80
SENT (1.0679s) TCP 192.168.1.50:51696 > 8.8.8.8:80
SENT (1.0680s) TCP 192.168.1.50:51696 > 8.8.8.11:80
SENT (1.0680s) TCP 192.168.1.50:51696 > 8.8.8.12:80

Source Routing
Une autre méthode ancienne, qui s'avère de moins en moins possible et de forcer les routage IP grâce à l'option source routing d'IP (strict ou loose). Normalement, tout routeur récent interdit le source routing par défaut dans la configuration de base. Sur un host dont l'IP forwarding est activé, cela peut être autorisé. Par exemple, pour un scan SYN sans ping ni résolution DNS en mode verbeusx sur la cible 192.168.1.1 en passant par le hop 10.0.0.01 en Loose Source Routing (L) :

$ sudo nmap -vv -n -sS -PN --ip-options "L 10.0.0.1" --reason 192.168.1.1

Pour le Strict Source Routing, il faut spécifier la lettre  'S' et tous les routeurs traversés.
L'utilitaire netcat et la version ncat de nmap.org supporte une option de Source Routing avec l'option -g et -G.

$ ncat -4 -g 192.168.1.1,109.0.118.10   8.8.8.8 53

Route Record
L'option Route Record, permet d'enregistrer les noeuds IP traversés (jusqu'à neuf sauts), malheureusement, aujourd'hui de nombreux équipements suppriment les paquets avec l'option record route activée. Cette option s'utilise avec un ICMP ping et l'option de traçage:


$ sudo nmap -sP -PE -sn --ip-options R -n --packet-trace 10.0.0.1

Les implémentations de ping supportent l'option de Route Record :

$ ping -R 10.0.0.1


TTL
Le TTL retourné dans les paquets IP permet de détecter la présence d'équipement de sécurité en coupure. Lorsqu'ils répondent par un paquet (RST ou ICMP) pour le compte d'un tiers, le TTL permet de constater que ce n'est pas la cible (ou sa passerelle locale) qui répond. Outre l'option traceroute, il est possible de spécifier la valeur du TTL avec l'option --ttl <val>.

$ sudo nmap -Pn -sn --traceroute -n --packet-trace 10.0.0.1
$ sudo nmap -PE --ttl 4 -n --packet-trace 10.0.0.1

Passer sous le seuil de détection des IDS/IPS
Le principe est d'utiliser des temporisations en deçà du seuil supporter par les équipements de sécurité, permettant un scan furtif, sans détection de l'adresse source par un IDS/IPS.
Pour cela, nmap propose l'option -T avec deux valeurs répondant au critète qui sont T0 et T1 ou paranoid (5 mn) et sneaky (15s). Mais les délais inter scan sont définissable avec les options : --max-parallelism, --min-rtt-timeout, --scan-delay.

Les IDS les plus avancés travaillent sur un seuil de scan fixe dans une fenêtre temporelle fixe, généralement exprimé en secondes. L'IDS Snort utilise une valeur par défaut de 15 secondes pour ces deux paramètres. Le comptage concerne une source unique vers plusieurs destinations. Dans ce cas, il faut choisir une valeur permettant de dépasser les 15 secondes, soit en scannant plus de 15 ports ou plus de 15 machines avec un délai entre scan > 1 secondes (il y a 14 délais pour 15 cibles, soit 15/14=1,0714) au minimum de --scan-delay 1075ms. Pour éviter tout parallélisme, il faut préciser l'option --max-hostgroup 1.

$ sudo nmap -sS -Pn  192.168.1.1 --scan-delay 1075ms --max-hostgroup 1 -p1-15

L'alternative est d'utiliser un schell script en vaillant au délai entre chaque itération de boucle d'appel de nmap :

$ for host in 192.168.1.1 192.168.1.75; do sudo nmap --scan-delay 1075ms -p21-23,25,53 $host; usleep 1075000; done

Ce n'est pas suffisant avec un IDS avancé comme Snort, qui possède  une option de fenêtre glissante qui a pour principe d'augmenter la fenêtre temporelle de 0,5 seconde à chaque sonde provenant d'une source. Le délai de départ est fixé à 20 secondes par défaut. Dans ce cas, il faut émettre une sonde chaque 20,1 seconde pour passer sous le radar.

Pour optimiser l'ensembla, avec le script shell, vous envoyer 14 sondes avec un délai de 1075ms puis vous patientez 20,1 secondes pour recommencer.

Les règles de l'IDS Snort détectent les scans selon certains critères.

ICMP type 8 "echo" sans payload:  --data-length <value>
TCP flags FIN,PUSH,URG (Xmas):  --scanflags FINPSH
TCP flags SYN,FIN,PUSH,URG  pour OS détection:  pas de solution sauf dans le source, par contre, l'usage de decoy (-D RND:<num>) avec un nombre important d'IPs inonde l'équipe de réponse à incident. Chaque vérification auprès d'un ISP est chronophage et identifier la bonne adresse est difficile. Attention cependant car de nombreux équipements d'accès Internet (DSLAM, SWITCH, ...) suppriment les paquets uruspant une adresse source.
Si les adresses usurpées ne sont pas accessibles, alors il est facile d'identifier l'IP source. S'il y a trop d'IP source, l'IDS peut conclure à la présence d'un Déni de Service et l'IP peut être bannie.


Pas de résolution DNS
Activer l'option (-n) pour interdire la résolution DNS de chaque cible, cela améliore le temps de scan mais aussi évite de faire fuir trop d'infirmation sur l'adresse source. 

Si le système du pentester n'est pas dans l'infrastructure auditée, alors il est possible d'utiliser des serveurs DNS alternatifs ouverts aux requêtes récursives depuis n'importe où. Dans ce cas, l'option --dns-servers  <serv1[,serv2],...> est intéressante, par example avec les DNS resolver de Google 8.8.4.4 et 8.8.8.8, Level3 4.2.2.1 et 4.2.2.2.

$ host www.free.fr 4.2.2.1
Using domain server:
Name: 4.2.2.1
Address: 4.2.2.1#53
Aliases: 

www.free.fr has address 212.27.48.10

www.free.fr has IPv6 address 2a01:e0c:1::1

$ sudo nmap --dns-servers 8.8.4.4,8.8.8.8 -sL www.free.fr 

Starting Nmap 7.01 ( https://nmap.org ) at 2016-03-22 18:59 CET
Nmap scan report for www.free.fr (212.27.48.10)
Other addresses for www.free.fr (not scanned): 2a01:e0c:1::1
Nmap done: 1 IP address (0 hosts up) scanned in 0.01 seconds

La capture tshark associée donne:
192.168.1.50 -> 192.168.1.1  DNS 71 Standard query 0x2385  A www.free.fr
192.168.1.50 -> 192.168.1.1  DNS 71 Standard query 0x88c7  AAAA www.free.fr
192.168.1.1 -> 192.168.1.50 DNS 99 Standard query response 0x88c7  AAAA 2a01:e0c:1::1
192.168.1.1 -> 192.168.1.50 DNS 87 Standard query response 0x2385  A 212.27.48.10
192.168.1.50 -> 8.8.8.8      DNS 85 Standard query 0x9ada  PTR 10.48.27.212.in-addr.arpa
8.8.8.8 -> 192.168.1.50 DNS 110 Standard query response 0x9ada  PTR www.free.fr

IDS/IPS réactifs
Les équiepements de sécurité qui réagissent aux scans ou aux attaques soit envoir un paquet TCP RST usurpé pour terminer la connexion, soit ils sont en coupure et peuvent agire à leur guise (supprimer les paquets, terminer la connexion, etc.).

Ces types de dispositifs se détectent facilement lorsqu'un scan répond positivement puis par la négative alors qu'une autre adresse source peut accéder au port. Le problème est que l'attaquant peut ainsi faire bloquer des adresses légitimes en usurpant leur adresse source avec l'option -S, pouvant couper d'Internet la cible (par exemple, en usurpant les adresses des 13 serveurs racines DNS). En théorie, ces équipements possèdent une liste blanche, mais en choisissant bien les adresses sources, il est possible de causer de forts dysfonctionnements.

Enfin, l'envoi de paquets provoquant un crash de l'IDS n'est pas impossible. Tout système effectuant un parsing d'une pléthore de protocoles est succeptible d'être vulnérables à des paquets volontairement mals forgés. Un fuzzing de paquets en environnement contrôlé permet de trouver des paquets exploitables. La cerise sur le gâteau survient lorsque la culnérabilité permet l'exécution de code abirtraire et de compormettre l'équipement de sécurité. 

De toute façon, lorsqu'un IDS est présent, il n'est pas toujours correctement configué, il lève de nombreuses alertes consécutives aux nombreux scans et il a toute les chances que les alertes levées par le pentester passent inaperçus au milieu du bruit résiduel, d'autant plus lorsque ce dernier est expérimenté.

Retours inconsistents
Certains équipements rendent difificiles l'interprétaion des résultats et apportent une certaine confusion. Parmis ces équipements il y a les Load balancers, les équipements anycast BGP, les reverse proxy SSL/TLS, les firewalls, les équipements de NAT ou bien les pots de miel.  

Dans ces cas de figure, il faut utiliser l'option --packet-trace ou des outils comme hping ou nping associés à wiresahrk ou tshark/tcpdump

Consistence du TTL
Certains équipements de protection sont en amont des cibles. Un paquet RST avec un TTL inconsistent, indique qu'un équipement en amont a répondu à la place de la cible.
L'option --traceroute est utile pour analyser les TTL.
L'IP ID ou la fenêtre TCP en réponse permet de déterminer lorsque différents équipements répondent (Load Balancers). Leur IP ID se trouvent dans des plages distinctes ou leurs tailles de fenêtre divergent. Dans le me esprit, l'option timestamp de TCP permet d'identifier des systèmes distincts.
nmap possède l'option intéressante de calculer un checksum erroné avec l'option --badsum. Un système quelconque supprime tout paquet ayant un mauvais checksum car il est considéré corrompu. Les équiepements de sécurité, par soucis de performance, ne vérifient pas le checksum (ceci est de moins en moins vrai). Attention, la carte réseau calcule de plus en plus souvent le checksum en matériel. Il faut donc capturer le paquet en sortie de la carte réseau pour vérifier le comportement. Autre option, tester un système connu avec ou sans l'option.  


$ sudo nmap -sS -p 113 -PN --badsum --packet-trace 10.0.0.1

Le RTT est aussi une indication, car le dispositif de sécurité est en amont et effectue que les traitements essentiels alors que la cible exécute tous les contrôles et les données traversent toutes les couches. hping2 avec les options -c 1000 et -i u50000 envoie un milliers de sondes en moins d'une minute. Calculez la médiane plutôt que la moyenne. Effectuez ces scans sur une cible bien identifiée et sur celle qui vous pose un problème et comparer les résultats.


Usurpation d'adresse MAC Lorsque le pentester est sur le même segment de réseau, il peut spoofer son adresse MAC avec --spoof-mac. Il doit être utilisé avec l'option --send-eth pour que Nmap envoie les paquets au niveau Ethernet. La valeur 0 laisse nmap choisir une adresse aléatoire, sinon on peut spécifier la valeur de la MAC ou une string pour le prefixe (ex: 01:02:03:04:05:06deadbeefdead, Apple ou Cisco)

$ sudo nmap -Pn -n -p 80 192.168.1.95 --spoof-mac 0
$ sudo nmap -Pn -n -p 80 192.168.1.95 --spoof-mac 01:02:03:04:05:06
$ sudo nmap -Pn -n -p 80 192.168.1.95 --spoof-mac deadbeefdead
$ sudo nmap -Pn -n -p 80 192.168.1.95 --spoof-mac cisco

La fragmentation complique la taĉhe de nombreux IDS et FW. Cela permet de scanner des systèmes accessibles derrières un FW. L'option -f ou --mtu permettent de fragmenter les paquets. -f fragmente par lot de 8 octets, -ff par  16 octets, etc. --mtu requiert un nombre multiple de 8.

$ sudo nmap -Pn -n -p 80 192.168.1.95  -f
$ sudo nmap -Pn -n -p 80 192.168.1.95  -ff
$ sudo nmap -Pn -n -p 80 192.168.1.95  --mtu 8 
$ sudo nmap -Pn -n -p 80 192.168.1.95  --mtu 16 

L'utilisation d'un proxy chain.
Si un premier système est compromis dans la DMZ ou bien que le penteser ait accès à un service de proxy dans la DMZ, ile peut le brute forcer avec hydra ou installer un proxy. Une fois le système de relais installé, vous pouvez faires des scans full connexion avec -sT.

$ sudo nmap -sT 10.0.0.1 

FTP bounce
Une autre méthode est possible avec le FTP bounce. Un serveur FTP agissant en relais et supportant une authentification anonyme (ou bien vous posséder un compte valide) vous permet de tester le support de FTP bounce avec un script NSE.

$ sudo nmap --script ftp-bounce --script-args ftp-bounce.username=anonymous,ftp-bounce.password=me@hack.org 192.168.1.95 -p 21
...
PORT   STATE SERVICE
21/tcp open  ftp
|_ftp-bounce: bounce working!
...

Si le serveur permet le FTP bounce c'est à dire qu'il est proxy FTP il est possible de l'utiliser comme rebond pour scanner les systèmes derrière le relais FTP. L'argument est de la forme suivante username:password@server:port.

$ sudo nmap -b anonymous:me@hack.org@192.168.1.95:21 10.0.0.1-255

Scripts NSE
Pour utiliser lesscripts NSE, le plus simple est d'utiliser NMAP pour lire la description et fixer les paramètres. Pour lire le code source, rechercher les scripts NSE écrit en LUA avec :

$ locate *.nse

Categories de script NSE
all :       Tous
auth :  Authentification utilisateur.
broadcast : Collecte info en broadcast
brute :     Attaque brute-force sur les mots de passe 
default :   Scripts executés avec l'argument -sC
discovery : Découverte de services et d'hôtes
dos :       Déni de service 
exploit :   Exploitation de vulnérabilités.
external :  Scripts s'appuyant sur des tierce partie
fuzzer :    Fuzzing.
intrusive : Script intrusif 
malware :   Détection de malware
safe :      Scripts considérés comme sûrs 
version :   Versioning avancé
vuln :      Vulnérabilités 

Screendhot de serveur Web

Le binaire wkhtmltoimage permet de faire un screenshot d'une URL et de stocker le résultat dans un fichier PNG ou JPEG. Il s'appuie sur WebKit (wk). La version disponible sur les repositories ne contient pas toujours les deux binaires (wkhtmltopdf et wkhtmltoimage), ce dernier est parfois basent (ex: Ubuntu vs Debian).

$ sudo apt-get install wkhtmltopdf

Lorsque le binaire produisant des images est absent, il faut le télécharger, le décompresser, puis extraire l'archive et copier le binaire dans /usr/local/bin pour qu'il soit dans le PATH :

$ wget http://download.gna.org/wkhtmltopdf/0.12/0.12.3/wkhtmltox-0.12.3_linux-generic-amd64.tar.xz
$ 7z e wkhtmltox-0.12.3_linux-generic-amd64.tar.xz 
$ tar xvf wkhtmltox-0.12.3_linux-generic-amd64.tar
$ cd wkhtmltox/bin/
$ ./wkhtmltoimage http://192.168.1.1  box.png
$ sudo cp wkhtmltoimage /usr/local/bin/


Le scrip NSE qui utilise se binaire est sur github. Le script LUA attend un binaire nommé wkhtmltoimage-386. Il est donc nécessaire de le renommer, de le copier dans le répertoire des scripts NSE. Enfin, il faut mettre à jour la base de script NSE.

$ git clone git://github.com/SpiderLabs/Nmap-Tools.git
$ cd Nmap-Tools/NSE/
$ sudo cp http-screenshot.nse /usr/share/nmap/script
$ sudo nmap --script-update


Voilà, maintenant, la commande pour obtneir une image de la page d'accueil :

$ sudo nmap -A --script http-screenshot -p80 192.168.1.1 

Starting Nmap 7.01 ( https://nmap.org ) at 2016-03-20 18:05 CET
Nmap scan report for 192.168.1.1
Host is up (0.0026s latency).
PORT   STATE SERVICE VERSION
80/tcp open  http    lighttpd
| http-screenshot: 
|_  Saved to screenshot-nmap-192.168.1.1:80.png
|_http-server-header: Server
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: WAP
Running: Linux 2.6.X, Cisco embedded
OS CPE: cpe:/o:linux:linux_kernel:2.6.15 cpe:/h:cisco:wap4410n
OS details: Cisco WAP4410N WAP (Linux 2.6.15), Linux 2.6.15 (likely TP-LINK WAP), Tomato 1.28 (Linux 2.6.22)
Network Distance: 2 hops

TRACEROUTE (using port 80/tcp)
HOP RTT     ADDRESS
1   1.88 ms router (192.168.2.1)
2   3.36 ms 192.168.1.1

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.66 seconds


Un module Python équivalent existe (Peepintom)
Un script shell permet de générer une page de toutes les images de serveurs Web capturée

$ cat previewWeb.sh 
#!/bin/bash

OUT=previewWeb.html

printf  "<HTML><BODY><BR>" >  $OUT
ls -1 *.png | awk -F: '{ print $1":"$2"\n<BR><IMG SRC=\""$1"%3A"$2"\"width=400><BR><BR>" }' >> $OUT
printf  "</BODY></HTML>\n"   >> $OUT


La commande :

$ ./previewWeb.sh

génère un dichier previewWeb.html avec toutes les images et les noms de serveurs Web.

Cheat sheet nmap

Basic Scanning Techniques
nmap [target]       Scan a single target
nmap [target1,target2,etc] Scan multiple targets
nmap -iL [list.txt] Scan a list of targets
nmap [range of IP addresses] Scan a range of hosts
nmap [IP address/cdir] Scan an entire subnet 
nmap -iR [number]   Scan random hosts
nmap --exclude [targets] Excluding targets from a scan
nmap --excludefile [list.txt] Excluding targets using a list
nmap -A [target] Aggressive/advanced scan OS/service 
                              detection (-sV -sC -O --traceroute)
nmap -6 [target] Scan an IPv6 target 

Discovery Options
nmap -sL [targets] List IP address with reverse-DNS (no 
                            scan performed)
nmap --traceroute [target] Traceroute
nmap -R [target] Force reverse DNS resolution (to DNS 
                            server configured on host)
nmap -n [target] No reverse DNS resolution (fast)
nmap --system-dns [target] Force to use local resolver not DNS
                            server lookup
nmap --dns-servers [servers] [target] Alternate DNS servers

                   -=-=- Outside of LAN =-=-
nmap -sP [target]      ping scan + tcp/80 ack (except NSE/ 
                       traceroute) fast (-sP -PE)
nmap -PN [target]  No ping (low, scan all)
nmap -sP -PS [target] TCP SYN port 80 -sP -PS 22-25, 80,113) 
nmap -sP -PA [target] TCP ACK scan
nmap -sP -PU [target] UDP scan
nmap -sP -PY [target] SCTP Init scan
nmap -sP -PE [target] ICMP echo requ. ping (type: req=8, reply=0)
nmap -sP -PP [target] ICMP Timestamp ping (type 13)
nmap -sP -PM [target] ICMP address mask ping (type 17)
nmap -sP -PO [target]  IP protocol scan (default! icmp=1, igmp=2, PinIP=4) 
                        /etc/protocols
nmap -sP -PO [num] [target] IP protocol tcp=6 udp=17 ipv6=41 gre=47 esp=50 ah=51
                             sctp=132
nmap -sP -PO [num] [target]--data [hex] 

                    -=-=- LAN only =-=-
nmap -sP [target]        ARP request
nmap -sP -PR [target] ARP request

Advanced Scanning Options
nmap -sS [target] TCP SYN Scan
nmap -sT [target] TCP connect scan 
nmap -sU [target] UDP scan
nmap -sN [target] TCP Null scan
nmap -sF [target] TCP Fin scan
nmap -sX [target] Xmas scan
nmap -sA [target] TCP ACK scan
nmap -sW [target] TCP Window scan (detect open vs closed ports against certain hosts)
nmap -sM [target] TCP Maimon scan (firewall-evading scan)
nmap --scanflags [flags] [target] Custom TCP scan (-p80 --scanflags            SYN,ACK)
nmap --send-eth [target] Send Raw Ethernet packets
nmap --send-ip [target] Send IP packets
nmap --source-port <num>  Set the source port (same as -g) 
nmap --ttl [value]        TTL value 
nmap --data <hex string> Append a custom payload to sent packets
nmap --data-string <string> Append a custom ASCII string to sent 
                             packets
nmap --data-length <num> Append random data to sent packets
nmap --datadir <dirname> Specify custom Nmap data file location
nmap --reason Display reason for a port
nmap -sO [target] IP protocol scan (fail: ICMP proto unreachable)

Port Scanning Options
nmap -F [target] Perform a fast scan (UDP: 100= ports)
nmap -p [ports] [target] Scan specific ports
nmap -p [port name] [target] Scan ports by name
nmap -p “*” [target] Scan all ports 1-65535 
nmap -p- [target] Scan all ports 1-65535 
nmap -p0- [target] Scan all ports 0-65535
nmap -sU -sT -p U:[ports],T:[ports] [target] Scan ports by protocol
nmap --top-ports [number] [target] Scan top ports 


Version Detection   -  Submit Fingerprints http://www.nmap.org/submit/ 
nmap -O [target] Operating system detection
nmap -O --osscan-guess [target] Attempt to guess an unknown
nmap -sV [target] Service version detection
nmap -sV --version-trace [target]  Troubleshooting version scans
nmap -sR [target] Perform a RPC scan

Timing Options
nmap -T [0-5] [target]  Timing Templates 
nmap --ttl [time] [target] Set the packet TTL
nmap --min-parallelism [number] [target] Minimum of probe parallelization!!!
nmap --max-parallelism [number] [target] Maximum of probe parallelization!!!
nmap --min-hostgroup [number] [targets] Minimum parallel host scan group sizes
nmap --max-hostgroup [number] [targets] Maximum parallel host scan group sizes
nmap --initial-rtt-timeout [time] [target] Maximum RTT timeout
nmap --max-rtt-timeout [TTL] [target] Initial RTT timeout
nmap --max-retries [number] [target] Maximum retries
nmap --host-timeout [time] [target] Host timeout
nmap --scan-delay [time] [target] Minimum Scan delay
nmap --max-scan-delay [time] [target] Maximum scan delay
nmap --min-rate [number] [target] Minimum packet rate
nmap --max-rate [number] [target] Maximum packet rate
nmap --defeat-rst-ratelimit [target] Defeat reset rate limits

Firewall Evasion Techniques
nmap -f [target] Fragment packets
nmap --mtu [MTU] [target] Specify a specific MTU
nmap -D RND: [number] [target] Use a decoy 
nmap -D <decoyl,decoy2,...>    USe a decoy (your IP address is part of scan)
nmap -S <IP source>            Spoofing IP source
nmap -sN [target] TCP Null scan
nmap -sF [target] TCP Fin scan
nmap -sX [target] Xmas scan
nmap -sA [target] TCP ACK scan
nmap -sI [zombie] [target] Idle zombie scan
nmap -sW [target] TCP Window scan (detect open vs closed ports                                      against certain hosts) open ports use a positive 
                               window size while closed ones have a zero window
nmap -sM [target] TCP Maimon scan (firewall-evading scan) probe                                    FIN/ACK. BSD-derived systems simply drop the 
                               packet if the port is open
nmap --source-port [port] [target] Manually specify a source port
nmap --data-length [size] [target] Append random data
nmap --randomize-hosts [target]   Randomize target scan order
nmap --spoof-mac [MAC|0|vendor] [target] Spoof MAC Address
nmap --badsum [target] Send bad checksums

Output Options
nmap -oN [scan.txt] [target] Output in text file
nmap -oX [scan.xml] [target] Output in xml file
nmap -oG [scan.txt] [target] Grepable output
nmap -oA [path/filename] [target] Output all file types
nmap --stats-every [time] [target] Periodically display statistics
nmap -oS [scan.txt] [target] 133t output
nmap --resume <filename> Resume aborted scan by output file normal 
                                   (-oN) or grepable (-oG)
nmap --append-output Append scan results to file (oN or -ox)

$ xsltproc <file.xml> -o <file.html>
$ java -jar saxon9.jar -s:out.xml -o:out.html
$ java -jar xalan.jar -IN out.xml -OUT out.html
$ java XMLNMAPReader out.xml > out.[html/xls]
$ Xalan -a <nmap-output.xml> -o <nmap-output.html>


Troubleshooting and debugging
nmap -h Help
nmap -V Display Nmap version
nmap -v [target] Verbose output (--verbose)
nmap -d [target] Debugging
nmap --reason [target] Display port state reason
nmap --open [target] Only display open ports
nmap --paket-trace[target] Trace packets
nmap --iflist Display host networking
nmap -e [interface] [target] Specify a network interface
nmap --script-trace Show all data sent and received

Service version options
nmap -sV Scan open ports for service/version info
nmap --version-intensity <level> Set from 0 (light) to 9 (try all probes) Probe 
                                  the proto on the port (UDP)
nmap --version-light Limit to most likely probes (intensity 2)
nmap --version-all Try every single probe (intensity 9)
nmap --version-trace Show detailed scan activity (for debugging)

$ sudo nmap -p 1234 -sV --version-intensity 9 192.168.1.50


Nmap Scripting Engine
nmap --script [script.nse] [target] Execute individual scripts
nmap --script [expression] [target] Execute multiple scripts

Script categories : all, auth, default, discovery, external, intrusive, malware, safe, vuln
nmap --script [category] [target] Execute scripts by category
nmap --script [category1,category2, etc]  Execute multiple scripts categories
nmap --script [script] --script-trace [target] Troubleshoot scripts
nmap --script-updatedb Update the script database
nmap -sC [target] Equal --script=safe,intrusive
nmap --script-trace Show all data sent and received

Ndiff
ndiff [scan1.xml] [scan2.xml] Comparison using Ndiff
ndiff -v [scan1.xml] [scan2.xml] Ndiff verbose mode
ndiff --xml [scan1.xm] [scan2.xml] XML output mode


Example

La cheat sheet nmap.

TCP
$ nmap -p 21 -v -oN results.txt --open --script ftp-anon 192.168.1.95 Testing anonymous access
$ nmap -T4 -p 80 -PN --max-rtt-timeout 200ms --initial-rtt-timeout 150ms --min-hostgroup 512 --max-parallelism 512  -n 192.168.1.0/24
  perf:  T4
  reduire les timeout
  parallelisation des hosts par 512
$ nmap -p1-65535 -T4 -A -v -n -Pn --script default,discovery --min-parallelism 10 --max-parallelism 512 192.168.1.95 

UDP
$ nmap -sUV -T4 -F --version-intensity 0 scanme.nmap.org
  --host-timeout  to skip slow hosts
  --min-hostgroup group host to speed up the scan

$ nmap -sU -A -v -T4 --top-ports 1000 --version-intensity 0 -Pn -n scanme.nmap.org
$ nmap -sU -n -T4 -sV -p53,1000 --version-intensity 9 -Pn scanme.nmap.org

SCTP
$ nmap -sY -A -p- -T4 -v -n -Pn 

Proto
$ sudo nmap -sO 192.168.1.95  --packet-trace

IPV6
$ nmap -6 -p-
$ nmap -6 -sU --top-ports 1000
$ nmap -6 -sY -p-
$ nmap -6 ::1                     # scan IPv6 localhost
$ nmap -6 -sT --traceroute ::1

UPnP
$ sudo nmap --script broadcast-upnp-info 

OS
$ nmap -O <target>
$ nmap -O -v  <target>
$ nmap -O -v 192.168.1.81
$ nmap -O -T5 -PE --top-port 3328 --osscan-limit --max-rtt-timeout 100ms 192.168.1.95
$ nmap -O -T5 -PE --top-port 236  --osscan-limit --max-rtt-timeout 100ms --max-parallelism 100 --min-hostgroup 100 -ox output.xml -iL ip_networks.txt


$ sudo nmap –-scanflags SYNRST target    # scan flag custom
$ sudo nmap -pT:21-25,80,U:50-60 target  # tcp: 21-25,80 UDP: 50-60
$ sudo nmap -n -sV 10.150.9.46           # service detection
$ sudo nmap -n -A 10.150.9.46            # Aggressive (-O -sV -sC --traceroute)
                                         # enables detection for OS, version + 
                                           script scanning and traceroute
$ sudo nmap -sP 192.168.1.1/24           # Finding live hosts (TCP ACK & ICMP 
                                           echo request + ARP on LAN)
$ sudo nmap -sP --send-ip 192.168.1.1/24 # idem mais désactive ARP
$ sudo nmap --traceroute traget          # traceroute

Reprise de scan
$ sudo nmap -oG grepable_output -n 10.150.9.15,143
$ sudo nmap --resume grepable_output

HTTP
$ sudo nmap -p80 --script http-google-email,http-email-harvest <target>
$ sudo nmap -p80 --script http-email-harvest --script-args httpspider.maxpagecount=50 <target>
$ sudo nmap -p80 --script http-email-harvest --script-args httpspider.url=/welcome.php <target>
$ sudo nmap -p80 --script http-google-email --script-args domain=insecure.org scanme.nmap.org
$ sudo nmap -p80 --script http-google-email --script-args pages=10 scanme.nmap.org

mercredi 4 novembre 2015

Menace sur les box

Modèle de menaces sur les Box en tout genre.


De nos jours, les pirates sont motivés par les gains financiers. Le hacking d’antan ou les scripts kiddies sont passés en arrière-plan des menaces. 

Les pirates d'hier et d'aujourd'hui

Dans les années 1990, les attaquants étaient motivés par des aspects ludiques et technologiques. C’était l’époque des virus et des élévations de privilège par débordement de tampon et écrasement de pile. Le pirate était motivé par le fait de repousser les limites technologiques et par la recherche d’une certaine reconnaissance...

A l’heure d’Internet, les objectifs ont commencé à changer. La Cybercriminalité s’est professionnalisée et des marchés parallèles dans le Darknet ont été créés pour échanger ou vendre des méthodes d’attaques, des outils ou malwares et des données sensibles exfiltrées.

Maintenant, les Cybercriminels sont des entrepreneurs, les attaques sont plus abouties, et techniquement plus évoluées. Leurs compétences sont souvent en avance sur celle des défenseurs. Les moyens mis en œuvre visent d’emblée une rentabilité financière. Pour atteindre ces objectifs économiques, les pirates s’appuient sur une organisation humaine et technique à l’image d’une entreprise. Il ne s’agit plus d’individus isolés et opportunistes mais d’entrepreneurs n’hésitant pas à créer des sociétés ayants pignon sur rue pour mener à bien leurs projets.

Nouveau malware, Advanced Persistent Threat

Les nouveaux malwares sont aujourd’hui appelées APT (Advanced Persistent Threat) par les services Marketing des industriels de la Cybersécurité. Il s’agit d’une typologie d’attaques qui fait généralement référence à un groupe organisé ayant l’intention de cibler efficacement une attaque contre une entité spécifique en mettant en œuvre les ressources nécessaires pour l’atteinte de l’objectif. 

Le terme est couramment utilisé pour désigner les menaces d’espionnage, de vol d'informations sensibles, mais s'applique également à d'autres menaces telles que la fraude au clic, le pharming

Pharming est une attaque moins connue visant à modifier la configuration DNS d’une victime de façon a rediriger des requêtes légitimes vers des sites contrefaits. Cette attaque est insidieuse car la victime dispose de peu de moyen de détecter l’attaque, particulièrement lorsque la configuration DNS altérée est celle d’une Box  hors du contrôle de la victime. L’intention du pirate est de collecter des renseignements personnels comme des mots de passe, numéro de compte bancaire ou tout renseignement exploitable pour une attaque ciblant un gain financier. 
La fraude au clic est une catégorie d’attaque dans laquelle les victimes sont les annonceurs qui rétribuent les régies publicitaires malveillantes faisant émettre aux internautes des requêtes à leur insu vers des sites rémunérateurs pour le pirate. Ces attaques s’appuient sur les bots et parfois sur les attaques par pharming

L’attaque APT est dite « avancée » au sens où elle utilise un ensemble de moyens pour atteindre un objectif déterminé. Pris individuellement, les composants d’une telle attaque ne sont pas forcément évolués techniquement. C’est en réalité la combinaison de méthodes et d’outils qui en font une attaque avancée.

L’attaque est dite persistante car l’objectif est de rester furtif le plus longtemps possible, par opposition à une attaque opportuniste rapide et visible. L’attaque est ainsi planifiée par les attaquants. Des objectifs précis sont préétablis pour compromettre la cible. Le mot clef de la persistance est en réalité de ne pas être détecté pour durer dans le temps, sauf lorsque l’objectif à atteindre est la destruction comme ce fût le cas avec le malware Stuxnet et les centrales nucléaires Iraniennes.

L’APT est une menace qui implique une importante coordination de moyens techniques, humains et financiers (déploiement de systèmes en ligne, création de société, conception logicielle, rétro-ingénierie de système, etc.). Une APT n’est pas forcément automatisée, cela dépend du contexte.

Les attaques APT sont dites à « signaux faibles » car difficilement détectable mais leur impact est souvent majeur. Elles possèdent des objectifs précis et une stratégie de mise en œuvre ne souffrant aucune improvisation. Les techniques employées sont parfois sophistiquées mais requièrent surtout de la coordination entre les différentes phases de l’infection jusqu’à exploitation des systèmes compromis. L’attaque doit absolument rester furtive car elle vise une rentabilité financière. Toute détection mettra fin à cet objectif économique. Le gain financier n’est pas forcément immédiat, il peut s’agir de la mise en œuvre d’une fraude à grande échelle. L’attaque doit durer jusqu’à l’atteinte de l’objectif si celui-ci à un terme. Dans le cas du vol d’information et d’exfiltration de données, cela peut être très long.Certaines APT peuvent avoir pour objectif une campagne offensive étatique, d’hacktivisme ou de Cyberterrorisme.

En général, elles sont orchestrées par des bandes organisées, des groupes militants, voire des Etats comme ce fut aussi le cas avec l’APT Regin piloté par le GCHQ opérant pour le compte de la NSA en 2013 pour attaquer le GRX (Global Roaming Exchange) du BICS (Belgacom International Carrirer Services) à des fins d’espionnage de la téléphonie en Europe continentale. 

Menaces sur les Box Internet

Box Internet
Le revers de la médaille pour un opérateur d’accès à Internet est que toute compromission de Box engage sa responsabilité parce qu’il est propriétaire de l’équipement et qu’il fournit le service a contrario des fabricants de routeurs domestiques sur étagère, qui se déresponsabilisent de l’usage fait pas les utilisateurs de leurs produits. 

Une évolution récente des attaques positionne le terminal d’accès Internet comme la pierre angulaire pour la fraude à grande échelle. 

Le point d’orgue est qu’un parc de Box, dépourvu de tout anti-malware ou mesures techniques de protection avancées, devient un candidat idéal pour les Cybercriminels. Le principal intérêt des pirates pour les Box est la furtivité de la compromission. Dans un tel cas de figure, la victime est dans l’impossibilité de détecter la compromission et encore plus d’y remédier.  

La typologie des objectifs de telles attaques va de l’installation de bots au pharming pour le détournement DNS ouvrant la voie aux attaques par phishing ou à la fraude au clic. 

La Box est un équipement domestique raccordant toutes les systèmes du foyer quel que soit le type de périphérique ou de système d’exploitation. Même les équipements itinérants, connectés épisodiquement via les points d’accès Wi-Fi des Box sont exposés à ces nouvelles menaces.

Ainsi, une seule compromission de plateforme donne accès à un large spectre de systèmes numériques tels que tablette, ordinateur, smartphone, décodeur TV, lecteur multimédia, smartTV, console de jeu, domotique, chaine Hi-Fi numérique...  

Le retour d’expérience montre que le mode opératoire des pirates consiste majoritairement à compromettre les routeurs domestiques depuis le LAN. En effet, la Box Internet dispose de nombreux services ouverts côtés LAN dont habituellement une interface Web d’administration tandis que l’interface Internet dispose de peu de services ouverts ou bien de services filtrés par les équipements de l’opérateur ou la Box elle-même.

Ce constat contraint les pirates à compromettre une Box en attaquant au préalable un ordinateur du LAN ou, dans le meilleur des cas, par simple rebond sur celui-ci grâce à de simples attaques CSRF.


Menaces sur la Femto

Femto cell
Les chercheurs en sécurité et les Cybercriminels se sont intéressés de près aux Femtocells car il s’agit de petites antennes relais telles qu’une BTS (GSM) ou un eNodeB (3G). Ces types d’équipements, hier hors de portée, deviennent ainsi accessibles à des populations qui en étaient privées. 

Les chercheurs académiques les utilisent pour constituer des laboratoires afin de monter en compétences sur les technologies des réseaux mobiles. Par exemple, la thèse en 2013 d’un doctorant de l’Université TU de Berlin a traité du piratage de Femtocell.

Cet engouement a généré un marché de l’occasion sur Internet pour les modèles de terminaux compromettables. La communauté de la Cybersécurité s’y est ainsi intéressée et les conférences sécurité (dont Defcon, CCC et BlackHat) ont présentés différentes attaques pratiquées contre les Femto.

Parmi les centres d’intérêts, les Femtocells permettent la mise en œuvre économique d’antennes relais pirates pour intercepter des communications téléphoniques et des SMS, usurper des abonnés, frauder sur les appels internationaux, etc.
   
Etant donné qu’une Femto se connecte au cœur du réseau voix de l’opérateur, il s’agit d’un chemin privilégié pour mener des attaques contre les équipements de l’infrastructure de l’opérateur dont les composants sensibles comme le HLR (Home Location Register) sont exposés au travers de l’accès privilégié.

Pour finir, des Cybercriminels ont été de la partie avec de réelles attaques substituants les firmwares de périphériques par des versions sous leur contrôles. Ces difficultés cumulées ont conduit au retrait du parc de terminaux chez certins opérateurs.

Menace sur la Box Domotique

Bien qu’encore confidentiels, les offres de Box domotique présentent un nouveau visage de menaces, portant sur la sécurité des biens et des personnes et allant de la désactivation des alertes incendie, à la prévisualisation intérieure avant cambriolage, en passant par la surconsommation d’énergie, l’accroissement des factures pour intervention du centre de télésurveillance, ou encore la captation d’images personnelles pour rançonnage. 

Ces nouvelles menaces, encore peu fréquentes, peuvent s’enrichir d’un ensemble de menaces pléthoriques selon les domaines d’extension des Box domotiques.


Menace sur les Set-Top-Box

La menace sur les Set-Top-Box (STB) ou décodeur TV est déjà ancienne et bien connue. Aujourd’hui, du fait de l’antériorité du contexte, il s’agit d’équipements dotés de nombreuses fonctionnalités de sécurité et d’un modèle de menaces connu. Les plates-formes matérielles de STB sont en avance techniquement d’un point de vue sécuritaire (comme c’est aussi le cas pour les consoles de jeu).

Le savoir-faire en matière de sécurité des STB s’exporte petit à petit vers les autres écosystèmes de terminaux. Les ayants-droits (Major du cinéma et chaînes de TV) contraignent à l’adoption d’obligations contractuelles, requérant la mise en œuvre d’exigences de sécurité. Une offre de services de sécurité spécialisée existe sur ce type de terminaux, débouchant sur des certifications sécurité propriétaires des terminaux.

Dans cet écosystème, les Cybercriminels cherchent à copier les contenus numériques ou à accéder gratuitement à la TV à péage ou à des contenus vidéo. Récemment, l’ouverture de cette gamme de produit au SmartTV et lecteurs de salon connecté, concentre les attaques sur ces nouveaux venus qui n’ont pas encore tiré parti du savoir-faire de l’écosystème de la PayTV. 

Enfin, pour les STB Broadcast (Staellite, TNT, câble), les attaques par Card sharing sont encore fréquentes. Le concept est de capturer les Control Words (clefs de chiffrement changeant toutes les 10 secondes) en clair circulant sur le lien série entre la carte à puce est le terminal et de les mettre à disposition via Internet.

Menaces sur les consoles de jeu

A rédiger


Industrialisation des attaques

Il est de notoriété publique que la sécurité totale est une chimère. Une entité disposant de ressources techniques, humaines et financières parviendra à défaire les meilleures protections. 

Les bandes organisées de la cybercriminalité contemporaine visent des rendements financiers. Dorénavant, il s’agit d’une logique de rentabilité. Les cybercriminels s’organisent en conséquence comme tout acteur économique crédible. Leur dévolu peut se jeter sur n’importe qu’elle cible leur promettant un retour sur investissement.

Evolution des attaques autour de la Box Internet

L’évolution des attaques ciblant les terminaux fixes est d’exploiter une faille logicielle ou la connaissance d’un mot de passe pour compromettre massivement un système. Pour les Box il s’agit de conduire des compromissions à des fins de pharming pour conduire des attaques par phishing mais aussi plus généralement toute attaque ayant un retour sur investissement pour les pirates. 

Ce nouveau postulat, centré sur la Box, apporte de nombreux avantages aux pirates. Le type de plateforme à circonvenir est plus réduit comparé aux multiples versions de Windows, Apple, Linux et tous les objets connectés multimédia ou non. Ce principe, centré sur la Box, rend la compromission plus furtive car les Box ne possèdent pas de logiciel de sécurité (anti-malware, anti-virus, anti-intrusion) en mesure de détecter une attaque. Même un utilisateur averti ne peut pas détecter ces compromissions s'il ne possède pas d'accès au système.

Après la découverte d’une vulnérabilité exploitable par les pirates, une attaque massive devient industrialisable. Un vecteur de compromission de Box possède un facteur démultiplicateur car la Box est le passage obligé de tous les équipements du foyer, et même des équipements tiers de passage. Du point de vue du pirate, ce sont autant de vecteurs de fraudes intéressants.

Motivation de l’attaque de Box

Tous les arguments évoqués supra font des Box des cibles intéressantes pour les cybercriminels déterminés par l’appât du gain.

Le vol de données et d’identifiants, la redirection des utilisateurs vers des sites malveillants, la capture de communication, etc. sont des actions réalisables pour celui qui contrôle le routeur domestique. 

La position centrale des Box dans les réseaux domestiques en font une cible de choix, de surcroît, elles captent aussi les systèmes itinérants comme des terminaux d’amis ou des nomades du voisinage connectés au point d’accès WiFi de la Box. Les compromissions restent furtives car les Box ne disposent pas de capacité de détection avancée contre les attaques. Elles voient passer tous les trafics vers Internet et peuvent participer à un botnet ou à des fraudes distribuées (phishing, fraude au clic ou à l’affiliation, etc.) sans réel risque de découverte.

Les Cybercriminels recherchent la profitabilité, ce postulat a vu une montée en puissance des attaques massives de pharming et phishing centrées sur des Box comme au Mexique et au Brésil ou encore avec le malware "DNS Changer" sur un spectre d’équipements plus large. 

Les agences étatiques de sécurité de l’information dans plusieurs pays se mobilisent contre ces nouvelles menaces. En France, l’ANSSI a axé ses exercices nationaux Piranet sur ce thème, tandis que les exercices "Cyber Europe" de l’ENISA ont ciblé ces catégories de menaces sur un plan Européen.

Principaux problèmes de sécurité de l’écosystème de la Box

Aujourd'hui, les périphériques réseau tels que les modem/routeurs et autres Box font partie intégrante des environnements domestiques et des petites entreprises. En règle générale, ces équipements sont fournis par le FAI de l'abonné et parfois acheté par l’utilisateur. 

Ces équipements sont généralement administrés par des personnes possédant peu ou pas de connaissance technique particulière. Souvent mal configurés et vulnérables, ces dispositifs deviennent une proie facile pour les pirates, donnant aux Cybercriminels un contrôle rapide et un accès à tous les équipements du réseau domestique compromis. 
Ces équipements en apparence anodins offrent une furtivité idéale pour les pirates, que ce soit pour maîtriser les communications ou héberger des logiciels malveillants.

Les mots de passe connus


Les périphériques réseau domestiques sont conviviaux et requièrent un simple branchement sur le réseau pour fonctionner. Pour en arriver à cet état, la configuration par défaut n’est bien souvent pas ou peu sécurisée et un utilisateur lambda ne changera pas le mot de passe par défaut du routeur nouvellement déployé. Cela ouvre une brèche importante parce que les mots de passe par défaut des équipements sur étagère sont bien connus des pirates. Pour s’en convaincre, rien de tel que d’aller visiter des sites spécialisés et

Les mots de passe par défaut concernent une des plus grandes vulnérabilités de ces gammes d'équipements réseau, mais ce n’est pas le seul. Parfois, un fabricant fourni l'administration sans mot de passe par défaut ou encore accessible depuis l’interface publique sur Internet ou bien même dispose d’un compte pour son support technique sans réelle protection. En cas de découverte de ce mode opératoire, l’affaire peut devenir tragique.

Les vulnérabilité concerptuelles d’UPnP


D’autres vulnérabilités concernent des fonctionnalités comme UPnP (Universal Plug and Play) et le profil IGD (Internet Gateway Device). UPnP est un ensemble de protocoles qui simplifie la coopération entre les périphériques réseau tels que les ordinateurs, les imprimantes, les routeurs/modems, etc. 

UPnP définit la façon dont ces équipements se découvrent automatiquement et établissent une communication. Une fois connecté au réseau, un dispositif compatible UPnP ne nécessite aucune intervention de l'utilisateur pour mettre en place une configuration adaptée. Idéal pour l'utilisateur lambda, UPnP ne possède aucune méthode d'authentification et par voie de fait, n'a besoin d’aucun identifiant pour effectuer des actions critiques comme la modification de paramètres du routeur ou la modification de règle de trafic entrant, traversant le coupe-feu. 

UPnP IGD permet à des applications du LAN de solliciter le routeur pour en modifier sa configuration sans authentification par une simple requête SOAP XML normalisée.
De telles fonctions permettent de modifier la politique de sécurité du firewall du routeur en ouvrant des flux entrant depuis Internet. UPnP IGD spécifie même une fonction pour modifier les paramètres DNS de la Box, heureusement quasiment jamais implémentées. 
Certains routeurs domestiques ne permettent pas d’invalider UPnP. De surcroit, la plupart des routeurs domestiques supportant UPnP IGD, l’active par défaut. 
Les cas les plus néfastes de certaines implémentations d’UPnP IGD ont permis de rendre accessible depuis Internet une interface Web d’administration initialement ouverte que côté LAN ou encore d’utiliser la Box comme proxy ouvert, masquant les IP des pirates avec l’IP publique de la Box.

Ce protocole offre une nouvelle surface d’attaque de choix aux cybercriminels.

Interface Web de gestion

Malheureusement, même les utilisateurs les plus attentifs ne peuvent s'assurer que leurs équipements sont bien sécurisés. De nombreuses vulnérabilités potentielles existent dans le firmware de ces périphériques. En particulier les interfaces Web d’administration sont particulièrement sujettes au contournement de l'authentification par des attaques CSRF, d’autant plus lorsque le mot de passe est connu. 

En général, ni les utilisateurs, ni les fournisseurs ne semblent avoir pris pleinement la mesure de ces menaces.


Panorama de malwares ciblant les routeurs domestiques


Hydra

Le premier malware connu pour routeur domestique est Hydra, apparu en 2008. C’est un logiciel open-source ciblant la plateforme MIPS. Classiquement, il était managé par C&C IRC et son but principal était d'accéder aux routeurs en utilisant des attaques de mots de passe. Sa destination finale visait l'exécution d’attaques DDoS.

L’obtention d’un accès au routeur était basée sur une liste intégrée de mots de passe par défaut ou avec l'utilisation d'un exploit de contournement de l'authentification de routeurs D-Link. L’un de ces descendants, début 2012, nommé Aidra, infecte des routeurs domestiques, des Set-Top-Box, des media center et des caméras IP.

Psyb0t sur MIPS

Psyb0t est un malware décelé in-the-field infectant des périphériques réseau domestique directement entre eux. Découvert par le chercheur australien Terry Baume en janvier 2009, il a été utilisé lors d'une attaque DDOS sur le portail DroneBL par un botnet composé de routeurs infectés par psyb0t.

Psyb0t est un bot IRC qui se connecte au serveur en quête de commandes à exécuter. 
Quand il a été découvert, le bot scannait tous les périphériques du réseau et tentait d'accéder à des routeurs en utilisant des mots de passe par défaut ou via un exploit pour contourner l’authentification (shellcode pour architecture MIPSel). Le malware se propageait à travers le réseau via SSH, telnet ou HTTP, en infectant tous les périphériques vulnérables découverts. Psyb0t est destiné à divers attaques de DDoS, à la propagation virale de routeur en routeur (par mot de passe), à l'exécution de commandes shell et à l'accès par dictionnaire à d'autres services comme MySQL, PHP MyAdmin, serveurs FTP, partages SMB, etc. 

Comme le firmware du routeur est généralement en lecture seule, Psyb0t réside exclusivement en RAM. Un simple redémarrage de l’équipement le désinfecte. Néanmoins, les équipements vulnérables sont aussitôt infectés de nouveau à moins que le mot de passe n’ait été changé ou que le firmware soit mis à jour. Comme les routeurs sont rarement redémarrés, cela permet au malware de résider pour de longue période sans difficulté.

Le 22 mars 2009, son créateur a lancé des commandes d’auto destruction sur le canal IRC. Le botnet avait atteint 100 000 machines infectées. 

Psyb0t a été conçu pour fonctionner sur architecture RISC sous Linux sur plate-forme MIPSel (little endian) comme par exemple les distributions pour routeurs domestiques comme OpenWRT et DD-WRT. MIPS/MIPSel est l’architecture matérielle majoritaire des routeurs domestiques mais aussi professionnels.

Le binaire était compressé et chiffré avec le packer open source UPX (bien que l’en-tête ait été modifiée en extrayant la chaine « UPX ! »). Après décompression, psyb0t cherche s’il est déjà actif sur l’hôte. Dans la négative, il charge le payload depuis un serveur HTTP ou TFTP servi par le routeur attaquant, puis lance l’exécution du code malveillant.
Bien que le botnet Psyb0t ait disparu fin mars 2009, en décembre 2009 des chercheurs de l'Université Masaryk en République tchèque ont découvert un autre bot IRC pour routeur qui ressemble à bien des égards à Psyb0t.

tsunami

Au début mars 2010, une nouvelle version est apparue en Amérique latine, probablement un descendant direct du précédent malware. Ce binaire a été classé comme une variante du Backdoor.Linux.Tsunami car il partage des traits communs avec Tsunami et avec Psyb0t (compression et chiffrement UPX avec la même clef).

SYNful Knock


En septembre 2015, les chercheurs en sécurité de la société FireEye ont révélé l’existence d’un malware ciblant les routeurs Cisco. Bien que le vecteur d’infection ne soit pas identifié, la supposition est qu’il s’agit d’une infection réalisée à cause de la faiblesse de mot de passe et la présence d’accès telnet ou SSH sur des interfaces publiques du routeur.