Traditionnellement, Censys se concentre sur les analyses "approfondies", c'est-à-dire les analyses qui effectuent une analyse complète du service sous-jacent et qui répartissent les valeurs clés dans des champs pouvant faire l'objet de recherches ultérieures. Certains protocoles ont été capturés par des bannières de services "UNKNOWN" et n'ont pas été marqués, ce qui permet de les rechercher, mais difficilement. Par exemple, les serveurs IRC peuvent être trouvés sur Censys Search en recherchant "irc" sur le port 6667. Cela permet de réduire le nombre de services, mais passe à côté de nombreux serveurs IRC qui ne présentent pas "irc" dans leur bannière ou qui ne fonctionnent pas sur le port 6667. Cela donne également quelques faux positifs, certains résultats étant simplement des serveurs HTTP sur le port 6667 qui contiennent l'expression "irc".
De nombreux autres protocoles n'ont pas été pris en compte ; ils ne sont pas suffisamment bavards pour fournir des données de bannière sans une sonde spécifique pour les obtenir. Par exemple, le protocole Printer Job Language (PJL dans Censys Search) est intéressant à voir, mais il ne répond qu'à quelques sondes spécifiques, que Censys n'utilisait pas auparavant pour son port par défaut de 9100. Pour nous, cela inclut tous les protocoles UDP, puisque nous ne collectons aucune sorte de données de bannière sur les ports UDP. En outre, dans certains cas de protocoles basés sur TCP, Censys n'a pas encore analysé le port sur lequel ces services fonctionnent généralement.
Censys a entrepris d'accroître sa couverture protocolaire en juin et a commencé à étiqueter les données des bannières qui pouvaient être attribuées à un protocole particulier. Nous avons découvert des services qui n'étaient pas présents dans nos données. La plupart des protocoles que nous avons cherché à ajouter étaient très simples à détecter par rapport à la nuance associée à l'analyse d'un protocole comme le DNS. Le principal obstacle à leur ajout a été l'infrastructure requise pour ajouter la prise en charge d'un nouveau protocole, qui a été conçue en partant de l'hypothèse que les analyses seraient des opérations complexes, consistant en de nombreux paquets envoyés dans les deux sens pour extraire les différents champs de données que Censys souhaite exposer. Dans notre nouveau cas, nous voulions envoyer une sonde très basique et effectuer une comparaison avec la réponse.
Pour répondre à ce nouveau scénario, Censys a mis en œuvre un cadre d'analyse de protocole "léger" au-dessus de notre moteur d'analyse existant. Ce cadre nous a permis d'ajouter rapidement et facilement la prise en charge de nouveaux protocoles sans écrire de code. Nous pouvions spécifier le port et la méthode de balayage dans un fichier de configuration, l'ajouter à la liste des sondes existantes et être en mesure d'ajouter la prise en charge complète d'un nouveau protocole en une heure, ce qui réduisait le temps de développement (souvent) de plusieurs jours nécessaire à l'ajout de ces protocoles dans le cadre existant.
Grâce à ce nouveau cadre, Censys a pu faire passer le nombre de protocoles pris en charge par notre scanner de 40 à 78 en seulement deux jours de hackathon. La majeure partie du travail effectué pour ajouter ces protocoles n'a pas consisté à écrire du code ou à câbler des choses, mais à décider quels protocoles seraient les plus utiles à ajouter à la plateforme et à en prendre l'empreinte. Nous avons repris cet effort pour porter le nombre de protocoles de 78 à 100.
Priorités
Nous avons réduit le nombre de protocoles que nous allions ajouter à partir d'une longue liste de protocoles possibles. Nous avons donné la priorité à l'ajout de protocoles entrant dans l'une de ces catégories :
Protocoles indiquant un problème évident. Par exemple, Kerberos, ARD, ATG, Andromouse.
Protocoles de base de données (Cassandra, Zookeeper, Bolt)
Protocoles de contrôle industriel (GE_SRTP, PCWORX, FINS...)
Des protocoles qui étaient tout simplement... cool ! (et qui ne nécessitaient pas beaucoup d'efforts pour disséquer le protocole). Par exemple, Terraria, QOTD, Teamspeak.
Des avantages rafraîchissants
Nous exposons les données relatives à ces nouveaux protocoles de la même manière que nous le ferions pour une bannière "inconnue" - la seule différence se situe au niveau du champ service_name. Ceci peut être vu en regardant la vue de la table pour un hôte dans la recherche. Notez que les champs de données sont appelés banner_grab bien qu'il s'agisse d'un serveur Murmur.
Auparavant, nous n'exposions pas les données relatives aux services de cette manière. Chaque service ajouté avait un nouveau champ et format dédié (par exemple, services.openvpn), qui était alors permanent. Il était donc difficile d'ajouter une sonde "temporaire". Nous nous serions engagés à supporter un champ pour toujours. Comme nous disposons d'un champ dédié (banner_grab) pour toutes les sondes "légères", nous sommes désormais en mesure d'ajouter une sonde temporaire que nous pouvons supprimer plus tard si elle n'apporte plus de valeur. En outre, cela a permis de modifier les données, car il n'est plus nécessaire de changer les noms des chemins de recherche, mais seulement de modifier la valeur du nom du service. Nous avons déjà dû faire cela lors de notre premier sprint d'ajout de protocole. Nous avons ajouté une sonde pour "RDP_UDP" et avons décidé qu'il serait préférable d'appeler cette sonde RDP. Nous avons renommé le service dans notre fichier de configuration, et les noms problématiques ont été filtrés et remplacés par le nom le plus sensé.
Nouveaux protocoles
Vous trouverez ci-dessous un tableau de tous les services que Censys scanne actuellement, et le nombre de chacun d'entre eux que nous avions sur Internet en date du 2021-08-16. Ces chiffres peuvent varier considérablement, mais en général, ils restent à peu près les mêmes par ordre de popularité. En vert figurent les protocoles que nous avons ajoutés au cours des huit dernières semaines en utilisant le nouveau cadre de recherche. Ce rapport a été généré à l'aide de la fonction de rapport de Search 2.0. Nous avons ajouté manuellement Andromouse ici, car nous ne voyons pas de services actifs pour ce protocole pour le moment.
nom_du_service
compter
HTTP
751232939
INCONNU*
57736598
SSH
25103704
SMTP
17031251
FTP
10060171
NTP
8178526
IMAP
7854411
POP3
7290299
DNS
6203423
RDP
5926254
MYSQL
4801300
CWMP
4681776
TELNET
4188493
PPTP
3458950
RTSP
2999565
SNMP
1683421
OPENVPN
1549015
PORTMAP
1539872
NETBIOS
1504529
PME
1300404
VNC
1053140
POSTGRES
713984
MSSQL
425856
MQTT
411738
IPP
311755
PIGEONHOLE
280083
REDIS
278636
SIP
266511
MDNS
234625
RSYNC
200553
AMQP
178414
XMPP
176961
TFTP
163148
MONGODB
147907
NATPMP
140234
COAP
130349
WS_DISCOVERY
126274
SSDP
103325
KUBERNETES
99080
RIPV1
85936
ORACLE
84369
MEMCACHED
79251
POPPASSD
75301
UBIQUITI
74833
KERBEROS
51294
TEAMSPEAK
46165
X11
44451
PROMETHEUS
44005
IPMI
39224
SCCM
37095
MODBUS
36720
RECHERCHE D'ÉLASTIQUES
34844
IKETTLE
32530
FOX
26336
IRC
24184
VALVE
24061
ARD
20990
CHARGEN
17470
MURMUR
16860
IDENT
16490
GARDIEN DE ZOOS
15992
BACNET
14391
QOTD
13138
KAFKA
12155
SKINNY
10486
NETIS
9070
ICAP
7984
WDBRPC
7884
PJL
7732
PC_ANYWHERE
7297
S7
7027
PIE
6317
TEAM_VIEWER
5778
BITCOIN
5627
XDMCP
4905
BOLT
4811
DIGI
4481
IEC60870_5_104
3508
BEANSTALKD
3338
SENTINEL
3315
CITRIX
2987
RADIUS
2880
BITTORRENT_TRACKER
2831
CASSANDRA
2785
TERRARIA
2528
DB2
2414
CODESYS
2201
LDAP
2090
FINS
1726
STATSD
1502
ATG
1126
DNP3
705
RETHINKDB
662
PCWORX
207
PRO_CON_OS
101
GE_SRTP
75
DICT
27
TORCONTROL
14
BITTORRENT
2
HART
1
ANDROMOUSE
0
*UNKNOWN est inclus à des fins de comparaison avec la question suivante
"Combien de services Censys ne reconnaît-il pas ?