Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]

10,111 views

Published on

El objetivo de la conferencia es exponer cómo se puede llevar a cabo, de forma lo más sencilla y estructurada posible, la coexistencia de diversos elementos cotidianos en las casas actuales, controlados por un único sistema, con la finalidad de mejorar la seguridad del lugar donde más tranquilos deberíamos estar: nuestra propia vivienda. Se explicará cómo diseñar un mecanismo de seguridad física casero basado en:

Mecanismos de monitorización mediante cámaras web genéricas, con técnicas de reconocimiento facial de los habitantes de la casa, así como detección por bluetooth.
Grabación de videos a sospechosos
Interacción con una alarma controlable vía TCPIP
Reconocimiento facial de personas clasificadas como “buscadas por las autoridades”, en modo lista negra, integrado con el aviso teléfonico a la policía mediante una centralita basada en VoIP, indicando la ubicación de qué persona de dicha lista, se encuentra en el domicilio.
Sistema de notificaciones de las alertas a Twitter, correo y mensajería instantánea.
Asimismo, se hablará de automatización de mecanismos de control de aire acondicionado/calefacción, robots dedicados a la limpieza y estaciones meteorológicas, demostrando que cualquier elemento casero con interfaz de red, puede ser un sistema SCADA. Además de implementar un sistema de autenticación biométrica, aprovechando el reconocimiento facial de quien entra en la casa, se podrá disponer de una lista blanca de usuarios, sobre los que poder personalizar un mensaje de bienvenida para cada usuario, pudiendo avisarle de diversos aspectos.

  • Be the first to comment

Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]

  1. 1. Welcome to your secure /home, $user Lorenzo Martínez Rodríguez
  2. 2. [root@localhost ~]# whoami• Ingeniero en Informática – Seguridad – Redes – Domótica – Robótica – Programación• Preventa técnico, comercial; Consultoría, auditoría y asesoría en seguridad, quinielas, cafés, fotocopias,…• Editor y co-fundador de Security By Default• Twitter: @lawwait
  3. 3. Home, sweet home!
  4. 4. Lo que me termina pasando…
  5. 5. ¿Cómo empezó todo?• Motion (www.lavrsen.dk)
  6. 6. ¿Cómo empezó todo?
  7. 7. Hacking Roomba!
  8. 8. Trasteando con una alarma de Securitas
  9. 9. Bye, bye Securitas!
  10. 10. Climatización Airzone: Innobus
  11. 11. Estación Meteorológica Oregon WMR 200 • Wview Weather (www.wviewweather.com)
  12. 12. Y así nace…        
  13. 13. Let’s  go  to  Hollywood!!
  14. 14. Let’s  go  to  Hollywood!!
  15. 15. Manos a la Obra!
  16. 16. Elementos implicados
  17. 17. Hardware necesario• Intel Xeon X3430 @2.40GHz• 12 GB RAM• 2 dongle BT• RJ-45• Conceptronic C54Netcam2
  18. 18. Reconocimiento facial
  19. 19. Reconocimiento facial• Face.com (www.face.com) – Cloud/FRaaS – Fiabilidad – Lento – Dependiente de acceso a Internet• OpenCV – Alto rendimiento – Entrenamiento – CUDA – Open Source
  20. 20. And the winner is: OpenCV – HaarClassifierCascade – Eigenfaces o PCA (Principal Component Analysis) – Preprocesado de foto: • Escala de grises • Redimensionar imagen • Ecualización del histograma – cvEigenDecomposite(); – Menor distancia euclidea o Mahalanobis• Referencias: – http://www.shervinemami.co.cc/faceRecognition.html – http://www.cognotics.com/opencv/servo_2007_series
  21. 21. Conceptronic C54Netcam2
  22. 22. blink_cam.plmy $IP_webcam="192.168.1.22";my $Auth=“cm9vdGVkX2Fjazpzb3lfZGVfcHJ1ZWJh”;my$url="http://".$IP_webcam."/admin/system.cgi?camname=printer&camlocation=home&led=”;my $browser = LWP::UserAgent->new;for (my $i=0; $i < 10; $i++){ $browser->get($url.2,"Authorization" => "Basic $Auth"); $browser->get($url.0,"Authorization" => "Basic $Auth");}
  23. 23. Movimiento detectado• Motion – > blink_cam.pl & – > Indexar en BD ruta de ficheros – > Timestamp && flag en BD “motion  detected”• Skynet – > Seleccionar frames desde fecha/hora movimiento + 5 segundos – Llamada a programa OpenCV C++ – Procesamiento de resultados
  24. 24. Identificando al intruso
  25. 25. Sintetizador de voz• Festival – Linux – Muy enlatado• Loquendo – Windows – Somos legión!• Cloud – Web scrapping
  26. 26. Saludar && desconectar motion (I)
  27. 27. Saludar && desconectar motion (II)
  28. 28. Llamar policía && notificar• Generar texto a leer a policía• Generar WAV con sintetizador cloud• Procesar WAV con SOX para Asterisk• Use Asterisk::AMI. Originate context [warning] [warning] exten => 10,1,Answer() exten => 10,n,Wait(7) exten => 10,n,BackgroundDetect(silence) exten => 10,n,Playback(call_police) exten => 10,n,Wait(1) exten => 10,n,Hangup()
  29. 29. Llamar policía && notificar
  30. 30. Notifier• Niveles de criticidad – Bajo: Email + syslog – Medio: Nivel bajo + gtalk – Alto: Nivel medio + Twitter + Prowl• Avisos multi-thread
  31. 31. LawBot.pl• XMPP• Autenticación• Algunos comandos: – Set/get [aa [temp| mode] ] – Roomba [clean | dock | sensors] – Togglemotion / motion status – sched dd/mm/[yyyy]-[dd/mm/[yyyy]] hh:mm <comando> – ical(v) <nom-evento> | mes <mm-yyyy>
  32. 32. Live demo!
  33. 33. Diseccionando Skynet
  34. 34. Diseccionando Skynet• Programa monolítico – Bloques síncronos – Bloques de tareas cada X segundos – Gestión de Threads
  35. 35. Diseccionando Skynet• Programa maestro• Gestión procesos Linux• Backend en BD• Semáforos#MAINinit; #inicializo BD, cookie para alarma y conexion fija Roombafor (;;){ system "/usr/local/bin/skynet_60.pl&"; system "/usr/local/bin/skynet_30.pl&"; system "/usr/local/bin/skynet_10.pl&"; sleep (2);}
  36. 36. Diseccionando Skynet_10.pl• Threads – Movimiento_detected – Get_temp_ext – Get_alarm_status – Get_aa_mode – Get_aa_temp – Check_motion• Bloqueo hasta que todos los threads terminan
  37. 37. Diseccionando Skynet_30.pl• Threads – Roomba_scheduler • Si es hora de que la Roomba salga a limpiar, y alarma está en Total, poner previamente en parcial – Jobs_scheduler • Tareas temporizadas• Bloqueo hasta que todos los threads terminan
  38. 38. Diseccionando Skynet_60.pl• Threads – Get_bluetooth_info • Monitoriza BT de habitantes – Get_roomba_status • ¿Qué hace la roomba? – Bt_motion • ¿Alguien en casa?• Bloqueo hasta que todos los threads terminan
  39. 39. Extra Bonus!
  40. 40. Email me: lorenzo@lorenzomartinez.esTwitter: @lawwait
  41. 41. Pacman returns!

×