07 julio 2011

Auto DNI-E

Una de las críticas mas habituales sobre el DNI electrónico es el, para algunos, excesivo número de veces que aparece la ventana que pide el PIN para realizar cualquier operación con el DNI.

En parte esto está motivado por las restricciones que se le han aplicado para acceder a la información que contiene. Normalmente una SmartCard suele requerir el PIN para realizar operaciones en las que interviene la clave privada, pero en el caso del DNI también para acceder al certificado (la parte pública)

Para hacer mas llevadero lidiar con el hecho de introducir el PIN en tantas ocasiones, hemos desarrollado 'Auto DNI-E', con esta herramienta solo tendrás que escribir en una ocasión el PIN, y ella rellenará por ti la ventana del PIN asociada al DNI-E.

El funcionamiento es bastante sencillo:

Desde un cmd.exe lanzamos Auto DNI-E de la siguiente forma:

>autodni.exe -p 12345678

El flag -p indica el PIN de nuestro DNI, adicionalmente podemos añadir el flag -a 1 si además de rellenar la ventana, queremos que también la acepte, es decir, que no tengamos que hacer nada cuando aparezca la ventana del PIN.

>autodni.exe -p 12345678 -a 1

(y mágicamente la ventana se rellenará y aceptara solita)

Una vez en funcionamiento, Auto DNI-E 'busca' la ventana asociada al PIN y cuando la encuentra, le envía el pin empleando la función SendKeys()

Puede suceder que la fisonomía de la ventana asociada al PIN difiera de una implementación a otra (e incluso depende del lenguaje en el que esté configurado Windows), por eso, junto con la herramienta hay un fichero llamado 'captions.txt' donde se pueden añadir mas tipos de ventanas.

Si Auto DNI-E no funciona en tu equipo, simplemente identifica el caption de la ventana empleando, por ejemplo, Winspy++


Una vez tengas identificado el caption, lo añades al fichero captions.txt y debería funcionar. Adicionalmente estaría bien que también nos lo hicieras llegar para futuras actualizaciones

La herramienta se puede descargar desde aquí

21 comments :

Hector Martinez dijo...

¿es una prueba de concepto? ¿ingeniería social a través de un blog?

Eduardo Robles dijo...

Con opendnie en su última versión (la única que he probado) sólo pide el PIN al principio para establecer el canal seguro. Luego eso sí para la operación que realizo (la de firma) sale una ventana de confirmación por cada firma, pero no pide el PIN.

Esteban Costa Blanco dijo...

No sé, particularmente me parece bien que me pida en PIN, así se cuando se accede a esos certificados. Que lo hace varias veces, una cada vez que necesita o acceder a ellos o a usarlos. Este programa puede ser "comodo" pero a nivel de seguridad me parece que automatizar una opción de acceso a un certificado no es seguro (si alguien nos "pilla" el equipo con el DNIe dentro, podría hacer "maldades").

pperez333 dijo...

Creo que Hector tiene razón... una aplicación que almacena el pin de tu DNI... ¿April fools' fuera de fecha?

Yago Jesus dijo...

Tanta perspicacia me abruma -sic- Tienes razón, hemos creado la aplicación para robarte el PIN del dni-e, tuvimos un problema y es que COMO EL CÓDIGO FUENTE ESTÁ PUBLICADO, tuvimos que pedir a Iker Jimenez que nos explicara una técnica esteganográfica alienígena para ocultar todo eso. Y no solo te roba el PIN, también nos envía tus coordenadas físicas ya que con el PIN sin el DNI no podemos hacer nada. Matrix has you !

vierito5 dijo...

No se le puede pasar el PIN en lugar de escribirlo en claro? Luego te podrías encontrar el PIN por los logs...

Yago Jesus dijo...

Esto es una primera versión funcional. Estaría bien ponerle una GUI, aprovechar eso para que el PIN quede menos visible e incluso la posibilidad de instalar permanentemente el soft

Alberto dijo...

Hay que entendernos, yo me puedo leer el código fuente y no entenderlo, visito paginas de seguridad para estar un poco al día y que no me la claven, de quien te fías al final? :), es una cuestión de confianza. Luego sale publicada una noticia para mostrar el nivel de ineptitud del internauta español, que se baja una app, que no sabe de que va y que tiene que poner el pin de su dni electrónico, eso si, todos los pins han ido a un fichero con encriptacion de tropecientos bits que nadie puede leer :). Esto sabemos que ha pasado, comprendernos a los simples mortales..... ;)

Yago Jesus dijo...

Evidentemente, tu eres dueño y señor de fiarte de lo que quieras, pero estimo que hay un límite donde ya es caer en la paranoia. Traspasado ese límite, lanzar acusaciones veladas resulta casi ofensivo. La aplicación está ahí, se ha liberado el código fuente ¿Que mas quieres? ¿Una auditoría independiente ...?

Anónimo dijo...

Cachear el pin no es una buena práctica de seguridad. Revisar los perfiles de protección Common Criteria para aplicaciones de firma electrónica con DNIe, y veréis que cualquier aplicación que cachee el pin, no podría conseguir dicha certificación de seguridad.

El pedir el PIN cada vez que se accede a los certificados del dispositivo (aunque no se esté realizando una operación efectiva de autenticación o firma) es un "problema" de usuabilidad identificado en el actual DNIe y se está considerando poder eliminarlo.

Un saludo.

SiD dijo...

El eterno debate entre usabilidad,
funcionalidad y seguridad.Como dijo el sabio, dame un punto
de apoyo y... no volveré a introducir el pin.




Ahora solo falta colgarla del
Android-Martek o la Apple-Store y ya cerramos el círculo :)

Juan Aguilera dijo...

Hombre Yago, no te piques, precisamente tú tendrías que saber que no hay que fiarse de nadie. Tienes razón en que estando el código fuente se puede comprobar que no hay nada raro y (casi) todos los que pasamos por aquí nos fiamos de vosotros, pero como sabemos como sois lo que dice Hector tendría sentido, que fuera para demostrarnos que la ingeniería social funciona.

No es para ofenderse, si no todo lo contrario porque hayamos sospechado que hayáis planeado tal argucia.

Un saludo!

Yago Jesus dijo...

No hombre, no me pico. Solo que ... ¿Cuando hemos hecho nosotros experimentos de ese estilo? Además como decía en anteriores comentarios, roza lo absurdo en el sentido de que así como tu password de Twitter / facebook si que tiene una utilidad directa (puedo impersonarte) en el caso del PIN del DNI-E no tiene valor alguno sin el documento físico

Juan Aguilera dijo...

Ummm... seguro que ese script de 50 líneas oculta la manera de hacer una imagen de la información contenida en el chip para enviarlosla por mail y ... Vale vale, ya me tomo la medicación. :)

No sabía que se podían hacer esas cosas con python. Un día de estos tendré que probarlo.

Juan Antonio Martínez dijo...

 Un par de dudas:
¿Tenéis versión para Linux/MacOSX?. ¿Hay código fuente disponible?

Si no me equivoco este programa sólo funciona en Windows XP. Creo recordar que para Windows Vista y 7 se supone que las ventanas están securizadas y solo pueden hablar con aplicaciones padre o hijas... ¿me lo podéis confirmar?

Juan Antonio

Zolocotroco dijo...

Toma yago, un poquito de cultura que se ve que te hace falta, aparte de educación claro http://es.wikipedia.org/wiki/Sic

Yago Jesus dijo...

 Hola, el programa solo funciona en Windows ya que usa las APIs nativas del sistema, no obstante portarlo a Linux / MAC debería ser fácil. Respecto al tema de las Ventanas, hasta donde yo sé, esas restricciones están basadas en el 'paso de mensajes' hacia la ventana, la API que yo uso es SendKeys que no afecta. Y sí el código fuente está junto con el binario (escrito en Python)

Hotpam11 dijo...

Casi de acuerdo contigo. Si los cajeros de bancos hicieran lo mismo, incluso a solicitud del cliente, todos nos llevaríamos las manos a la cabeza.

Pedir el PIN antes de cada acceso a un certificado no es un "problemilla"; es una característica. Al que le resulte incómoda que use CERES. Si la DGP decide eliminar esa característica deberían prepararse para una buena oleada de phishing; el resultado serán listados de ciudadanos con nombre, apellido, fecha de nacimiento, DNI y dirección IP publicados en cualquier "bahía de piratas".

Juan Antonio Martinez dijo...

Un detalle tonto: para saber el nombre, apellido, numero de dni y dirección IP no hace falta PIN a la hora de leer el DNIe. Para la fecha de nacimiento en cambio sí...

Por lo demás estoy de acuerdo con lo que dices... :-)

Elprofeta. dijo...

Wuenas, desde mi ignorancia... pregunto:

Si tenemos claro, que la información que este programilla ha almacenado no se propaga hacia terceros eso debería ser un motivo de alegría para algunos. Pero dicho esto... dicha información se mantiene almacenada en el pc o bien se borra después de cada sesión? Entiendo sesion, por cerrar el navegador y dar por cerrado el día de trabajo.

Si la información, no se borra al acabar la sesión, claramente podríamos tener problemas de seguridad. Hoy en dia, es difícil por no decir imposible, proteger del todo un pc y menos trabajando con windows.

En fin... este es mi comentario y lo digo sin animo de ofender a nadie. 

Por cierto, aprovecho para felicitar a todos los programadores que se dejan los sesos cada día para desarrollar herramientas cada día, para hacernos la vida mas fácil a los demás.

Yago Jesus dijo...

 Hola, no existe registro del PIN, cuando cierras autoDNI-E el PIN deja de estar accesible