Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
GoTEE-example — GoTEE - example application | Kitploit
Herramientas/GitHubGitHub/usbarmory/gotee-example
Embedded Systems SecurityMemory ForensicsDebuggersSecurity VirtualizationHardware Security
GitHubusbarmory/gotee-example

GoTEE-example

GoTEE - example application

Ver Repositorio
175hace 4 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Introducción

El framework GoTEE implementa la instanciación concurrente de unikernels basados en TamaGo en modos privilegiado y no privilegiado, los cuales interactúan entre sí mediante el modo monitor y llamadas al sistema personalizadas.

Con estas capacidades, GoTEE implementa un Entorno de Ejecución Confiable (TEE) basado en TamaGo, aportando la seguridad de memoria, la conveniencia y las capacidades de Go a la ejecución bare metal dentro del Secure World de ARM TrustZone o los entornos de ejecución de supervisor de RISC-V.

GoTEE puede supervisar Trusted Applets independientes (freestanding) basados en Go, Rust o C puros, que implementen la API de GoTEE, así como cualquier sistema operativo capaz de ejecutarse en el Normal World de ARM TrustZone o en el modo S de RISC-V, como Linux.

Características

  • Contextos de ejecución aislados para el modo usuario de ARM, el Normal World de TrustZone o el modo Supervisor de RISC-V

  • Soft lockstep oportunista para la detección de fallos

  • API para la implementación del Trusted OS (Syscall, JSON-RPC y manejadores de excepciones)

Documentación

Go Reference

La documentación principal, que incluye un tutorial, se puede encontrar en la wiki del proyecto.

La documentación de la API del paquete se puede encontrar en pkg.go.dev.

Hardware compatible

La siguiente tabla resume los SoCs y placas actualmente compatibles.

Aplicación de ejemplo

En la nomenclatura TEE, el unikernel privilegiado se conoce comúnmente como Trusted OS, mientras que el no privilegiado representa un Trusted Applet.

El ejemplo de GoTEE demuestra la operación concurrente de unikernels Go que actúan como Trusted OS, Trusted Applet y Main OS.

[!WARNING] El Main OS puede ser cualquier SO "completo" (p. ej., Linux); TamaGo se usa simplemente para un ejemplo autocontenido. Lo mismo se aplica al Trusted Applet, que puede ser cualquier aplicación bare metal capaz de ejecutarse en modo usuario e implementar la API de GoTEE, como programas C o Rust independientes (freestanding).

Se puede usar un ejemplo en Rust reemplazando trusted_applet_go por trusted_applet_rust al compilar.

La combinación de ejemplo trusted OS/applet realiza pruebas básicas de ejecución concurrente de tres unikernels TamaGo en diferentes niveles de privilegio:

  • Trusted OS (ARM: modo sistema TZ Secure World, RISC-V: modo M)
  • Trusted Applet (ARM: modo usuario TZ Secure World, RISC-V: modo S)
  • Main OS (ARM: modo sistema TZ Normal World, RISC-V: modo S)

El Main OS cede el control mediante una llamada al monitor.

El Trusted Applet se suspende durante 5 segundos antes de intentar leer la memoria del Trusted OS, lo que desencadena una excepción gestionada por el supervisor que termina el Trusted Applet.

La interfaz de syscall de GoTEE está implementada para la comunicación entre el Trusted OS y el Trusted Applet.

Cuando se lanza en la USB armory Mk II, la aplicación de ejemplo es accesible vía SSH mediante Ethernet sobre USB (protocolo ECM, compatible con hosts Linux y macOS):

root@kitploit:~
$ ssh [email protected]
tamago/arm • TEE security monitor (Secure World system/monitor)

allgptr                                          # memory forensics of applet goroutines
csl                                              # show config security levels (CSL)
csl             <periph> <slave> <hex csl>       # set config security level (CSL)
dbg                                              # show ARM debug permissions
exit, quit                                       # close session
gotee                                            # TrustZone example w/ TamaGo unikernels
help                                             # this help
linux           <uSD|eMMC>                       # boot NonSecure USB armory Debian base image
lockstep        <fault %>                        # tandem applet example w/ fault injection
peek            <hex offset> <size>              # memory display (use with caution)
poke            <hex offset> <hex value>         # memory write   (use with caution)
reboot                                           # reset device
sa                                               # show security access (SA)
sa              <id> <secure|nonsecure>          # set security access (SA)
stack                                            # stack trace of current goroutine
stackall                                         # stack trace of all goroutines

>

El ejemplo se puede lanzar con el comando gotee, que genera el Main OS dos veces para demostrar el comportamiento antes y después de que las restricciones de TrustZone estén en vigor, utilizando periféricos de hardware reales.

Adicionalmente, el comando linux se puede utilizar para generar la imagen base Debian de USB armory como Main OS no seguro.

[!NOTE] Solo se admiten versiones de la imagen base Debian de USB armory >= 20211129 para operación no segura.

gotee

El ejemplo también se puede ejecutar bajo emulación QEMU.

[!NOTE] Las ejecuciones emuladas realizan pruebas parciales debido a la falta de soporte completo de TrustZone/PMP por parte de QEMU.

root@kitploit:~
make qemu
...
> gotee
00:00:00 tamago/arm • TEE security monitor (Secure World system/monitor)
00:00:00 SM loaded applet addr:0x9c000000 entry:0x9c072740 size:4940275
00:00:00 SM loaded kernel addr:0x80000000 entry:0x8007100c size:4577643
00:00:00 SM waiting for applet and kernel
00:00:00 SM starting mode:USR sp:0x9e000000 pc:0x9c072740 ns:false
00:00:00 SM starting mode:SYS sp:0x00000000 pc:0x8007100c ns:true
00:00:00 tamago/arm (go1.19.1) • TEE user applet
00:00:00 tamago/arm (go1.19.1) • system/supervisor (Non-secure)
00:00:00 supervisor is about to yield back
00:00:00 SM stopped mode:SYS sp:0x8146bf54 lr:0x801937a4 pc:0x80193884 ns:true err:exit
00:00:00 applet obtained 16 random bytes from monitor: b4cc4764dd30291a52545b182313003c
00:00:00 applet requests echo via RPC: hello
00:00:00 applet received echo via RPC: hello
00:00:00 applet will sleep for 5 seconds
00:00:01 applet says 1 mississippi
...
00:00:05 applet says 5 mississippi
00:00:05 applet is about to read secure memory at 0x98010000
00:00:05    r0:98010000  r1:9c8240c0  r2:98010000  r3:00000000
00:00:05    r4:00000000  r5:00000000  r6:00000000  r7:9c86bec8
00:00:05    r8:00000007  r9:0000003d r10:9c8020f0 r11:9c342f41 cpsr:600001d7 (ABT)
00:00:05   r12:00000061  sp:9c86bf08  lr:9c1b1be8  pc:9c011330 spsr:600001d0 (USR)
00:00:05 SM stopped mode:USR sp:0x9c86bf08 lr:0x9c1b1be8 pc:0x9c011330 ns:false err:ABT

Compilación del compilador

El compilador TamaGo se descarga automáticamente y se compila como una go tool mediante el Makefile.

Alternativamente, la variable de entorno TAMAGO se puede sobrescribir para usar la última versión binaria publicada:

root@kitploit:~
wget https://github.com/usbarmory/tamago-go/archive/refs/tags/latest.zip
unzip latest.zip
cd tamago-go-latest/src && ./all.bash
cd ../bin && export TAMAGO=`pwd`/go

Compilación y ejecución en targets ARM

Compile los ejecutables de ejemplo del trusted applet y del kernel de la siguiente manera:

root@kitploit:~
git clone https://github.com/usbarmory/GoTEE-example
cd GoTEE-example && export TARGET=usbarmory && make nonsecure_os_go && make trusted_applet_go && make trusted_os

[!NOTE] Reemplace trusted_applet_go por trusted_applet_rust para un ejemplo de TA en Rust; esto requiere Rust nightly y el toolchain armv7a-none-eabi.

Los ejecutables finales se crean en el subdirectorio bin; trusted_os_usbarmory.imx debe usarse para la ejecución nativa.

Los siguientes targets están disponibles:

TARGETPlacaEjecución y depuración
usbarmoryUSB armory Mk IIusbarmory

Los targets admiten ejecución nativa (consulte los enlaces de documentación relevantes en la tabla anterior) y ejecución emulada (p. ej., make qemu).

Compilación y ejecución en targets RISC-V

Compile los ejecutables de ejemplo del trusted applet y del kernel de la siguiente manera:

root@kitploit:~
git clone https://github.com/usbarmory/GoTEE-example
cd GoTEE-example && export TARGET=sifive_u && make nonsecure_os_go && make trusted_applet_go && make trusted_os

[!NOTE] Reemplace trusted_applet_go por trusted_applet_rust para un ejemplo de TA en Rust; esto requiere Rust nightly y el toolchain riscv64gc-unknown-none-elf.

Los ejecutables finales se crean en el subdirectorio bin.

Targets disponibles:

TARGETPlacaEjecución y depuración
sifive_uQEMU sifive_usifive_u

El target solo se ha probado con ejecución emulada (p. ej., make qemu)

Aplicaciones que usan GoTEE

  • ArmoredWitness - red de testigos entre ecosistemas

Autores

Andrea Barisani
[email protected]

Andrej Rosano
[email protected]

Licencia

GoTEE | https://github.com/usbarmory/GoTEE
Copyright (c) The GoTEE authors. All Rights Reserved.

Estos archivos fuente se distribuyen bajo la licencia de estilo BSD que se encuentra en el archivo LICENSE.

Descargar herramienta
SoCPlacaPaquete del SoCPaquete de la placa
NXP i.MX6ULZUSB armory Mk IIimx6ulusbarmory/mk2
NXP i.MX6ULLMCIMX6ULL-EVKimx6ulmx6ullevk
SiFive FU540QEMU sifive_ufu540qemu/sifive_u