Envío de spammers al purgatorio de contraseñas con Microsoft Power Automate y Cloudflare Workers KV

¿Cuál es la mejor manera de castigar a los spammers? Pienso mucho en este tema porque paso mucho tiempo revisando la basura interminable que me envían. Y fue entonces cuando me di cuenta: el castigo debe ajustarse al crimen – robandome mi tiempo – lo que significa que yo, a su vez, necesito robarles su tiempo. Con la menor sobrecarga posible en mi tiempo, por supuesto. Entonces, a principios de este año, creé Password Purgatory con el único objetivo de poner a los spammers en el infierno que intenta satisfacer criterios de complejidad de contraseña realmente desagradables. y quiero decir De Verdad criterios desagradables, como mucho peor de lo que has visto antes. Lo abrí, tomé un montón de relaciones públicas, construí la API para presentar criterios de complejidad de contraseña cada vez más tontos y luego lo dejé así. Hasta ahora porque por fin, es en vivo, funcionando y endiabladamente hermoso 😈

Paso 1: recibir spam

Esta es la parte fácil: ¡no tuve que hacer nada para este paso! Pero déjame ponerlo en contexto y darte una muestra del mundo real:

Puaj. Cosas desagradables, que se vayan al infierno para ellos, y todo comienza con archivar el spam en una carpeta especial llamada «Enviar Spammer al Purgatorio de Contraseñas»:

Ese es el alcance del trabajo involucrado spam por spam, pero vamos a despegar las tapas y ver qué sucede a continuación.

Paso 2: desencadenar un flujo de Microsoft Power Automate

Automatización de energía de Microsoft (anteriormente, «Microsoft Flow») es una forma realmente ingeniosa de desencadenar una serie de acciones basadas en un evento, y hay una gran cantidad de conectores integrados para hacer la vida muy fácil. Fácil para nosotros como desarrolladores, es decir, menos fácil para los spammers porque esto es lo que sucede tan pronto como archivo un correo electrónico en la carpeta antes mencionada:

Con el conector integrado a mi cuenta de correo electrónico de Microsoft 365, la presencia de un nuevo correo electrónico en esa carpeta desencadena una nueva instancia de un flujo. A continuación, agregué el conector «HTTP» que me permite realizar una solicitud saliente:

Todo lo que hace esta solicitud es hacer un POST a una API en Password Purgatory llamada «create-hell». Pasa una clave API porque no quiero que cualquiera haga estas solicitudes, ya que creará datos que persistirán en Cloudflare. Hablando de eso, echemos un vistazo a lo que sucede allí.

Paso 3: llame a un trabajador de Cloudflare y cree un registro en KV

Comencemos con un poco de historia: en un pasado no muy lejano, Cloudflare no era un host y, en cambio, simplemente revertía las solicitudes de proxy a través de los servicios de origen y hacía cosas geniales con ellos en el camino. Esto lo hizo agregar HTTPS a cualquier sitio web fácil (y gratis), agregó montones de funcionalidad WAF realmente ordenada y nos permitió hacer cosas geniales con el almacenamiento en caché. Pero esto fue todo En tránsito frescura mientras que la lógica de la aplicación, los datos y la gran parte del código base se encontraban en ese sitio de origen. Cloudflare Workers comenzó a cambiar eso y de repente teníamos código en el borde ejecutándose en cientos de nodos en todo el mundo, agradable y cerca de nuestros visitantes. ¿Eso comenzó a convertir a Cloudflare en un «anfitrión»? Hmm… pero los datos en sí todavía estaban en el servicio de origen (dejando de lado el almacenamiento en caché transitorio). Avance rápido hasta ahora y hay múltiple opciones para almacenar datos en los bordes de Cloudflare, incluidos sus (actualmente beta) servicio R2, Objetos duraderosel (próximamente) Base de datos SQL D1 y lo más importante para esta entrada de blog, Trabajadores KV. ¿Esto los convierte en anfitriones si ahora puede crear aplicaciones completas dentro de su entorno? Tal vez sea así, pero saltemos los títulos por ahora y concentrémonos en el código.

Todo el código al que me referiré aquí es de código abierto y está disponible en el repositorio público de Password Purgatory Logger Github. Muy pronto en el archivo index.js que hace todo el trabajo, verá una función llamada «createHell» que se llama cuando se ejecuta el paso de flujo anterior. Ese código crea un GUID y luego lo almacena en KV, después de lo cual puedo verlo fácilmente en el panel de control de Cloudflare:

Todavía no hay valor, solo una clave y se devuelve a través de una respuesta JSON en una propiedad llamada «kvKey». Para volver a leer eso en el flujo, necesito un paso «Analizar JSON» con un esquema que generé a partir de una muestra:

En este punto, ahora tengo una identificación única en el almacenamiento persistente y está disponible en el flujo, lo que significa que es hora de enviar un correo electrónico al spammer.

Paso 4: invita al spammer al infierno

Como sería de mala educación no responder, me gustaría devolverle un correo electrónico al spammer e invitarlo a mi muy formulario de registro especial. Para hacer esto, agarré el conector «Responder al correo electrónico» y pasé la clave kv a través de un hipervínculo:

Es un correo electrónico HTML con la clave escondida dentro de la etiqueta del hipervínculo para que no se vea abiertamente extraño. El uso de este conector significa que cuando se envía el correo electrónico, se ve exactamente como si lo hubiera creado yo mismo con mucho cariño:

Con todo el flujo ahora ejecutado, podemos ver el historial de cada paso y ver cómo se mueven los datos entre ellos:

Ahora, jugamos el juego de la espera 😊

Paso 5: Registrar el dolor del spammer

Perder el tiempo del spammer en sí mismo es bueno. Causarles dolor al hacer que intenten pasar criterios de complejidad de contraseña cada vez más obtusos es mejor. Pero lo mejor – la pieza de resistencia – es registrar ese dolor y compartirlo públicamente para nuestro entretenimiento colectivo 🤣

Entonces, al seguir el enlace, el spammer termina aquí (le invitamos a seguir ese enlace y jugar con él):

La clave kv se pasa a través de la cadena de consulta y la página invita al spammer a comenzar el proceso de convertirse en socio. Todo lo que necesitan para salir es una dirección de correo electrónico… y una contraseña. Esa página luego incrusta 2 scripts del sitio web Password Purgatory, los cuales puede encontrar en el repositorio de código abierto y público de Github que creé en la publicación original del blog. Cada intento de crear una cuenta envía solo la contraseña a la API del Purgatorio de Contraseñas original que creé hace meses, después de lo cual responde con el siguiente conjunto de criterios. Pero cada intento también envía tanto los criterios que se presentaron (ninguno en el primer intento, luego algo cada vez más extraño en cada intento posterior), la contraseña que intentaron usar para satisfacer los criterios. y kvKey para que todo se pueda unir. Lo que eso significa es que la entrada KV de Cloudflare Workers creada anteriormente se acumula gradualmente de la siguiente manera:

Hay un par de pequeñas condiciones integradas en el código:

  1. Si se pasa una clave kvKey en la solicitud de registro que en realidad no existe en Cloudflare, se devuelve HTTP 404. Esto es para garantizar que los randos no intenten enviar registros no deseados a KV.
  2. Una vez que se registra la primera contraseña, hay una ventana de 15 minutos dentro de la cual se pueden registrar más contraseñas. La razón es doble: en primer lugar, no quiero compartir públicamente los intentos de los spammers hasta que esté seguro de que no se pueden registrar más contraseñas en caso de que agreguen PII o algo inapropiado. En segundo lugar, una vez que conocen el valor de la kvKey, una persona que no envía spam podría comenzar a enviar registros (por ejemplo, cuando lo tuiteo más adelante o lo comparto a través de esta publicación de blog).

Eso es todo lo que se necesita para atraer al spammer y registrar su dolor, ahora la parte realmente divertida 😊

Paso 6: disfrute deleitándose con el dolor de los spammers

La primera vez que se registra el intento de contraseña del spammer, Cloudflare Worker me envía un correo electrónico para informarme que tengo un nuevo spammer enganchado (esta capacidad usando MailChannels solo se lanzó este año):

Fue tan emocionante recibir este correo electrónico ayer, ¡juro que es la misma sensación que literalmente tener un pez en tu línea! Ese enlace es uno que puedo compartir para mostrar el dolor del spammer para que el mundo lo vea. Esto se logra con otra ruta de Cloudflare Workers que simplemente extrae los registros de la clave kv dada. y lo formatea perfectamente en una respuesta HTML:

Ah, satisfacción 😊 Enumeré la cantidad de tiempo que el spammer quemó con el objetivo de refinar aún más los criterios de complejidad en el futuro para intentar mantenerlos «enganchados» por más tiempo. ¿El requisito de un código postal de EE. UU. en la contraseña es un poco específico geográficamente, por ejemplo? El tiempo lo dirá y doy la bienvenida de todo corazón a las relaciones públicas en ese sentido en el repositorio API del Purgatorio de Contraseñas original.

Ah, y solo para garantizar que se maximice la tracción y la exposición, hay una tarjeta de Twitter cuidadosamente formateada que incluye los últimos criterios y contraseñas utilizados, ya sabes, los que finalmente rompieron el espíritu del spammer y provocaron que se rindieran:

Resumen

Claramente, me he tomado una gran trato de placer en jugar con los spammers y espero que tú también. Debo ser honesto: ¡nunca había estado tan emocionado de revisar mi correo no deseado! Pero también disfruté mucho armando esto con Power Automate y Workers KV, creo que es genial que puedas crear una aplicación como esta con una combinación de configuración basada en navegador más código y almacenamiento que se ejecuta directamente en cientos de dispositivos perimetrales distribuidos globalmente. nodos de todo el mundo. Espero que los spammers aprecien lo elegante que es todo esto 🤣

Llamarada de la nube

¿Que te ha parecido?

Deja un comentario