Ir al contenido
Únase a Censys el 10 de septiembre de 2024 para nuestro Taller de Caza de Amenazas en San Francisco, CA | Regístrese ahora
Blogs

Escaneado ligero de protocolos

Tradicionalmente, Censys se ha centrado en escaneos "profundos" - escaneos que hacen un análisis completo del servicio que hay detrás y desglosan los valores clave en campos en los que buscar más tarde. Algunos protocolos se capturaban mediante banners de servicios "DESCONOCIDOS" y simplemente no se etiquetaban, lo que permitía buscarlos, pero no fácilmente. Por ejemplo, los servidores IRC se pueden encontrar en Censys Search buscando "irc" en el puerto 6667. Esto reduce los servicios, pero pasa por alto muchos servidores IRC que no presentan "irc" en su banner o no funcionan en el puerto 6667. También da algunos falsos positivos, con algunos resultados que sólo son servidores HTTP en el puerto 6667 que casualmente incluyen la frase "irc".

Muchos otros protocolos se han omitido por completo, ya que no son lo suficientemente parlanchines como para proporcionar datos de banner sin una sonda específica para obtenerlos. Por ejemplo, el protocolo Printer Job Language (PJL en Censys Search) es valioso de ver, pero sólo responderá a unas pocas sondas específicas, que Censys previamente no utilizaba para su puerto por defecto de 9100. Para nosotros, esto incluye todos los protocolos UDP, ya que no recogemos ningún tipo de datos de banner en los puertos UDP. Además, en algunos casos para protocolos basados en TCP, Censys todavía no escaneaba el puerto en el que generalmente viven esos servicios.

Censys se propuso aumentar su cobertura de protocolos en junio y empezó a etiquetar los datos de captura de banners, que podían atribuirse a un protocolo concreto. Descubrimos aquellos servicios que no estaban presentes en nuestros datos. La mayoría de los protocolos que intentamos añadir eran muy sencillos de detectar en comparación con los matices asociados al escaneo de un protocolo como el DNS. El principal obstáculo para añadirlos fue la infraestructura necesaria para dar soporte a un nuevo protocolo, que se diseñó partiendo del supuesto de que los escaneos serían operaciones complejas, consistentes en muchos paquetes enviados de un lado a otro para extraer los diferentes campos de datos que Censys quiere exponer. En nuestro nuevo caso, queríamos enviar una sonda muy básica y comparar patrones con la respuesta.

Para hacer frente a este nuevo escenario, Censys implementó un marco de escaneado de protocolos "ligero" sobre nuestro motor de escaneado existente. Este marco nos permitió añadir rápida y fácilmente compatibilidad con nuevos protocolos sin necesidad de escribir código. Podíamos especificar el puerto y el método con el que escanear en un archivo de configuración, añadirlo a la lista de sondas existentes y ponernos en camino habiendo añadido soporte completo para un nuevo protocolo en una hora, lo que reducía (a menudo) el tiempo de desarrollo que llevaría añadir estos protocolos en el marco existente.

Gracias a este nuevo marco, Censys pudo aumentar el número de protocolos compatibles con nuestro escáner de 40 a 78 en tan solo un hackathon de dos días. La mayor parte del trabajo que supuso añadir estos protocolos no consistió en escribir código o cablear cosas, sino en decidir qué protocolos sería más valioso añadir a la plataforma y tomarles las huellas dactilares. Volvimos a este esfuerzo para llevar el número de protocolos de 78 a un centenar.

Prioridades

De una larga lista de posibles protocolos, hemos seleccionado los que queremos añadir. Dimos prioridad a los protocolos que encajaban en una de estas casillas:

  1. Protocolos que indicaban un problema evidente. Por ejemplo, Kerberos, ARD, ATG, Andromouse...
  2. Protocolos de bases de datos (Cassandra, Zookeeper, Bolt)
  3. Protocolos de control industrial (GE_SRTP, PCWORX, FINS...)
  4. Protocolos que eran simplemente... ¡geniales! (y no requerían mucho esfuerzo para diseccionar el protocolo). Por ejemplo, Terraria, QOTD, Teamspeak...

Beneficios

Exponemos los datos de estos nuevos protocolos de la misma manera que lo haríamos con un banner "desconocido" - la única diferencia está en el campo service_name. Esto se puede ver cuando se visualiza la vista de tabla para un host en búsqueda. Observe que los campos de datos se denominan banner_grab aunque se trate de un servidor Murmur.

Antes, no exponíamos los datos de los servicios de esta forma. Cada servicio añadido tenía un nuevo campo y formato dedicados (por ejemplo, services.openvpn), que luego era permanente. Esto hacía problemático añadir cualquier tipo de sonda "temporal". Estaríamos comprometiéndonos a dar soporte a un campo para siempre. Como tenemos un campo dedicado (banner_grab) para todas las sondas "ligeras", ahora podemos añadir una sonda temporal que podemos eliminar más tarde si ya no aporta valor. Además, esto ha hecho posible que en los datos ya no sea necesario cambiar los nombres de las rutas de búsqueda, sino sólo cambiar el valor del nombre del servicio. Ya tuvimos que hacer esto durante nuestro primer sprint de adición de protocolos. Añadimos una sonda para "RDP_UDP" y decidimos que sería mejor llamarla simplemente RDP. Cambiamos el nombre del servicio en nuestro archivo de configuración, y los nombres problemáticos fueron filtrados y reemplazados por el más sensato.

Nuevos protocolos

A continuación se muestra una tabla de todos los servicios para los que Censys escanea en la actualidad, y cuántos de cada uno de ellos teníamos en Internet a fecha de 2021-08-16. Estas cifras pueden variar mucho, pero en general se mantienen en orden de popularidad. En verde están los protocolos que hemos añadido en las últimas ocho semanas utilizando el nuevo marco de escaneo. Esto se generó utilizando la función de informe de la Búsqueda 2.0. Hemos añadido aquí manualmente Andromouse, porque no vemos ningún servicio activo para él en este momento.

nombre_servicio cuente
HTTP 751232939
DESCONOCIDO* 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
PYME 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
BÚSQUEDA ELÁSTICA 34844
IKETTLE 32530
FOX 26336
IRC 24184
VÁLVULA 24061
ARD 20990
CHARGEN 17470
MURMUR 16860
IDENT 16490
ZOOKEEPER 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
PERNO 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 se incluye para comparar con
"¿cuántos servicios no reconoce Censys ?"

 

Soluciones de gestión de la superficie de ataque
Más información