- El operador de FSE, mientras rastreaba a usuarios ilegales que llegaban a una instancia del fediverso, organizó con logs y correos electrónicos la secuencia de scraping de BoardReader/SocialGist y la solicitud de información del FBI
- El punto de partida del problema habría sido que los resultados de búsqueda de BoardReader hacían que incluso publicaciones de servidores externos parecieran publicaciones de FSE, lo que provocó tanto la llegada de usuarios ilegales como atribuciones erróneas
- BoardReader ocultaba el
User-Agenty usaba proxies residenciales, Tor y reproducción de sesiones de navegador para raspar/api/v1/timelines/public?local=false; incluso después de ser bloqueado siguió repitiendo solicitudes, aumentando la carga y los costos del servidor - El FBI envió el 14 de marzo de 2023 una Emergency Disclosure Request relacionada con
WitchKingOfAngmar, pero esa cuenta no era de FSE sino desneed.social, y la captura adjunta tampoco era una pantalla de FSE - El operador observó que, tras contaminar el índice de BoardReader con una línea de tiempo falsa, cierta frase provocaba un aumento explosivo de solicitudes desde Facebook, y consideró que el reportaje de Torswats en 2024 encajó parte del contexto del interés del FBI
Rastreo iniciado por la llegada de usuarios ilegales
- El operador de FSE consideraba que la llegada de usuarios relacionados con pedofilia al servidor era una amenaza ontológica para FSE
- La subida de material ilegal de abuso sexual infantil, el interés de las fuerzas del orden y la posible incautación del equipo eran riesgos directos
- Concluyó que algunos usuarios operaban distribuyendo material ilegal en varios sitios y luego comprobando qué cuentas no eran bloqueadas
- Intentó disuadirlos publicando toda la información posible, como IP, correo electrónico y
User-Agent, pero el efecto fue limitado- Muchos subían o descargaban archivos y luego se iban, y parecía un patrón de búsqueda de sitios donde no los bloquearan
- Mientras rastreaba la ruta de entrada, descubrió que el encabezado
Refererde muchos usuarios apuntaba a boardreader.com
Método de rastreo con logs
- La premisa era que, para operar una instancia fediverse expuesta al internet público, había que poder analizar directamente bots, escáneres, worms y tráfico anómalo
- Para el análisis de logs se usaban
awk,tail -f,mawk -Winteractive,grep,sqlite3,R,sed,sort,psqly másawkse presenta como una herramienta parecida a SQL para logs de texto- También se usaron herramientas de red como
dig,whois,traceroute,tcpdump,iftop, Shodan y listas de salidas de Tor
- Se modificó el formato de logs del servidor web, como nginx, para registrar encabezados arbitrarios, tiempo de respuesta y tiempo de respuesta del backend
- Explica que los logs de FSE se acercaban a un formato delimitado por tabulaciones para poder manejarlos fácilmente con
awko herramientas tipo hoja de cálculo
- Explica que los logs de FSE se acercaban a un formato delimitado por tabulaciones para poder manejarlos fácilmente con
- Incluso estadísticas simples se usaban para detectar anomalías
- Calculando media y desviación estándar del número de solicitudes se identificaban IP, endpoints y patrones de solicitudes que se disparaban repentinamente
- En cierto momento llegó a conclusiones del tipo “el 90% de las solicitudes POST viene de la misma dirección” usando este método
Seguimiento de BoardReader/SocialGist
- boardreader.com era originalmente una herramienta de búsqueda para foros, y el operador de FSE cree que el sitio no entendía bien fediverse y trataba a FSE como si fuera un único foro
- Incluso publicaciones públicas llegadas desde otras instancias aparecían como si fueran publicaciones del foro
freespeechextremist.com - SocialGist decía vender “accessible social data”, y el operador consideró que lo que decía un blog sobre que el desarrollador estaba en Serbia coincidía con la IP real
- Incluso publicaciones públicas llegadas desde otras instancias aparecían como si fueran publicaciones del foro
- El 5 de marzo de 2023, aunque no había registros explícitos de visitas de BoardReader en los logs de FSE, se detectó scraping de alta velocidad contra
/api/v1/timelines/public?local=false- El navegador decía ser Chrome, pero iba mucho más rápido de lo que una persona podría hacer scroll
- Había registros A desde
spider1.boardreader.comhastaspider43, pero el tráfico real, según se cuenta, venía de45.15.176.187, una IP entonces propiedad de DediPath
- Después de bloquear esa IP, siguieron muchos intentos desde IP residenciales de EE. UU., por lo que el operador concluyó que BoardReader compraba proxies residenciales para evitar la detección
- El 8 de marzo de 2023 empezó a bloquear solicitudes que usaban ciertos tokens con
awk,iptablesy scripts en Ruby- Después aparecieron solicitudes desde una IP de un ISP serbio que referenciaban
devtools.boardreader.com - Según el relato, esas solicitudes cargaban recursos como un navegador normal, obtenían un token Bearer, ejecutaban JavaScript y luego reanudaban el scraping con ese token
- Después aparecieron solicitudes desde una IP de un ISP serbio que referenciaban
- Probó devolver respuestas 429, 401, 403 y 500, pero el scraper repetía aún más las solicitudes y en la práctica se volvió un DoS
- Después empezó a devolver
402 Payment Required, y mientras tanto el acceso a la línea de tiempo pública de TWKN quedó bloqueado
- Después empezó a devolver
Intercambio de correos con SocialGist
- El operador pidió información sobre el crawler a
info@boardreader.comel 5 de marzo de 2023 - El 13 de marzo de 2023 llegó una respuesta desde
dave@socialgist.compreguntando qué quería saber- El operador exigió que solo se llevaran publicaciones locales y que usaran un
User-Agentque identificara a BoardReader - También entregó como rango a excluir del crawling todas las IP que poseía y avisó del problema de las llegadas vinculadas con pedofilia
- El operador exigió que solo se llevaran publicaciones locales y que usaran un
- Dave dijo que lo pasaría al equipo de ingeniería, pero el operador cree que al mismo tiempo el desarrollador seguía depurando el scraper
- En los logs quedaron solicitudes del 13 de marzo de 2023 desde
109.92.154.188que referenciabandevtools.boardreader.com - El operador concluyó que SocialGist decía que se detendría mientras seguía trabajando en evasiones
- En los logs quedaron solicitudes del 13 de marzo de 2023 desde
La Emergency Disclosure Request del FBI
- El 14 de marzo de 2023, el operador recibió un correo desde una dirección
fbi.govcon asunto Emergency Disclosure Request- El agente especial Peter Christenson pidió información de suscriptor sobre el usuario
WitchKingOfAngmar - El archivo adjunto se llamaba
FSE Screen Shot.PNG
- El agente especial Peter Christenson pidió información de suscriptor sobre el usuario
- Tras revisar los encabezados del correo, los logs del servidor de correo y la información SPF de
fbi.gov, concluyó que era un correo real del FBI - La captura adjunta no era una pantalla de FSE
- Mostraba a FSE como “forum” y arriba se veía “Forum • Blackrock Executiv...”
- Estaban resaltados términos de búsqueda como “kill blackrock” y “larry fink”
- También incluía un análisis de sentimiento básico
- La publicación había sido escrita 26 días antes del correo, pero en la captura aparecían tiempos como “11 hours ago” y “13 hours”
WitchKingOfAngmarno era usuario de FSE sino de sneed.social- El operador respondió al FBI que no tenía información de ese usuario en FSE y que BoardReader había añadido “Free Speech Extremist”, pero la fuente de la publicación no era FSE
- El agente del FBI preguntó a quién debía consultar, y el operador le indicó que verificara el servidor de origen
La secuencia que parecía conectar BoardReader, Facebook y el FBI
- El operador cree que el FBI y BoardReader rompían Unicode de la misma forma y coincidían en atribuir erróneamente publicaciones de servidores externos como si fueran publicaciones de FSE
- Afirma que los codepoints Unicode originales
1f9e2,1f438,1f44dfueron reemplazados por cuadros con signo de interrogación que indican Unicode inválido
- Afirma que los codepoints Unicode originales
- A partir de estos indicios, concluyó que el FBI contactó a FSE después de ver datos de BoardReader
- El 15 de marzo de 2023 BoardReader seguía enviando solicitudes a FSE y solo recibía respuestas 402
- El operador publicó una explicación pública limitada y puso a FSE en modo bloqueado
- Sin cuenta ya no se podía ver ni TWKN ni la línea de tiempo pública, y también se cerró el registro
- Incluso después del 16 de marzo de 2023, BoardReader habría seguido intentando evadir con proxies residenciales, Tor y un
User-Agentdistinto en cada solicitud
Línea de tiempo falsa y contaminación de datos
- A partir del 24 de marzo de 2023, como continuaban el scraping de BoardReader y la llegada de usuarios vinculados con pedofilia, el operador empezó a servir una línea de tiempo falsa
- Creó un pequeño script CGI que generaba JSON combinando cuentas inexistentes con publicaciones inexistentes
- Al principio los ID eran números aleatorios de 32 bits, y después mezcló parte de la hora de la solicitud para facilitar el rastreo dentro de BoardReader
- Como nginx no soportaba CGI, enviaba las solicitudes a ese endpoint a lighttpd
- Cuenta que la implementación se hizo principalmente con
awk
- En la lista de palabras para las publicaciones falsas mezcló términos de búsqueda de BoardReader con una lista de palabras relacionadas con CARNIVORE
- Las publicaciones falsas fueron indexadas por BoardReader, y el operador comparaba IDs aleatorios introducidos en el buscador de BoardReader con los logs del servidor web de FSE y los elementos indexados
Observación del aumento explosivo de solicitudes desde Facebook
- El operador confirmó con histogramas de logs que llegaban solicitudes masivas desde Facebook hacia URLs de publicaciones falsas
- Explica que las zonas con muchos
4verdes o azules correspondían a respuestas 402 y que casi todas esas solicitudes venían de Facebook - Las URL solicitadas coincidían con las publicaciones falsas
- Explica que las zonas con muchos
- Concluyó que Facebook iba a buscar esas publicaciones justo después de que BoardReader las indexara
- Cuenta que cuando cambió la lista de palabras de las publicaciones falsas a solo “larry fink”, las solicitudes desde Facebook aumentaron casi de inmediato
- Al quitar esa frase, el tráfico disminuyó y se detuvo
- Al volver a ponerla, tras la espera de indexación en BoardReader, el aumento explosivo se reanudó
- El operador estimó un flujo
awkCGI → lighttpd → nginx → crawler de BoardReader → índice de BoardReader → Facebook → interfaz interna de búsqueda del FBI- Aclara que nunca quedó claro qué papel jugaba Facebook para el FBI en ese flujo, ya fuera como herramienta o como repositorio
Cómo logró detener a SocialGist
- Para reducir los costos por exceso de ancho de banda, hizo las respuestas extremadamente lentas y las ajustó para terminar justo antes del timeout
- A veces recortaba parte final del JSON para provocar errores de parseo
- Concluyó que BoardReader parecía usar un parser JSON común y que gastaba cerca de un minuto sin obtener datos útiles
- Después puso el número de teléfono de Dave en publicaciones generadas aleatoriamente, y al día siguiente Dave respondió
- Dave dijo que había creado un ticket en Jira y que pronto daría una respuesta
- Tras un intercambio breve, el scraping se detuvo rápidamente, pero sacar a FSE del índice de BoardReader tomó alrededor de una semana
Epílogo encajado por el reportaje sobre Torswats
- El 18 de enero de 2024, Wired informó sobre el arresto de Alan Winston Filion en Lancaster, California
- Según el artículo, estaba relacionado con Torswats y habría generado cientos de reportes falsos, incluidas amenazas de bomba y falsas situaciones de rehenes
- El operador cree que
WitchKingOfAngmarera precisamente este Torswats- Señala que
WitchKingOfAngmarparece una referencia a “Lord of the Rings” - Como Torswats solía hacer largas diatribas amenazantes y sin sentido dirigidas a Larry Fink, concluyó que por eso el FBI mostró interés en amenazas relacionadas con Larry Fink
- Señala que
- Este epílogo conecta parcialmente la solicitud del FBI, el término de búsqueda “larry fink” y el interés por amenazas contra ejecutivos de Blackrock
- Aun así quedan dudas
- Qué es BoardReader actualmente
- Si SocialGist usa BoardReader como una coartada plausible
- Qué papel desempeñó Facebook en este pipeline
- Si Facebook proporciona herramientas al FBI o si se usa como una especie de repositorio de datos
Consejo final para operadores de fedi
- El operador dice que, si alguien quiere datos de fedi, en lugar de hacer scraping sería menos destructivo crear una instancia falsa y conectarla a un relay
- Aunque también considera inapropiado ese método, afirma que al menos permite recibir datos en tiempo real sin romper el servidor ajeno
- Opina que solo quedan expuestos los scrapers ruidosos y generales, mientras que es difícil notar a quienes recolectan datos discretamente modificando software ActivityPub o relays
- El operador advierte que pudo rastrear a SocialGist porque cometió errores, y que es difícil saber cuántas organizaciones hacen lo mismo sin cometer esos errores
1 comentarios
Opiniones de Hacker News
El enlace del post del blog solo lleva a una lista de instancias que optaron por la desfederación.
La razón por la que no va a la lista oficial de Fediblock es que Fediblock cerró hace unos años. Quien creó Fediblock dejó claro que no debía usarse de ninguna manera como veredicto final, y que cada quien debía contrastar cuidadosamente los criterios de las instancias publicadas con sus propios criterios. Mi intuición es que el autor intentó enlazar una entrada de Fediblock, no la encontró y, sin verificar bien, la reemplazó por el enlace más parecido.
No tiene absolutamente nada que ver con Fediblock ni con otros mecanismos comunitarios de bloqueo. Los usuarios se comportaron pésimo y el administrador no hizo nada, así que simplemente decidí que no quería seguir hablando con ellos. Es gracioso que FSE se queje de que lo bloquean por culpa de alguna sociedad secreta. Sin ninguna gran conspiración, trolls comunes y corrientes pueden fastidiar directamente a otros hasta lograr que varios servidores corten la conexión.
Me gustó que la historia empiece con que no querían implementar CAPTCHA porque perjudica a usuarios reales, pero luego el 80% trate sobre cuánto tiempo estuvieron caídos el registro público y la línea de tiempo pública, y cuánto impactó negativamente eso a los usuarios.
Aun así, fue una lectura entretenida, y me dejó muy claro que yo no podría encargarme de alojar por mi cuenta espacios comunitarios para otras personas en internet.
Hay bastantes cosas que me gustan de este texto: una persona haciendo ciencia ciudadana al identificar parte del aparato de recolección de información/vigilancia del FBI, fragmentos de drama del Fediverse, y tácticas de administración de sistemas interesantes para operadores de servidores pequeños.
El personaje torswats parece bastante problemático y acaba siendo arrestado, lo que agrega una subtrama interesante. El autor también parece bastante inteligente y me gusta su estilo. Vale la pena leerlo, cinco estrellas.
Más aún si se considera que otro CEO había sido asesinado apenas seis meses antes. Hacia el final del texto, esa persona ya había cometido innumerables actos de violencia por medio de intermediarios. Está bien que la persona de FSE se haya comunicado con una agencia federal, pero ver capturas de amenazas y asumir de inmediato que no podía tratarse de alguien violento revela un sesgo peligroso.
Dice que “Fediblock dio una falsa impresión de que FSE permitía cosas que nunca permitió”, y aun así enlaza un sitio web cuyo código fuente está alojado en kiwifarms.
La razón por la que lo bloquearon es que la mayoría de nosotros no queremos interactuar con el bando de la “libertad de expresión”, y eso es casi todo.
Buen texto. Tengo una corrección muy pequeña, poco importante y quizá incluso equivocada.
Interpretaron la palabra “Negative” en la captura del motor de búsqueda interno como análisis de sentimiento, pero en realidad parece posible que fuera un resultado “negativo” en el sentido de que esa publicación no coincidía con la intención de búsqueda: es decir, un botón para reportarlo como falso positivo en el sistema interno. No parece que el análisis de sentimiento fuera muy útil en esta situación.
Lo de que “aparecieron pedófilos en FSE” parece un problema de todo el Fediverse. Para ser justos, Discord también tiene lo mismo.
Es interesante que esto haya empezado por el encabezado Referer. Que el navegador le informe por defecto al servidor parte de mi historial de navegación parece un problema de privacidad.
Si no recuerdo mal, Tor no tiene ese problema.
La mayoría de los navegadores, al menos los relevantes, respetan el encabezado referer-policy configurado por el sitio de referencia 1. Frameworks web comunes como Django también tienen opciones para controlarlo 2. Como la mayoría de los agentes de usuario lo obedecen, si el sitio indexador hubiera querido, podría haber impedido fácilmente que ese encabezado se enviara para la mayoría de los usuarios.
¿No había una mejor forma técnica de bloquear scrapers? Algo como bloquear las IP o dominios en el punto de entrada, en lugar de procesar las solicitudes. Aunque quizá de todos modos habrían pagado el costo del tráfico de solicitudes.
¿No existe un mercado de servicios externos de protección DDoS para endpoints de API, como Cloudflare y similares? Claro que probablemente no era una solución adecuada para “Free Speech Extremist”, y además cuesta dinero. Aun así, en una situación así quizá sí habría ahorrado costos.