2020/09/11

Mi primer PMOD: unos leds y parte de un malware de hardware

 




fpga con pmod


 

Para unas investigaciones y parte de una demo de una charlas de próxima exposición, siendo H4CK3D 2020 la pública y una interna en el trabajo, he necesitado expandir una placa FPGA, en particular una Nexys4DDR.

Sin entrar mucho en detalles pues es otra entrada, lo que hice fué una CPU que ejecuta unas pocas instrucciones tal que me permiten mostrar un ataque de elevación de privilegios con la intervención de un troyano de hardware.

Lo que necesito son cuatro leds separados de la placa para que tengan más protagonismo que los provistos por la placa pues los estoy usando para mostrar el estado, registros e instrucciones de la CPU y como las charlas son virtuales, se complica diferenciarlos.

Estos cuatro leds vienen a representar un puerto de GPIO, que el programa prende y apaga y tambien evidencian la activación del malware.

Tambien necesito la parte electrónica del malware que no puedo expresar en Verilog, que básicamente es un capacitor y un par de resistencias más un potenciómetro de calibración.


Qué es PMOD

Es una norma de conexión de expansiones para sensores y actuadores, tipo ponchos de EDU-CIAA-NXP, shields de Arduino o Raspberry Pi, pero más asociada a FPGAs, en particular del fabricante Digilent. Tiene unos puertos de alimentacion y unos de entrada y salida, tanto analógicos como digitales. 

La asignación de ser entrada o salida, analógico o digital es completamente dependiente de cada modelo, a diferencia de los ponchos/shields, donde esta asignación depende de las capacidades disponibles del microcontrolador en cada pin.


pmod 7 segmentos


 

Qué es FPGA

Muy corto, un circuito programable, se suelen programar en VHDL o Verilog. Se pueden instanciar circuitos tan sencillos como el que gobierna las lucesitas del auto fantástico hasta una CPU, mucho mucho más compleja que la que diseñé yo. 

Una comparación muy libre sería la diferencia entre tener un programa almacenado en ROM que no lo podés cambiar sin cambiar el chip y uno en RAM, que lo cambiás cuando querés. Viene a ser lo mismo pero la lógica digital.

Volviendo a mi PMOD, lo que hace la parte del malware es ir cargando un capacitor con la señal proveniente de la placa. En ausencia de señal, el capacitor se descarga vía una resistencia y como es un ajuste muy preciso tiene un potenciómetro.

El método de construcción fué utilizar una placa preimpresa genérica, a la cual le corté el sobrante. El capacitor lo recuperé de la controladora de un aire acondicionado, me parece. El potenciómetro debe ser de una radio, lo debo tener desde hace unos veinticinco o treinta años, yo sabía que para algo me iba a servir, para la gente que me hace tirar "toda esa basura".

La dificultad del uso del potenciómetro pasa por que es el único que tengo con resistencia baja y es muy sensible. Además se me dificulta medirlo para anotar el valor apropiado pues al hacerlo el capacitor se carga y modifica la medida, quizás debería poner un jumper para desconectar del capacitor y poder medir.

 

fpga con pmod y detalles

 

El haber utilizado una placa simple faz me complicó un poco el la fijación de los pines de conexión a la placa principal, pero era lo que tenía, mala suerte.

Para no mandarme macanas hice una prueba muy sencilla, medir la línea que va hacia la FPGA mientras prendo y apago la que viene desde la misma, obviamente funcionó y tambien luego en la FPGA.



La verás podés ver prendida y en funcionamiento en  alguna entrada futura tras la charla H4CK3D 2020, paciencia.  y el detalle del ataque en esta entrada.



Fuentes



https://reference.digilentinc.com/reference/programmable-logic/nexys-4-ddr/reference-manual


https://reference.digilentinc.com/_media/reference/pmod/pmod-interface-specification-1_1_0.pdf

No hay comentarios:

Publicar un comentario