8. Seguridad ofensiva & ML
Adversarial Machine Learning
Ataques sintético
Ataques mixtos basados en ML (Robo de modelos, Backdoors,
transfer learning…)
ML aplicada a seguridad
ofensiva “ataques clásicos”
Alfonso Muñoz y Jose Ignacio Escribano Cybercamp
2017 Taller - Seguridad ofensiva y defensiva con
machine learning
https://github.com/tensorflow/cleverhans
12. Criptografía y Deep Learning – Dr. Alfonso Muñoz @mindcrypt
https://www.darpa.mil/program/computers-and-humans-exploring-software-security
Off the Beaten Path: Machine Learning for Offensive Security -
https://pdfs.semanticscholar.org/e0d6/af4067d0b51794c3ae91fccfd1909d784a5b.pdf
13. “Ataques clásicos” usando ML
Objetivo principal:Fuzzing& Facilitar/Mejorar/Agilizarherramientasdepentesting
Comerciales:Nimis,Wallarm,Pentoma, …
Open source & comunidad(herramientas)
AFL(algoritmosgenéticos),NMAP(logistic-regressionIPv6 OS classification)
Gyoithon(https://github.com/gyoisamurai/GyoiThon)
Herramienta de pentesting que analiza la información recogida mediante ML. Cuenta con
diferentes opciones para examinar puertos abiertos, servicios cloud, utilizar metasploit, análisis
de respuestas HTTP..
SAIVS(SpiderArtificialIntelligenceVulnerabilityScanner)- https://github.com/13o-bbr-bbq/SAIVS
Crawling con NaiveBayes para identificar páginas web vía patrones (página de búsquedas, login,
formularios,etc.) paraposteriormenteprobar ataquesXSS y SQL.
Generator/Recomender(https://github.com/13o-bbrbbq/machine_learning_security)
Recomienda mejores inyección de código para detectar fallos web. Se centra en XSS reflejado
(multilayer percepton)
ExploitMeter (http://www.cs.binghamton.edu/~ghyan/code/ExploitMeter/exploit-meter.py)
17. ¿Qué tienen en común estos problemas?
http://docs.idsresearch.org/http_ids_evasions.pdf
Directory Traversal Attacks
https://www.secureworks.com/blog/how-to-hide-malware-in-unicode
18. ¿Qué tienen en común estos problemas?
https://motherboard.vice.com/en_us/article/negmyb/sony-fixed-a-bug-that-allowed-players-to-crash-playstations-by-sending-them-
messages
https://www.reddit.com/r/PS4/comments/9nselm/warning_set_your_messages_to_private/
https://www.kaspersky.com/blog/ps4-killer-messages/24243/
https://www.reuters.com/article/us-apple-bug/apple-finds-bug-that-causes-iphones-to-crash-idUSKBN0OC28L20150527
19. ¿Qué tienen en común estos problemas?
NO ES LA CLASE SYSTEM VERDADERA!!!!
20. Unicode para dummies - Conceptos
Unicode es un estándar de codificación
de caracteres diseñado para facilitar el
tratamiento informático, transmisión y
visualización de textos de
múltiples lenguajes y disciplinas técnicas,
además de textos clásicos de lenguas
muertas.
https://es.wikipedia.org/wiki/Unicode
La última versión 11.0 contiene 137.374
caracteres provenientes de alfabetos, sistemas
ideográficos y colecciones de símbolos
(matemáticos, técnicos, musicales, iconos...)
https://jrgraphix.net/r/Unicode/0780-07BF
21. Unicode para dummies - Conceptos
https://bit.ly/2U11XwR
http://www.unicode.org/charts/
http://kunststube.net/encoding/
22. Problemas de seguridad en Unicode - Contramedidas
- Unicode encodings attacks - Homograph attacks (confusables)
IDN (Internationalized domain name)
homograph attack
Punycode (RFC3492) is a representation of Unicode with
the limited ASCII character subset used for IDNA
(internationalized domain names). Unicode characters are
transcoded to a subset of ASCII (consisting of letters,
digits, and hyphen, which is called the Letter-Digit-
Hyphen, LDH subset) favored by DNS
0061 Latin Small Letter a: http://www.bbva.com
0430 Cyrillic Small Letter a: http://www.bbvа.com
0430 Cyrillic Small Letter a: http://www.bbvа.com
Navegador con Punycode: http://www.xn--bbv-8cd.com/
Application Security Testing & Fuzzing
(unicode.org)
https://github.com/cweb/unicode-hax
https://github.com/google/oss-fuzz
Guías de desarrollo seguro
(Ej, OWASP secure coding practices)
Seguridad en profundidad
(Security in Depth)
23. Homograph attacks – Reflexionando sobre contramedidas
- Navegador web: ¿Políticas IDN y punycode es garantía de protección? (homograph attack)
- Los confusables son “críticos”: ¿Podemos modelar el mejor atacante?
- Seguridad en profundidad - ¿Cómo se procesan las cadenas de confusables en las apps?
- Más allá de spear-phishing: atacar ML, covert channels, evasión de DLP y authorship, troyanizar
código fuente, OCR defense… (Application Security Testing & Fuzzing)
https://www.chromium.org/developers/design-documents/idn-in-google-chrome
24. - Objetivo: Crear el mejor dicc de confusables para ataque/defensa
- Receta: Comparar “visualmente” de forma automática caracteres Unicode y
almacenar los que tienen un % de similitud dado.
Release: Diccionario de confusables & Deep learning
RootedCON 2019
- PoC: Comparar caracteres
alfabeto latino con 38.800
caracteres Unicode.
- Deep learning/Transfer Learning
(Keras/Tensorflow) & cosine
similarity (scikit-learn)
25. Release: Diccionario de confusables & Deep learning
RootedCON 2019
Modelo VGG16 con
pesos pre-entrenados
de ImageNet
https://www.tensorflow.org/guide/keras
26. Para casa: Transfer Learning – Modelo VGG16
RootedCON 2019
https://arxiv.org/pdf/1409.1556.pdf
https://machinelearningmastery.com/transfer-learning-for-deep-learning/
27. ¿Cuál es la mejora? (cantidad/calidad)
- Herramientas actuales - baja calidad (squatm3, evilurl, samesame, …)
- Referencia – Unicode consortium (https://unicode.org/cldr/utility/confusables.jsp)
- Resultado - DeepDiccConfusables (+50% de confusables por carácter, +10-
15% calidad)
- Conclusión: IA como complemento al proceso manual
+45 respecto a la referencia
+43 respecto a la referencia
49. (5/7) Redes sociales libres & mensajería instantánea
NcN 2017 - Seguridad en redes
sociales libres.Ataques y amenazas.
Alfonso Muñoz y Miguel Hernández -
https://vimeo.com/249057699
60. Release: StegUnicode tool (beta)
https://github.com/mindcrypt/stegUnicode
Numero aleatorio de 40 bits (50% aprox de modificaciones)
Non-printable-tags (U+E0000 to U+E007F)
Oculto 400 bits (msg): Bienvenidos a la rootedCon coleguitas del pwn2own
61. Para casa: Matrix embedding
https://code.google.com/archive/p/f5-steganography/
- Por defecto stegUnicode (regla 1-2-3)
Mensajes en bloques de 2 bits (b1 b2)
“Cubierta”en bloques de 3 bits(c1 c2 c3)
Algoritmo
b1 = c1 xor c2 y b2=c2 xor c3 Oculto 2bits sin modificar (25%)
b1 = c1 xor c2 y b2!=c2 xor c3 Oculto 2 bits modificando 1 bit ->c3 (25%)
b1 != c1 xor c2 y b2=c2 xor c3 Oculto 2 bits modificando 1 bit ->c1 (25%)
b1 != c1 xor c2 y b2!=c2 xor c3 Oculto 2 bits modificando 1 bit ->c2(25%)
- Configurable (k bits, 1 modificación en 2k-1 bits)
62. CONCLUSIONES
- Avances limitados en seguridad ofensiva con IA (al menos
públicamente)… pero con utilidad en escenarios concretos.
- Cuidado con ataques basados en codificación Unicode (hola,
¿siglo XXI?). Application Security Testing & Fuzzing
- DeepLearning para mejorar la detección de ataques con
confusables
- deepDiccConfusablesv1.0
https://github.com/mindcrypt/uriDeep/blob/master/data/deepDiccConfusables.txt
- Herramienta uriDeep
https://github.com/mindcrypt/uriDeep
- “Mejorar” software comercial - confusables
- (Skype, Foxit, ProtonMail, Gmail, Linkedin, OpenOffice, Whatsapp, Signal,Telegram,
Redes SocialesLibres, …)
- Evaluación de impacto de confusables en múltiples escenarios
(evasión de propiedad intelectual, covert channels, …)
- StegUnicode - https://github.com/mindcrypt/stegUnicode