Introduction
L'autre jour, j'ai trouvé quelque chose d'étrange sur Internet. Une grappe d'hôtes exécutait un service non reconnu - tous sur le port 55555, tous sur un système autonome, et tous avec la même bannière de service cryptique à deux caractères.
Une étrange combinaison de caractéristiques
C'est inhabituel - en particulier à cause de cette bannière unique - mais ce n'est pas surprenant. L'internet est un endroit vaste et étrange. Parfois, en fouillant, nous trouvons des choses qui semblent anormales : un groupe d'appareils qui se déconnectent soudainement, des panneaux de contrôle sur l'internet sans authentification, des logiciels qui prétendent être une version alors qu'ils en sont en fait une autre. À première vue, il est trop tôt pour dire si ces phénomènes sont bénins ou préoccupants. C'est pourquoi il est essentiel de disposer d'un outil permettant de recueillir rapidement des informations supplémentaires.
Dans cet article, je vous montrerai comment le faire en utilisant Censys Search.
RĂ©capitulation : Que fait Censys ?
Pour rappel, Censys est une plateforme de découverte d'actifs internet de premier plan. Censys offre la vue la plus complète de l'internet public au monde en analysant en permanence l'ensemble de l'espace d'adresses IPv4 public sur plus de 3 592 ports à partir de multiples perspectives mondiales. Il utilise la détection automatique des protocoles pour identifier les services fonctionnant sur chaque port, tels que HTTP, SSH, etc. Consultez ce guide plus approfondi sur la manière dont Censys scanne l'internet.
Censys Search est un outil formidable pour découvrir les artefacts de l'internet. Il fournit une interface intuitive à nos ensembles de données Hosts et Certificates qui est bien adaptée à la fois à la navigation à vue d'oiseau et à la recherche d'une aiguille dans la botte de foin. Dans le cadre de cet article, nous nous concentrerons sur le jeu de données Hosts.
Évaluer la "bizarrerie" d'une observation
Vous avez trouvé quelque chose d'étrange. Comme tout bon chercheur sur Internet, vous avez besoin d'une sorte de carte pour mener votre enquête. Voici une liste rudimentaire de questions qui pourraient t'aider à comprendre ce qu'est cette chose bizarre :
- Dans quelle mesure cette observation est-elle répandue ? Combien d'hôtes présentent ces caractéristiques ?
- Quels sont les systèmes autonomes dans lesquels ces hôtes sont répartis ?
- Dans quelles régions géographiques ces hôtes sont-ils situés ?
- Quels sont les autres services exécutés par ces hôtes ?
- Y a-t-il eu un pic dans le nombre d'hôtes actifs présentant ces caractéristiques un jour donné ?
S'il est possible de répondre aux quatre premières questions à l'aide de Censys Search, la cinquième question exige que nous élargissions notre palette d'outils. Nous aurons besoin d'accéder à des instantanés du jeu de données Internet universel dans Google BigQuery. Nous allons aborder ces questions dans l'ordre dans les sections suivantes.
Évaluation du champ d'application
Censys La recherche permet de déterminer rapidement l'empreinte publique d'un phénomène Internet.
Chaque hôte particulier dans Censys Search contient des informations détaillées sur son adresse IPv4, son système autonome, ses ports ouverts, les services fonctionnant sur ces ports, et bien d'autres choses encore. Ces attributs sont également des entités interrogeables. Par exemple, nous pourrions rechercher tous les hôtes détectés situés en Irlande qui utilisent SSH. (Voir la documentation de tous les champs consultables qui sont remplis pour chaque hôte).
Lorsque nous sommes confrontés à une multitude de données, nous voulons nous concentrer sur les attributs qui rendent notre hôte observé "bizarre", afin de mieux cibler notre action. En voici quelques-uns qui s'avèrent utiles :
- service.port
- services.nom_du_service
- services.banner
- autonomous_system.name
Revenons à notre première question de recherche :
? ??? Q1 : Combien d'hôtes présentent ces caractéristiques ?
Nous pouvons y remédier en écrivant une requête Censys Search qui récupérera tous les hôtes correspondant à ces caractéristiques. En plus des hôtes correspondants, Search renverra également le nombre total de résultats, le temps qu'il a fallu pour les obtenir, ainsi qu'une répartition des résultats en fonction de quelques filtres de base.
Dans mon cas, je voulais filtrer les hôtes présentant une combinaison spécifique de système autonome, de port, de service et de message de bannière. Ma requête Censys Search ressemblait à ceci :
autonomous_system.asn=ASNx
AND same_service(service.port=PORTx
AND services.service_name='UNKNOWN'
AND services.banner=’BANNERx’
AND services.truncated=`false`)
(les retours à la ligne ont été ajoutés pour plus de clarté)
L'ajout du champ services.truncated=false à la fin de la requête exclura tous les hôtes qui exécutent plus de 100 services, ce qui peut souvent être le signe de pots de miel ou de pseudo-services. Pour en savoir plus sur le champ tronqué, consultez la FAQ sur la recherche.
L'utilisation de " :" au lieu de "=" est la syntaxe permettant d'effectuer une recherche "floue" qui ne nécessite pas de correspondance exacte. C'est la meilleure solution lorsque vous ne disposez que d'un mot-clé ou d'un extrait de texte. Pour en savoir plus sur la manière d'écrire des requêtes de recherche bien formées sur Censys , consultez la documentation sur la recherche et quelques exemples de requêtes Host.
L'exécution de la requête ci-dessus a pris 0,34 seconde et a retourné 303 311 résultats :
Dans l'absolu, ce n'est pas un nombre Ă©norme d'hĂ´tes... mais ce n'est pas non plus un petit nombre. Poursuivons notre liste de questions.
Caractériser un espace de propriété intellectuelle
Maintenant que nous disposons d'une liste facilement indexable de tous nos hôtes "bizarres", nous pouvons approfondir leurs autres caractéristiques à l'aide de la fonction Rapports de l'interface de recherche Censys .
Les rapports constituent un moyen simple de consulter une ventilation des résultats de recherche, ce qui permet de voir comment les résultats de recherche se comparent les uns aux autres en fonction d'un attribut spécifique. Pour y accéder, il suffit de cliquer sur l'onglet Rapport dans le coin supérieur droit de la page des résultats de la recherche.
? ??? Q2 : Quels sont les systèmes autonomes dans lesquels ces hôtes sont répartis ?
Nous pouvons facilement obtenir une ventilation de nos hôtes "bizarres" par système autonome en générant un rapport et en spécifiant l'attribut autonomous_system.name ou autonomous_system.asn comme champ de ventilation.
? ??? Q3 : Dans quelles régions géographiques ces hôtes sont-ils situés ?
Idem, sauf que nous pouvons désormais définir notre champ de ventilation sur l'un des attributs du champ de localisation, selon que nous voulons enquêter à l'échelle des villes, des pays, des continents, etc :
? ??? Q4 : Quels sont les autres services exécutés par ces hôtes ?
Chaque service exécuté sur un hôte est capturé par l'attribut services.service_name. Générez un rapport avec cet attribut défini comme champ de décomposition pour obtenir des informations supplémentaires, en notant qu'il peut y avoir plusieurs services en cours d'exécution sur un même hôte. Gardez un œil sur les services connus pour être fréquemment exploités par les acteurs de la menace, tels que SMB, RDP et FTP.
Voici notre rapport :
Tout en haut, nous voyons qu'environ 99% de nos hôtes bizarres exécutent un service appelé "UNKNOWN". Qu'est-ce que cela signifie ?
Censys peut détecter 105 protocoles de la couche 7 (c'est-à -dire des services). Bien que ces techniques de détection automatique des protocoles soient assez sophistiquées, il arrive qu'elles ne soient pas concluantes, soit parce que le service n'adhère pas au protocole d'une manière ou d'une autre, soit parce que nous ne disposons pas d'un analyseur spécifique au protocole écrit pour lui. Lorsque l'analyseur n'est pas en mesure de reconnaître le service fonctionnant sur un port particulier, il le classe dans la catégorie UNKNOWN. Il pourrait être intéressant d'approfondir la question de la nature de ces UNKNOWN, mais leur présence n'est généralement pas un indicateur de quelque chose de suspect en soi.
En descendant dans le rapport, HTTP est le deuxième service le plus représenté. Cela se vérifie, puisque HTTP représente la plupart des services que nous voyons dans les données de balayage de Censys.
En parcourant l'ensemble de la liste, il semble qu'il y ait un petit nombre d'hôtes exécutant FTP, SMB et RDP. Cela justifie un peu plus de recherche. Cliquez sur l'une des cellules du rapport pour accéder aux résultats de la recherche sur Censys pour ce sous-ensemble d'hôtes. Examinez plusieurs des résultats, en regardant leurs corps de réponse HTTP, leurs messages de bannière, leurs certificats TLS et leurs versions logicielles pour détecter tout ce qui semble anormal. Y a-t-il des éléments JavaScript douteux ? Des certificats expirés ou auto-signés ? Des logiciels associés à des CVE connus ? Cette analyse n'est pas exhaustive, mais elle nous permet de nous faire une idée rapide de ce à quoi nous avons affaire.
Dans l'ensemble, je n'ai rien trouvé de flagrant à ce sujet. Passons à la question suivante !
Analyse des tendances historiques
La visualisation des fluctuations du nombre d'hôtes actifs correspondant à ces caractéristiques au fil du temps est un autre élément d'information essentiel. Une augmentation ou une diminution significative du nombre d'hôtes un jour donné peut indiquer un certain nombre d'événements suspects, par exemple le début potentiel d'un incident menaçant.
? ??? Q5 : Y a-t-il eu un pic dans le nombre d'hôtes actifs présentant ces caractéristiques un jour donné ?
Pour répondre à cette question, nous devons aller au-delà de l'interface Web et de l'API de Censys Search. Les recherches exécutées sur ces plates-formes sont toujours effectuées sur des hôtes figurant dans l'instantané le plus récent de l'ensemble de données universel sur l'internet de Censys. Pour obtenir des données historiques, nous devons exécuter notre requête sur des instantanés de plusieurs jours.
Sur n'importe quelle page hôte de l'interface de recherche, l'onglet Historique permet d'afficher une chronologie historique des événements, mais les recherches utilisant l'historique ne sont pas prises en charge pour le moment. Les données historiques peuvent être extraites en exécutant des requêtes SQL via l'interface BigQuery de Google. Les entreprises clientes qui téléchargent ou accèdent à des instantanés quotidiens dans BigQuery peuvent effectuer des recherches sur Internet telles qu'elles ont été observées par Censys à un moment précis de l'histoire.
La requête SQL ci-dessous compte toutes les adresses IPv4 uniques avec des services qui correspondent à nos critères de recherche entre deux dates, groupées par jour. La fonction LAG() calcule ici la différence de nombre d'hôtes d'un jour à l'autre.
Les critères de la clause WHERE de la requête SQL auront une syntaxe similaire à celle de notre requête Censys Search.
WITH
active_hosts AS (
SELECT
DATE(snapshot_date) AS day,
APPROX_COUNT_DISTINCT(host_identifier.ipv4) AS ipcount
FROM
`censys-io.universal_internet_dataset.universal_internet_dataset`,
UNNEST(services) AS svc
WHERE
autonomous_system.asn=ASNx
AND svc.port=PORTx
AND svc.service_name = 'UNKNOWN'
AND SAFE_CONVERT_BYTES_TO_STRING(svc.unknown.banner)=’BANNERx’
AND svc.truncated=`false`
AND DATE(snapshot_date) BETWEEN '2022-05-01' AND '2022-06-14'
GROUP BY
day
ORDER BY
day
)
SELECT
day,
ipcount,
ipcount - LAG(ipcount) OVER (ORDER BY day ASC) AS delta
FROM
active_hosts
GROUP BY
day,
ipcount
ORDER BY
day
Il peut également être utile de comparer les tendances des hôtes "bizarres" avec les tendances d'un sous-ensemble plus large d'hôtes, tel que le pays ou l'industrie en général. Dans mon cas, je voulais analyser les tendances de tous les hôtes actifs de ce système autonome particulier. Pour élargir le groupe d'hôtes pour lesquels vous obtenez des données historiques, ajustez les filtres sous la clause WHERE dans la requête SQL ci-dessus :
WHERE
autonomous_system.asn=ASNx
AND DATE(snapshot_date) BETWEEN '2022-05-01' AND '2022-06-14'
Cette visualisation ne nous est pas très utile tant que nous ne savons pas comment donner un sens aux schĂ©mas que nous voyons.Â
Lorsque l'on Ă©tudie les fluctuations des hĂ´tes Internet, certains Ă©lĂ©ments doivent nous mettre la puce Ă l'oreille. Toute modification importante et soudaine des donnĂ©es est suspecte, comme un pic ou un creux important un jour donnĂ©. Le premier pourrait indiquer la mise Ă l'Ă©chelle de quelque chose de malveillant, tandis que le second pourrait reprĂ©senter des problèmes de connectivitĂ© tels qu'une panne, une maintenance programmĂ©e ou un incident de sĂ©curitĂ©. En outre, soyez attentif Ă toute tendance dans une ligne de tendance qui ne se reflète pas dans les autres. Ces anomalies peuvent indiquer que quelque chose d'inattendu se produit sur ces machines.Â
Faisons quelques observations initiales sur notre graphique :
- Les tendances observĂ©es chez nos hĂ´tes "bizarres" sont assez proches de celles de tous les hĂ´tes de ce système autonome.Â
- Il y a un creux dans les donnĂ©es vers le dĂ©but du mois de mai, mais il est relativement faible (~50K augmentation) et graduel, se dĂ©roulant sur plus d'une semaine.Â
- Deux creux suivent, mais ils sont tous deux mineurs et s'Ă©talent sur plusieurs jours.Â
- Remarquez l'augmentation continue des deux lignes de tendance Ă partir de la mi-mai et jusqu'en juin.
Conclusion : bizarre, mais pas malveillant
D'après cette brève analyse, il semble plus probable que les hĂ´tes "bizarres" ne soient pas explicitement malveillants. La similitude entre les deux lignes de tendance et le rythme relativement lent des changements dans la visualisation de nos donnĂ©es historiques suggèrent que ces hĂ´tes peuvent faire partie de l'extension prĂ©vue de l'infrastructure de ce rĂ©seau. Il est toujours possible qu'il s'agisse de quelque chose de malveillant, mais nous avons maintenant une hypothèse solide Ă rapporter !Â
N'oubliez pas que l'internet est un endroit gigantesque, Ă©trange et en constante Ă©volution. Avec seulement quelques outils, nous avons pu comprendre une petite partie de ce cyberespace. Si vous savez quelles questions poser, les donnĂ©es de recherche de Censys peuvent vous aider Ă jeter un pont vers les informations qui y rĂ©pondent. Nous disposons dĂ©sormais d'un tremplin prĂ©cieux pour une exploration plus approfondie de ce phĂ©nomène.Â
Résumé
Censys Search est un outil inestimable pour les chercheurs en sécurité chevronnés comme pour les amateurs, car il permet de répondre à des questions sur l'internet. Consultez le Guide de démarrage rapide de Search 2.0 pour une présentation plus complète de l'interface web de Search.
N'oubliez pas : si vous voyez quelque chose d'étrange, suivez la piste. On ne sait jamais ce que l'on peut découvrir. Bonne exploration !