cómo armar un lab médico pa ciberseguridad!!!
This Standard facilitates interoperability of systems claiming conformance in a multi-vendor environment, but does not, by itself, guarantee interoperability.
(NEMA, DICOM PS3.1, section 1)
hola a todos!! hoy vamos a aprender a armar un lab de imagenología médica pa ciberseguridad!!! es fácil, es entretenido, y una linda instancia pa aprender!!! listos?!?!?
paso 1: consíguete un email!! paso 2: consíguete una cuenta de shodan!! paso 3: escribe el nombre de un protocolo en la barra de búsqueda!! paso 4:
paso 4:
hay tantos.
cómo.
¿100 terabytes?
la barra de búsqueda no te juzga
esta es la cosita que no te dicen en el tutorial. no necesitas un exploit. no necesitas una password. no necesitas ser inteligente. la imagenología médica corre sobre DICOM, un protocolo más viejo que la mayoría de los wns que hay adentro, y una cantidad GIGANTEZZZZCA de los servidores que lo hablan están sentados en el internet público con la puerta de entrada no solo sin llave sino que SIN NI CERRADURA XD.
SHEDDING SKIN, SUCCUMB DEFEAT. THIS MACHINE IS OBSOLETE.
apuntas un scan engine al internet, shodan, zoomeye, censys, lo que sea, y preguntas "quién habla DICOM acá?" y el internet responde. contento. ALTOKE. muchas, muchas veces. y por lo general encontrai weas horribles. lo último que quieres en el internet abierto son los CT scans de un millón de personas. pero resulta que, capaz sea justo lo que te vas a encontrar xd.
I'VE SEEN IT ALL, GAZE INTO THE CRYSTAL BALL! TELL ME MORE, I WANT TO KNOW!!
número quince: un puerto abierto es un rumor. un C-ECHO es una confesión
un puerto escuchando no prueba nada, x lo que no puedes contar en eso. tienes que verificar. mandas el handshake DICOM más suave posible, un C-ECHO, la versión del protocolo de tocar la puerta educadamente y decir "ke pex?", y ves si responde algo real.
una COSA: --connections-per-host=1. UN socket por target, siempre. estos son sistemas hospitalarios VIVOS. una vez vimos 20 conexiones paralelas pitearse la database pool de un motor de integración real. un motor de integración hospitalario bsodeado puede significar atención al paciente con retraso (lol). no vas bajo NINGUNA circunstancia a hacerle DoS a un hospital pa satisfacer la rica y maldadosa curiosidad. tocas una vez, anotas quién respondió y te vas.
aunque para un DoS falta un solo paquete xd, pero eso es para otro día.
número catorce: el pantano de honeypots
después se pone divertido, porque la mitad del internet son hospitales FALSOS. los wns de ciber montan honeypots DICOM (dicompot, medpot) pa cachar a los enfermitos como nosotros y están en todas partes. buenas noticias: son malos pa la wea. un servidor DICOM real está legalmente OBLIGADO a mandar un Implementation Class UID. al honeypot se le olvida. además acepta TODOS los presentation context que le tires, los 252, radioterapia y oftalmología y print jobs todos a la vez, cosa que ninguna máquina real en la tierra haría. ni hablar de AE caller.
así que le haces fingerprint a los falsos y los restas. nuestro conteo de "vivos" bajó de 908 a 582 al segundo que lo hicimos. un tercio del internet malito es cosplay. los otros dos tercios no.
YOU'VE BEEN TELLING LIES THAT I CAN SEE.
número... ya. ok. mira. los números. (y foot lettuce)
una vez que sabes dónde y cómo mirar, los datos no dejan de aparecer.
- 222 servidores de imagenología médica, abiertos, sin autenticación de ningún tipo.
- 109 de ellos guardando data clínica real, humana, de pacientes.
- 1,355,724 pacientes.
- 2,282,205 estudios.
- 120,008,710 imágenes médicas.
- 71.89 TB.
- 41 países. todos los continentes habitados.
- un solo servidor mal configurado en kenia: 21 millones de imágenes. más que todo estados unidos en cantidad de imágenes. UNA caja.
- el botín más grande: 213,315 pacientes en un solo servidor.
y esa es solo data humana, carnua :) tenemos más en el lado veterinario, así que ni tu gato ni mi perro pueden estar tranquilos.
y entonces... pwnage.
uno de esos servidores, un PACS hospitalario, 178,991 pacientes, ya estaba bajo ransomware activo cuando lo encontramos. alguien más llegó primero. la puerta estuvo abierta el tiempo suficiente pa que unos weones alumbrados entraran, se la pitease y empezara a apuñar a los pacientes, y TODAVÍA respondía al internet abierto cuando tocamos.
TEAR A HOLE EXQUISITE RED, FUCK THE REST AND STAB IT DEAD.
un ransomware es la figura optimista. la misma puerta sin llave que usamos para leer la etiqueta es la puerta que ellos usaron pa llevarse el mueble entero, y no hay contador, no hay forma de saber si fuimos los segundos en entrar y no los décimos. un PACS hospitalario tomado de rehén TAMPOCO es solo una filtración. es el scan que un doctor no puede abrir mientras estás en la camilla, la pieza de info que decide si la sombra en la imagen de este año es algo nuevo o vieja historia. nunca sentirás la brecha. sientes la hora médica que se cae porque la caja que guarda tu historial está ocupada siendo el rescate de alguien. la navaja que corta tu piel por error.
¡¡¡esos son los stakes!!! no los terabytes, no el flex, y deffffinitivamente no el countdown lol. ¡¡¡detrás de cada una de esas 120 millones de imágenes hay una persona que tuvo un mal día en un scanner!!! ¡¡y qué pasó!! confiaron en que la foto del interior de sus cuerpos se iba a quedar entre ellos y su doctor. un nombre, un cumpleaños, un diagnóstico, un tumor, el brazo quebrado de un cabro chico! ninguno hizo nada pa merecer ser una fila en mi csv :) pero lo son. jamás abras el cajón >:3 a menos que quieras a la yutita en tu casa lmao.
leímos la etiqueta, nunca los archivos
cada número de arriba salió de la metadata PROPIA del servidor. orthanc, el más común de estos, tiene dos endpoints que te dicen patient count / study count / image count / disk size sin autenticación. eso es. eso es todo lo que tocamos. leímos la etiqueta del archivador. no abrimos el archivador. nunca vimos, descargamos, ni guardamos una sola imagen, y no hay ni un byte de data de pacientes en ninguna parte de esta investigación. el horror está enteramente en los conteos.
y entonces le avisamos a alguien :)
esta es la parte que todo post de "miren lo que encontré" se salta, y es la única parte que de verdad importa. encontrar un millón de pacientes expuestos no vale nada si la puerta se queda abierta. así que lo escribimos y lo mandamos: 124 hosts divulgables, 43 avisos coordinados, ruteados a los CERT nacionales o, cuando el CERT era inalcanzable, directo al abuse desk del proveedor de hosting. nunca a la organización víctima directamente. cada host tuvo un canal de disclosure que funcionaba.
después vimos al sistema de incident-response del mundo responder, y la dispersión es un hallazgo en sí mismo:
- hostinger suspendió un host expuesto (51,000+ pacientes) en 22 HORAS, sin que nadie se lo pidiera, antes de que el operador moviera un dedo. el proveedor lo arregló POR ellos. ¡¡¡existe un final feliz!!!
- francia respondió citando el artículo 47 de su ley de investigador de buena fe en vez de un status, un lindo recordatorio de que el disclosure es un acto legal, no solo técnico. ¡y después acción!
- y la mayoría: silencio. aviso enviado, sin respuesta, sin ticket, sin forma de saber si alguien lo leyó. data de pacientes ahí no más... sentada, a la vista, indefinidamente, mientras el único respaldo que queda (el registro regional que repartió las IPs) se encoge de hombros y dice no es mi problema.
así que. así se arma un lab médico pa ciberseguridad. paso uno, consíguete un email. paso cuarenta, date cuenta de que el lab ya estaba construido, es global, tiene 71.89 terabytes adentro, y nadie está cuidando la puerta.
creamos una herramienta, massrep, para, adivinaste: mass reporting. se come el censo y escupe un email de disclosure coordinado por país, cada host tagueado como PHI o veterinario o vacío pero abierto, ruteado al CERT nacional o, cuando un país no tiene, directo al abuse desk del proveedor de hosting. loguea cada mensaje que manda así que físicamente NO PUEDE doble-notificar a nadie, lo cual, ANOTEN, es más cuidado del que el estándar que estamos revisando ha tenido jamás con tu carne y tu piel.
puta, nema.
lee la cita del principio del post. esa wea no es un invento, está sacado directo del estándar que se supone que maneja tus imágenes. el estándar al que se supone le IMPORTAN tus imágenes. el estándar que se supone que PROTEGE tus imágenes.
¿les importa? ¿realmente les importa? todavía andan haciendo "recomendaciones" o perfiles de seguridad "sugeridos"; ten en mente lo siguiente: el perfil base es plaintext sobre un socket sin auth. así que, cuando el estándar le dice al desarrollador "eh, ni te preocupes de encriptar las comms, ni de poner auth. es una sugerencia, pero no es OBLIGATORIO".
pregunto de nuevo: ¿les importa? pregunta ERRONEA. lee el acrónimo: NEMA es la National Electrical MANUFACTURERS Association. el estándar que maneja tus imágenes lo escribe la gente que VENDE las cajas. (ya, técnicamente el comité DICOM está bajo MITA, una división de NEMA. mismos vendors, misma mesa.) así que por supuesto que la auth es una "sugerencia" y el TLS queda "a criterio de la aplicación." ¿por qué los fabricantes iban a mandatar un MUST que se come su margen y les clava la responsabilidad encima? un MUST es una garantía. RECOMMENDED es encogerse de hombros, cosas que pueden facturar. el zorro no se olvidó del candado. el zorro redactó la especificación :)
cuando la seguridad es una sugerencia, asume que no existe. RFC 2119: MUST, SHALL, significan que la definición es un requisito absoluto de la especificación. RECOMMENDED, deberías, pero eh, da lo mismo. MAY, completamente opcional.
cuando algo tan simple y MUNDANO como TLS es:
DICOM does not specify how a secure transport connection is established, or the significance of any certificates exchanged during peer entity authentication. These issues are left up to the application, which is assumed to be following some security policy. Once the application has established a secure Transport Connection, then an Upper Layer Association can use that secure channel.
PS3.8, Chapter 9, Note 3.
va a empeorar. yo lo voy a empeorar :)
tenemos harta, y wn harta investigación que todavía no podemos publicar. o sea podemos. pero, aunque no lo creas, hay ÉTICA!!
el nesteo es una PERRA.
A WITCH WILL OPEN THE DOOR, FOLLOW ME AND MEET OUR HIGH PRIESTESS. COME, COME, INTO MY COVEN! AND BECOME LUCIFER'S CHILD!