Fué una coincidencia. Alguien posteó una foto preguntando que se podía hacer con un SMS similar al de Correos Chile en uno de los cientos grupos de telegram en los que estoy inscrito. El tipo quería extraer la data colectada de las cc para robárselas a su competencia. Luego de una conversa larga y varias ayudas técnicas me soltó la info y con un poco de ingeniería social de la buena pude conocer los detalles de transfondo en el negocio de los "scams SMS". Finalmente luego de irle respondiendo varias dudas a lo largo de unos dos o tres días, me ofreció trabajar con el. Tenía que terminar uno de los scams para un banco en un país de américa del sur. De aceptar tal trabajo, hubiera podido conocer las identidades de los involucrados y meterme en el manso forro si resultaran ser parte de una mafia local.
Ya sacié mi curiosidad, pero les puedo adelantar, que entre otras cosas a lo ya comentado, dichos scams usan scripts fingerprints para identificar browsers.
Y sobre el análisis técnico, es muy simple de hacer. Si abren un scam SMS verán que los redirecciona a una página x, generalmente un banco o una tienda, si algo pasa y son baneados son redireccionados a una publicidad como aliexpress o un vídeo de youtube. En una terminal con cURL o httpie, tienen que seguir las redirecciones de la cabecera HTTP location hasta llegar a un sitio que carga varios scripts js, se darán cuenta que es el body HTTP correcto porque si lo cargan en browser se irán derecho al scam o a la publicidad, y generalmente en los scripts esta un main ofuscado y el source base de react.
El archivo main es el importante, dentro hay que buscar api.telegram.org, si se encuentran coincidencias es casi seguro de que el token del bot y el/los grupo/s que son spameados estarán dentro. Lo siguiente es buscar por una expresión regular con algún IDE como sublime text o visual studio code. En este punto se puede hacer un formateo del source js.
La anatomía de un bot api token de telegram es la siguiente:
XXXXXXXXXX:ABCDEFGHIJKLMN-ASDQWEASD-IUYYTRPOI
Donde la regex viene siendo algo así: \d*\:\w*
De igual manera se pudiera hacer a medida con: \d{9}\:\w{15}\-\w{9}\-\w{9} aunque no garantizo que siempre se cumpla el patrón (no he visto suficientes api key para garantizarlo).
En el source, cuando pilles el api token, tambien verás el chatId del grupo al que mandan la info. Si nó te tocará seguir variable por variable hasta dar con dicho string.
Lo siguiente es conocer el api
https://core.telegram.org/bots/api#available-methods y saber usar un cliente HTTP, en mi caso httpie
https://httpie.io/docs/cli
Llamando a getMe obtienes la info del bot, con getChat?chatId=-XXXXXXXXXXXX obtienes la info del chat al que envíen la info, para saber la info del grupo puedes usar getChatAdministrator, getChatMemberCount y getChatMember. Si quisieras reenviar mensajes a otro chat puedes usar ForwardMessage. El único problema es que para tener un chat disponible, debes tener el bot agregado a dicho chat, ya sea con tu usuario o a un grupo/canal, acto que pudiera desencadenar alguna alarma, a parte de que queda todo registrado en el método getUpdates y con ello te pudieran llegar a ubicar físicamente si tuvieras tu nombre y tu foto.
El fordwarding es un webeo, no lo pude hacer del grupo con las cc a un chat bot<->mi usuario así que supongo que se requiere un chat del tipo group.
Adicionalmente sí los tipos son inteligentes, pueden seccionar los strings como lo hace neobux.com por ej.
Para finalizar la explicación, si sigues escarbando dentro del main js, deberías pillarte el server al que la data se va, aunque es raro ver un server, puedes encontrar de todo, web services por websocket o el tradicional endpoint HTTP que va por POST. Puedes hacerles pentesting pero no te olvides de usar tu siempre confiable VPN, mejor si es de tu propio server.
Nunca he visto gallos que no sean mancos en éstas andadas, no quiero subestimar a nadie, pero para decriptar al difunto adf.ly me gasté 2 fin de semanas completos (en parte por la inexperiencia), en cambio en lo que comenté arriba me gasté unos 20 minutos cuando mucho. A parte la mecanica de ofuscación que usa react no es de las mas inteligentes que he visto. No se compara con la horrorosa parafernalia que se montó unity para poner sus compilados multiplataforma en web por ejemplo. Aún así es mejor que la de asco estado
edit: lo que pudier agregar, es que nadie es lo suficientemente clever, siempre hay un porcentaje de manco/inteligencia. De ahí puedes deducir que eventualmente tendrán que pedir ayuda para algo en alguna parte, eso te da la pista siguiente, monitorear grupos y desarrollar tu ingeniería social.