Statistiques

Statistiques jpp

J'ai décidé de regrouper ici quelques résultats statistiques obtenus soit par analyse des "logs" du pare-feu soit plus récemment grâce à Ntop (actuellement 2.4) qui depuis la version 2.2 enregistre dans une base Mysql tous les éléments de connexion. 
Vous pouvez voir ici tout ce qui concerne Ntop et NtopNG. 
Voir ici une mise à jour de septembre 2017. 
Pour en revenir aux statistiques je me suis toujours amusé à essayer de savoir qui s'intéressait à mon petit système. Les analyses des résultats du firewall obligent à traiter les fichiers de Log et à traiter des tonnes de texte pour en tirer quelques résultats. Un script enregistre régulièrement ces données dans une base Mysql, mais seuls les évènements ayant "buté" sur le Firewall sont enregistrés. 
NtopNG qui enregistre tous les flux réseau est encore plus précis puisqu'il ne loupe rien, pas la plus petite connexion qui lui échappe. L'invasion du port 23 (et 2323) ou d'autres plus récents n'échappe pas à sa détection. 
Les statistiques "anciennes" sont reportées dans la section "obsolete".

Origine scans 2019/2022

Origine scans 2019/2022 jpp

Analyse sur 4 ans des origines de scans de ports.

Cette analyse a été réalisée à partir des archives de NtopNG sur les années de 2019 à 2022, elle concerne les réseaux et sous réseaux en ne retenant que les échanges ayant pour résultat zéro octets transmis, c'est à dire ayant touché un port fermé. Ceci peut concerner le scan d’un port fermé ou être le résultat d’une connexion rejetée par le pare-feu.

Les données ont été extraites des tables cd NtopNG par année (environ 1 heure pour une année) puis stockées, toujours par année, dans une base Clickhouse pour exploitation, chaque année comporte plus de 20000 rangs.

Le tableau ci-dessous présente les résultats par réseau / années de 2019 à 2022 + un total des quatre années analysées. L’affichage est ici partiel pour voir l’ensemble du tableau (40 principaux réseaux d’origine) il suffit de cliquer ICI.   
 

Tableau nombre de connexions par réseau / année

Réseau   
 

2019

2020

2021

2022

Total

45

127614

680782

395367

177568

1381331

185

472940

410732

199090

143191

1225953

92

183047

148454

361913

50725

744139

194

0

259002

140492

54501

453995

89

48647

133481

177176

28607

387911

80

59955

214079

35433

60775

370242

193

37462

80447

126844

90183

334936

195

0

260603

65560

0

326163

192

0

64530

73939

95801

234270

167

0

23434

69539

127645

220618

81

185096

15577

0

13995

214668

91

0

21066

80677

104760

206503

94

35042

103459

32216

31135

201852

162

0

36785

60644

67256

164685

104

19392

35984

32116

55440

142932

51

11805

95836

21155

12143

140939

87

0

83418

23405

31975

138798

176

19335

61102

10697

45294

136428

212

0

75795

21566

31786

129147

78

17665

12753

15993

56747

103158

103

0

32713

33901

22814

89428

114

0

0

41011

44839

85850

5

24988

12904

10859

28336

77087

46

17659

18460

15228

21562

72909

52

17073

0

17523

33920

68516

198

20607

21165

0

22341

64113

85

45474

18124

0

0

63598

79

0

22898

27075

11575

61548

93

0

59626

0

0

59626

74

0

25059

33807

0

58866

17

16210

15394

12644

11792

56040

213

18685

23991

0

13112

55788

157

12277

11707

16488

14912

55384

173

0

0

22959

27429

50388

123

0

0

13599

36769

50368

172

13787

16634

0

15094

45515

146

0

12914

15387

15742

44043

209

0

13764

19583

10419

43766

216

29964

13689

0

0

43653

On remarque de fortes variations sur certains réseaux, probablement dues à un contrôle, ou absence de contrôle, du FAI responsable selon les années ?

Le réseau "45" fait très fort : 680000 hits en 2020 un peu plus de 1800 par jour !   
 

Pour un peu plus de détail j’ai extrait le détail des données par sous-réseau, par exemple pour le réseau « 45 » cela donne :   
 


Sous-réseau

2019

2020

2021

2022

Total

45.129

0

400745

13983

0

414728

45.143

0

89269

102802

44269

236340

45.146

0

27320

137920

0

165240

45.155

0

15790

75393

48033

139216

45.136

97783

23284

0

0

121067

45.134

0

21852

22726

11801

56379

45.140

0

33094

0

0

33094

45.141

0

17275

0

0

17275

45.227

14980

0

0

0

14980

45.145

0

13854

0

0

13854

45.61

0

0

0

12583

12583

45.93

0

0

0

10578

10578


 - Sous réseaux 185 


 
2019202020212022Total
185.17615887013392100292791
185.156516444269411175769295275390
185.14371508125580084066
185.390669440066944
185.17525697397180065415
185.15313308278850041193
185.19100173762197639352
185.2542681800026818
185.2092469900024699
185.401730700017307
185.2160164400016440
185.2360012334012334
185.1930110520011052
185.531067400010674

- Sous réseaux 92


 
2019202020212022Total
92.63238356650933861335608464565
92.118608085754000118348
92.1198064600080646
92.15401754314324031867
92.531293000012930

-  Sous réseaux 194 


 
2019202020212022Total
194.2602396401888249802308324
194.147001137210113721
194.310124040012404

-  Sous réseau du 89

 2019202020212022Total 
8989.2484394712504817049725252364744

Cliquer ici pour Voir tout le tableau "réseaux".


 

 

Le tableau réseau complet

Le tableau réseau complet jpp

Tableau par réseau limité aux origines avec plus de 15000 hits sur une année.

Tableau nombre de connexions par réseau / année

 
2019202020212022Total
451276146807823953671775681381331
1854729404107321990901431911225953
9218304714845436191350725744139
194025900214049254501453995
894864713348117717628607387911
80599552140793543360775370242
193374628044712684490183334936
1950260603655600326163
1920645307393995801234270
16702343469539127645220618
8118509615577013995214668
9102106680677104760206503
94350421034593221631135201852
1620367856064467256164685
00201183102491940143082
10419392359843211655440142932
5111805958362115512143140939
870834182340531975138798
17619335611021069745294136428
2120757952156631786129147
7817665127531599356747103158
103032713339012281489428
11400410114483985850
52498812904108592833677087
461765918460152282156272909
52170730175233392068516
198206072116502234164113
8545474181240063598
79022898270751157561548
930596260059626
7402505933807058866
171621015394126441179256040
213186852399101311255788
1571227711707164881491255384
17300229592742950388
12300135993676950368
172137871663401509445515
146012914153871574244043
209013764195831041943766
21629964136890043653
7732971105190043490
3400151832784343026
159011707157891434541841
3500133052848941794
5401879502197840773
106014058131931322340474
4700186732047839151
6211752002668238434
178013213121221263637971
139014619120461106837733
6401447902151835997
3715249167290031978
6611394204480031842
103139000031390
4901065514456025111
12210931120340022965
12511787101380021925
4000106161029920915
1300002084020840
1410002051520515
1821929600019296
901910700019107
440001767317673
1110001699216992
430001694616946
830158580015858
1180001564015640

On peut remarquer là aussi de grosses variations d'une année sur l'autre, mais surtout dans les 10 premiers une certaine "constance" marquant probablement des FAI très permissifs.

La mode dans les attaques WEB

La mode dans les attaques WEB jpp

Les attaques de serveurs WEB. 
Les nouveautés de ces derniers mois :

  • 21 Février 2021 : les attaques liées à l'utilisation de Git pour la maintenance de l'arborescence des serveurs Web se multiplient voir article spécifique.
  • Septembre 2020 à Janvier 2021 : Attaque VXWORKS voir article spécifique.
  • Juin 2020 : La dernière attaque "à la mode " : GET /?q=user

Je ne sais pas encore à quoi est liée cette attaque ... mais j'en ai récupéré plus de 20 sur une seule journée ! 
Encore beaucoup de "2 accès de longueur 14 et 4 sans aucun header". Tiens je n'en ai plus vu depuis quelques mois (Mai 2021). et toujours les recherches de "/wp-login.php" prélude (si réussi) à diverses attaques.

Attaques "TYPE" : 
Il existe une multitude d'attaques sur les sites Web depuis tous les "hits" sur /phpmyadmin, /myadmin, /pma/...... /wp-login 
d'autres sont plus ciblées, par exemple /HNAP1 orientée vers certains routeurs ... 
Mais il existe des modes, diffusion d'un nouveau script de recherche de vulnérabilités en général, on voit de telles attaques pendant des périodes plus ou moins longues et elles peuvent représenter un volume très important, les dernières en date concernent deux Url spécifiques :

  • .env, ça continue depuis des mois à faible débit toutefois, existe encore en 2024.
  • /.git/HEAD ou /.git/config, existe là aussi toujours en 2024.
  • Une nouvelle lubie (?) les URL commençant par "//", j'ai même vu "///",je ne sais pas ce que c'est censé faire, mais sur un serveur Apache les "//" sont convertis en "/" pour l'accès ce qui ne change donc rien.

".env" déjà rencontré quelques fois sur une longue période présente ces trois derniers jours une quantité plus de 10 fois supérieure aux autres attaques. 
Il semble que ".env" soit utilisé par certains sites pour stocker des paramètres tels que les accès à la base de données ... si ces fichiers sont accessibles c'est la porte ouverte pour accéder aux données des utilisateurs ... et/ou pirater le site. 
J'ai aussi vu des sites avec un suivi de version assuré par un gestionnaire de version (git), l'accès à HEAD doit pouvoir révéler des choses intéressantes sur le site. 
Dans la plupart des cas il s'agit d'un non-respect des bonnes pratiques car ce type de fichier ne doit pas être "visible de l'extérieur" car contenant des données qui peuvent être sensibles : accès à la base, mot de passe administrateur .... 

Liste d'URL d'attaques courantes :

  • /CHANGELOG.txt  ou LICENSE pour déterminer les logiciels et versions utilisés
  • /jmx-console   pour ceux qui laissent une console java accessible sur internet, c'est une invitation aux tentatives de brute-force
  • /myadmin et variantes phpmyadmin ... PhPMyadmin ... php-my-admin ... /pma
  • /db et variantes /dbadmin ... /admin
  • sans oublier /wp-admin, /wp-login, /wp-content
  • ni non plus les url contenant ../../../ pour essayer de "remonter" dans l'arborescence des fichiers du serveur et, par exemple d'accéder au Graal : le fichier /etc/passwd sur une machine Unix/Linux.
  • Assez récemment on a vu apparaître la mode du // en début d'URL, je n'ai trouvé aucune information sur cette particularité.

J'arrête ici cette liste qui pourrait être longue ... mais qui dans beaucoup de cas cherche à exploiter des "erreurs" de configuration ou des imprudences telles que des couples user/mot de passe faibles voire très faibles ou a des valeurs par défaut, qui n'a jamais vu des accès administrateur "protégés" par admin/admin. 
Une autre "attaque" mais je n'ai pas réussi à trouver à quel vulnérabilité/logiciel elle était destinée, c'est la réception de deux paquets HTTP sans signification particulière, le premier avec un contenu de 14 octets, le second de 4 octets. Quel esprit vicieux a pu inventer pareil scénario. J'en ai vu passer des dizaines en une semaine, puis, après une accalmie, c'est reparti. 

Depuis quelques jours (mai 2021) je trouve des recherches de /telescope .... Il y a toujours des nouveautés correspondant à des failles trouvées et publiées sur diverses applications.

N'oubliez pas d'effectuer les mises à jour de sécurité de tous vos logicieis ...

Stat 2019 sur ports

Stat 2019 sur ports jpp

En regardant les rapports sur les nombreux "hits" sur le firewall ou dans les rapports IDS j'ai constaté la recrudescence de certains ports et une diminution pour d'autres. Afin de quantifier un peu cette impression je me suis penché sur les archives de NtopNG. Devant le volume j'ai limité mes ambitions à faire un inventaire des 10 "meilleurs" ports (les plus demandés par les "vilains") sur les six premiers mois de 2019 pour plus ample information. 
Bien que je dispose de données archivées depuis mi 2016 j'ai décidé de me limiter au premier semestre 2019 car je réalise ceci sur mon portable (outil de vacances). 
Cela représente quand même presque 28 millions de rangs dans la base Mysql. J'ai donc extrait les six mois de janvier à juin 2019 de la base archives et je les ai transférés dans le portable pour exploitation. 
J'ai par ailleurs limité la recherche aux adresses IP figurant dans différentes "black lists" ce qui représente quand même environ 135000 "Black" adresses et #170000 hits sur le semestre pour les 10 ports  les plus fréquents ! Ceci parmi les 30000 ports utilisés entre 1 et 32000 les vilains ont de la constance. 
Tableau des 10 ports les plus fréquentés :

Port           NB hits

1900             41 935
    23              32 226
   445            26 227
8545            11 183
3389             9 513
     22              9 352
     81              7 024
5060             6 994
1433              6 305
8080            5 851

Total       156 610

Deux graphes représentant l'évolution par semaine sur le premier semestre 2019 :

Graphe à échelle linéaire : 
Graphe (echelle linéaire) semaine par semaine

Graphe à échelle logarithmique : 
Graphe à échelle logarithique 
On constate aisément sur les graphes que le port 1900 bat tous les autres sauf quelques pointes du port 23 qui reste très vaillant ( à la recherche d'objets connectés mal protégés ?). 
Le port 445 a subi une inflation importante à partir de début mars et il me semble qu'il reste actuellement très "demandé". 
Le port 8545 (lié à des vols sur Ethereum ?) a présenté une pointe d'activité à la mi-février.  
Le port 1433 (Lié à Sqlserver) a diminué de manière importante dès début mars et est passé de presque 1000 hits par semaine à moins d'une centaine sur le deuxième trimestre. 
Pour les autres ports la demande semble à peu près constante. 
Il semble donc y avoir un important effet de "mode" sur certains ports, peut-être la diffusion de failles de sécurité exploitables qui expliqueraient l'engouement des méchants pour ces ports.

Scripts amusants

Scripts amusants jpp

Je me suis aperçu que depuis quelques temps beaucoup de tentatives de connexion (par exemple sur le port 23) étaient originaires du Vietnam. 
Sur mon pare-feu f'ai la possibilité de "bloquer" les IP d'un pays entier et le Vietnam a rejoint la Russie et la Chine dans la liste des pays bloqués. 
J'ai voulu établir un petit palmarès des IP ayant tenté au moins une connexion, Ces adresses IP sont enregistrées par Ntop et un petit script personnel stocke les IP enrichies dans une table spécifique. 
J'ai créé une table des pays "bloqués" au niveau du parefeu :

create table PAYS_BLOQUE 
(CODPAYS        char(2) 

engine MyISAM; 
insert into PAYS_BLOQUE (CODPAYS) values ('CN'); 
insert into PAYS_BLOQUE (CODPAYS) values ('RU'); 
insert into PAYS_BLOQUE (CODPAYS) values ('VN');; 
insert into PAYS_BLOQUE (CODPAYS) values ('HK'); 
insert into PAYS_BLOQUE (CODPAYS) values ('BR'); 
commit;

En combinant cette "nouvelle" table avec la table "IPV4_DOMAINE" par un ordre SQL amusant :

select xx.CODPAYS,xx.CTR, 
        (case pb.CODPAYS 
        when pb.CODPAYS is null  then    'BLOQUE' 
        else '' end) BLOQUE 
from 
    (select CODPAYS,COUNT(*) CTR 
    from IPV4_DOMAINE 
    group by 1 
    ) xx 
left join PAYS_BLOQUE pb on (xx.CODPAYS = pb.CODPAYS )     
where xx.CTR > 150 
order by 2 desc ;

on obtient le palmarès suivant :

+---------+------------------------+------+--------+ 
| CODPAYS | FR_NOM                 | CTR  | BLOQUE | 
+---------+------------------------+------+--------+ 
| US      | États-Unis             | 2757 |        | 
| CN      | Chine                  | 1317 | BLOQUE | 
| VN      | Viet Nam               | 1279 | BLOQUE | 
| BR      | Brésil                 | 1093 | BLOQUE | 
| FR      | France                 |  828 |        | 
| KR      | République de Corée    |  590 |        | 
| TW      | Taïwan                 |  562 |        | 
| RU      | Fédération de Russie   |  558 | BLOQUE | 
| IN      | Inde                   |  434 |        | 
| TR      | Turquie                |  321 |        | 
| NL      | Pays-Bas               |  266 |        | 
| CO      | Colombie               |  236 |        | 
| RO      | Roumanie               |  223 |        | 
| DE      | Allemagne              |  211 |        | 
| PH      | Philippines            |  166 |        | 
+---------+------------------------+------+--------+ 
15 rows in set, 4 warnings (1,93 sec)

Les pays bloqués sont parmi les leaders en nombre d'IP ayant tenté d'établir des connexions. 
Plus de 1300 adresses chinoises , presque 1300 adresses vietnamiennes et plus de 1000 adresses brésiliennes ont tenté de se connecter et ont été rejetées par le parefeu. 
J'ai controlé par ailleurs qu'aucune adresse de ces pays n'avait recu un octet en retour (sum(OUT_BYTES)) reste à zéro. On voit aussi dans ce tableau que les russes sont en baisse, ils se consacrent probablement à des activités plus "rentables" que de tenter de pénétrer les machines des autres. 
Les brésiliens, comme les vietnamiens sont relativement nouveaux mais arrivent fort eux aussi. 
Pour s'amuser un peu plus et voir quels ports sont les plus utilisés voir ici
J'ai utilisé ici encore une nouvelle table pour avoir les noms des pays en clair :

desc PAYS; 
+-----------+-------------+------+-----+---------+-------+ 
| Field     | Type        | Null | Key | Default | Extra | 
+-----------+-------------+------+-----+---------+-------+ 
| CODPAYS   | char(2)     | NO   | PRI |         |       | 
| CODPAYS_3 | char(3)     | YES  |     | NULL    |       | 
| ENG_NAME  | varchar(40) | YES  |     | NULL    |       | 
| FR_NOM    | varchar(40) | YES  |     | NULL    |       | 
+-----------+-------------+------+-----+---------+-------+

Cette table ("dump" Mysql) est disponible ici en téléchargement.

Statistique ports 22/23 2016/2015

Statistique ports 22/23 2016/2015 jpp

NtopNG conserve la trace de toutes les connexions et je dispose de l'historique depuis aout 2016 ce qui représente actuellement plus de 8 ans de connées et 750 millions de rangs dans la base de données.
J'ai voulu voir sur deux ports "typiques", 22 et 23, le nombre d'adresses IP et le nombre de hits par mois, un "petit" ordre SQL, une bonne dizaine de minutes d'attente ( la machine "Clickhouse" est HS !) et le résultat est là.

Quelques remarques :
Mise en place, en juin 2019, d'un firewall plus restrictif et d'une "mémoire" des "affreux" qui restent donc bloqués "un certain temps" et utilisation de différents sites fournissant des listes d'adresses "peu fiables" ou carrément à éviter ...

Port 23.
Graphe port 23

On remarque bien l'inflexion des courbes milieu 2019, comme quoi mémoriser les IP des "vilains" sert à quelque_chose ...
Après 2019 on ne "voit plus rien", voici le détail en changeant d'échelle.
  Graphe port 23

Même chose pour le PORT 22.
Graphe port 23

On remarque bien l'inflexion des courbes milieu 2019, comme quoi mémoriser les IP des "vilains" sert à quelque_chose ...
Après 2019 on ne "voit plus rien", voici le détail en changeant d'échelle.
  Graphe port 23

On remarque l'affaiblissement progressif des courbes au fur et à mesure de l'amélioration de le base de données des IP "méchantes".