Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ya no se juega al veo veo

260335566fd14d2f3c22df3b1d3b014a?s=47 Alex
February 08, 2015

Ya no se juega al veo veo

260335566fd14d2f3c22df3b1d3b014a?s=128

Alex

February 08, 2015
Tweet

Transcript

  1. Alejandro Morais Ya no se juega al veo veo Except

    where otherwise noted, this work is licensed under: http://creativecommons.org/licenses/by-nc-sa/3.0/ Leganés 12-13 Febrero 2015
  2. 2 • Introducción • Técnicas de Ofuscación en Javascript •

    Herramientas • Problemas con streaming de música, videos… • Posibles Soluciones • Conclusión (Es decir, un mejunje JS + Agenda
  3. 3 Bienvenido s

  4. 4 Y….

  5. 5

  6. Aburrido…

  7. ¡¡Series!!

  8. Seriesly antes molaba

  9. Publicidad, publicidad, publicidad Hemos picado todos…

  10. • Publicidad Y • Reproductor JWPlayer

  11. Todo el mundo quiere a JWPlayer

  12. Hmm… ¿Seguridad?

  13. Probemos…

  14. Chrome -> Inspect -> “file: **”

  15. Automatizando… (Con PHP, claro)

  16. Froxy

  17. Pero no todo es un camino de piruletas

  18. Cachis… ¿eval? ¿packed?

  19. Ofuscando

  20. Ofuscando: Técnicas • Minimizar • Como funciona eval() • ASCII

    • Unicode • XOR • Split de Strings • Packed • Encriptado Simple • Técnicas Avanzadas
  21. Warning Antes de empezar a ofuscar código siempre hay que

    hacer una o varias copias del original (siempre se pierden las copias)
  22. • Minimizar Ofuscando: Técnicas • Uso de variables con longitudes

    más cortas • Eliminación de espacios y tabs
  23. • Minimizar Ofuscando: Técnicas Twitter: https://abs.twimg.com/c/swift/es/bundle/fro ntpage...js 269 KB ->

    compresión (solo espacios) -> 196 KB ¡¡ Ahorro del 27.2 % !! (Con variables ~ 30%)
  24. • Cómo funciona Eval() Ofuscando: Técnicas Pero se sigue viendo

    el código directamente… Hmm…
  25. • ASCII Ofuscando: Técnicas

  26. • Unicode Ofuscando: Técnicas

  27. • XOR (ASCII) Ofuscando: Técnicas Clave: 173 xor_str(“var a =

    …”); Misma función, encripta y desencripta
  28. • XOR (Character Encoding) Ofuscando: Técnicas Clave: 173 Misma función,

    encripta y desencripta xor_str(“var a = …”);
  29. • Split de Strings Ofuscando: Técnicas Un poco cutre

  30. Ofuscando: Técnicas • Packed

  31. • Encriptado Simple Ofuscando: Técnicas La encriptación es fuerte en

    el algoritmo o en la contraseña
  32. • Técnica del “Espacio en blanco” Ofuscando: Técnicas Usar “document”

    o “eval”, canta mucho… Lo mismo hacemos con “getElementById”, “innerHtml”,…
  33. • Técnica del “Espacio en blanco” Ofuscando: Técnicas

  34. • Técnica del “Espacio en blanco” Ofuscando: Técnicas El código

    original están en el código que desofusca
  35. Un poco de tabulación…

  36. Eval fuera

  37. Variables “e” y “d” no se usan “c.toString(a)” => Convierte

    “c” en base “a” Por lo tanto base “36”
  38. Resultado

  39. Automatizando…

  40. https://github.com /alxhotel/unpack-js

  41. Herramientas • UglifyJS https://github.com/mishoo/UglifyJS • Jscrambler https://jscrambler.com/es/ • YuiCompressor http://yui.github.io/yuicompressor/

    • Jsbeautifier http://jsbeautifier.org/
  42. Volviendo al streaming…

  43. Los videos están al alcance de un copy paste

  44. Pero esto son casos aislados… ¿no?

  45. Buscando…

  46. Caso Grooveshark • “Session”: valor de la cookie • “Uuid”:

    buscamos en JS • “Token”: buscamos en JS JS minimizado. Hmm…
  47. Caso Grooveshark El veo veo hardcore: 1. Ctrl + F

    2. Buscar palabra clave 3. Probar 4. Si no funciona vuelve al 1.
  48. Caso Grooveshark • “Uuid”: encontrado en app.min.js • “Token”: de

    la peticion getCommunicationToken JS minimizado no tiene “protección”
  49. Algo falla… Necesitamos Seguridad

  50. Posible Soluciones • Token / URLs Firmadas • Encriptación AES

    • DRM (~ AES) • Bloquear por localización • Marcas de Agua • Limitar Velocidad
  51. Netflix

  52. Conclusión

  53. Da igual

  54. En streaming todavía tenemos medidas de seguridad

  55. Pero… Seguimos teniendo que desencriptar el archivo en nuestro ordenador

  56. P2P

  57. La ofuscación es útil cuando se usa una combinación de

    técnicas
  58. Pero… No debería ser el muro de seguridad sino una

    capa más
  59. Ya no se juega al veo veo

  60. Gracias Twitter: @alxhotel Linkedin: /in/alexmorais Github: @alxhotel