Statistiques
Statistiques jppJ'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 jppAnalyse 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 :
| 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
2019 | 2020 | 2021 | 2022 | Total | |
185.176 | 158870 | 133921 | 0 | 0 | 292791 |
185.156 | 51644 | 42694 | 111757 | 69295 | 275390 |
185.143 | 71508 | 12558 | 0 | 0 | 84066 |
185.39 | 0 | 66944 | 0 | 0 | 66944 |
185.175 | 25697 | 39718 | 0 | 0 | 65415 |
185.153 | 13308 | 27885 | 0 | 0 | 41193 |
185.191 | 0 | 0 | 17376 | 21976 | 39352 |
185.254 | 26818 | 0 | 0 | 0 | 26818 |
185.209 | 24699 | 0 | 0 | 0 | 24699 |
185.40 | 17307 | 0 | 0 | 0 | 17307 |
185.216 | 0 | 16440 | 0 | 0 | 16440 |
185.236 | 0 | 0 | 12334 | 0 | 12334 |
185.193 | 0 | 11052 | 0 | 0 | 11052 |
185.53 | 10674 | 0 | 0 | 0 | 10674 |
- Sous réseaux 92
2019 | 2020 | 2021 | 2022 | Total | |
92.63 | 23835 | 66509 | 338613 | 35608 | 464565 |
92.118 | 60808 | 57540 | 0 | 0 | 118348 |
92.119 | 80646 | 0 | 0 | 0 | 80646 |
92.154 | 0 | 17543 | 14324 | 0 | 31867 |
92.53 | 12930 | 0 | 0 | 0 | 12930 |
- Sous réseaux 194
2019 | 2020 | 2021 | 2022 | Total | |
194.26 | 0 | 239640 | 18882 | 49802 | 308324 |
194.147 | 0 | 0 | 113721 | 0 | 113721 |
194.31 | 0 | 12404 | 0 | 0 | 12404 |
- Sous réseau du 89
2019 | 2020 | 2021 | 2022 | Total | ||
89 | 89.248 | 43947 | 125048 | 170497 | 25252 | 364744 |
Cliquer ici pour Voir tout le tableau "réseaux".
Le tableau réseau complet
Le tableau réseau complet jppTableau par réseau limité aux origines avec plus de 15000 hits sur une année.
Tableau nombre de connexions par réseau / année | |||||
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 |
0 | 0 | 20118 | 31024 | 91940 | 143082 |
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 |
77 | 32971 | 10519 | 0 | 0 | 43490 |
34 | 0 | 0 | 15183 | 27843 | 43026 |
159 | 0 | 11707 | 15789 | 14345 | 41841 |
35 | 0 | 0 | 13305 | 28489 | 41794 |
54 | 0 | 18795 | 0 | 21978 | 40773 |
106 | 0 | 14058 | 13193 | 13223 | 40474 |
47 | 0 | 0 | 18673 | 20478 | 39151 |
62 | 11752 | 0 | 0 | 26682 | 38434 |
178 | 0 | 13213 | 12122 | 12636 | 37971 |
139 | 0 | 14619 | 12046 | 11068 | 37733 |
64 | 0 | 14479 | 0 | 21518 | 35997 |
37 | 15249 | 16729 | 0 | 0 | 31978 |
66 | 11394 | 20448 | 0 | 0 | 31842 |
10 | 31390 | 0 | 0 | 0 | 31390 |
49 | 0 | 10655 | 14456 | 0 | 25111 |
122 | 10931 | 12034 | 0 | 0 | 22965 |
125 | 11787 | 10138 | 0 | 0 | 21925 |
40 | 0 | 0 | 10616 | 10299 | 20915 |
130 | 0 | 0 | 0 | 20840 | 20840 |
141 | 0 | 0 | 0 | 20515 | 20515 |
182 | 19296 | 0 | 0 | 0 | 19296 |
90 | 19107 | 0 | 0 | 0 | 19107 |
44 | 0 | 0 | 0 | 17673 | 17673 |
111 | 0 | 0 | 0 | 16992 | 16992 |
43 | 0 | 0 | 0 | 16946 | 16946 |
83 | 0 | 15858 | 0 | 0 | 15858 |
118 | 0 | 0 | 0 | 15640 | 15640 |
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 jppLes 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 jppEn 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 à échelle logarithmique :
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 jppJe 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 jppNtopNG 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.
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.
Même chose pour le PORT 22.
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.
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".