Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/usbarmory/tamago
Embedded Systems SecuritySecurity VirtualizationHardware SecurityFirmware Analysis
GitHubusbarmory/tamago

tamago

베어 메탈 프로세서에서 Go 애플리케이션을 컴파일 및 실행하기 위한 프레임워크로, OS 및 C 종속성을 제거하여 공격 표면을 줄인 안전한 펌웨어 개발을 가능하게 합니다.

저장소 보기
2.0k837일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

TamaGo - 베어 메탈 Go

tamago | https://github.com/usbarmory/tamago

Copyright (c) The TamaGo Authors. All Rights Reserved.

TamaGo gopher

소개

TamaGo는 AMD64, ARM, ARM64, RISCV64 베어 메탈 프로세서에서 제약 없는 Go 애플리케이션의 컴파일 및 실행을 가능하게 하는 프레임워크입니다.

이 프로젝트는 C 코드 및 운영체제에 대한 런타임 의존성을 제거하여 임베디드 시스템 펌웨어의 공격 표면을 줄이려는 바람에서 시작되었습니다.

TamaGo 프레임워크는 다음 구성 요소로 이루어져 있습니다:

  • 수정된 Go 배포판 - GOOS 지원을 tamago 타겟으로 확장하며, GOOSPKG에 의해 설정된 runtime/goos 오버레이를 통해 베어 메탈 실행을 가능하게 합니다.

  • 프로세서/SoC 지원용 Go 패키지.

  • 보드 지원용 Go 패키지.

수정 사항은 원래 Go 컴파일러, 런타임 및 타겟 애플리케이션(필요한 임포트 하나)에 대해 최소화되어 있으며, 다른 아키텍처와 명확히 분리되어 있습니다.

기존 아키텍처(표준 Go 런타임에 이미 포함된)에서 코드를 재사용하는 데 중점을 두고 있습니다. 자세한 내용은 내부 동작을 참조하세요.

수정 사항은 완전한 표준 라이브러리 지원을 유지합니다.

이러한 측면은 임베디드 시스템에서 안전한 Go 펌웨어 개발을 가능하게 하는 프레임워크를 제공하려는 의도에서 비롯되었습니다.

현재 릴리스

다음 링크는 TamaGo 수정 Go 배포판(해당 Go 버전에 GOOS=tamago 지원을 추가) 및 TamaGo 라이브러리의 최신 릴리스입니다:

GitHub release Build Status
GitHub release

문서

Go Reference

주 문서는 프로젝트 위키에서 확인할 수 있습니다.

패키지 API 문서는 pkg.go.dev에서 확인할 수 있습니다.

지원되는 AMD64 타겟

다음 표는 현재 지원되는 x86-64 타겟(GOOS=tamago GOARCH=amd64)을 요약합니다.

지원되는 ARM 타겟

다음 표는 현재 지원되는 ARM SoC 및 보드(GOOS=tamago GOARCH=arm)를 요약합니다.

지원되는 ARM64 타겟

다음 표는 현재 지원되는 ARM64 SoC 및 보드(GOOS=tamago GOARCH=arm64)를 요약합니다.

지원되는 RISC-V 타겟

다음 표는 현재 지원되는 RISC-V SoC 및 보드(GOOS=tamago GOARCH=riscv64)를 요약합니다.

사용자 공간 타겟

GOOS=tamago로 컴파일된 프로그램의 실행은 베어 메탈 드라이버 대신 OS 감독 하에 필요한 runtime/goos 오버레이를 구현하는 패키지를 임포트하여 사용자 공간에서도 가능합니다.

사용자 공간에서 GOOS=tamago로 Go 프로그램을 컴파일하고 실행하면 시스템 콜 격리라는 이점이 있습니다. 실행 파일이 Go 런타임을 활용하여 OS 리소스에 직접 접근할 수 없기 때문에 다음과 같은 결과가 나타납니다:

  • OS 파일 시스템으로부터의 격리 (인메모리 에뮬레이트 디스크 사용)
  • OS 네트워킹으로부터의 격리, net.SocketFunc 참조
  • 사용자 정의 네트워킹, rng, 시간 핸들러를 위한 API

다음 표는 현재 사용 가능한 사용자 공간 지원을 요약합니다:

¹ 표준 배포판 테스트 및 go test -tags user_linux 실행에 사용됨

컴파일

GOOS=tamago를 지원하는 Go 배포판

tamago 명령은 애플리케이션의 go.mod에 있는 tamago 모듈 버전과 일치하는 TamaGo 배포판에서 go 명령을 다운로드, 컴파일 및 실행합니다.

애플리케이션은 go.mod에 github.com/usbarmory/tamago를 추가한 후, go 명령을 다음과 같이 대체할 수 있습니다:

root@kitploit:~
go run github.com/usbarmory/tamago/cmd/tamago

또는 go.mod에 다음 줄을 추가하여 go tool tamago를 go 명령으로 사용할 수 있습니다:

root@kitploit:~
tool github.com/usbarmory/tamago/cmd/tamago

또는 최신 TamaGo 배포판을 수동으로 빌드하거나 최신 바이너리 릴리스를 사용할 수 있습니다:

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

애플리케이션 빌드

컴파일 시, GOOSPKG Go 환경 변수를 설정하여 이 라이브러리를 GOOS=tamago를 지원하는 오버레이로 활성화해야 합니다.

root@kitploit:~
export GOOSPKG=github.com/usbarmory/tamago

Go 애플리케이션은 하드웨어 초기화 및 런타임 지원이 이루어지도록 관련 보드 패키지를 임포트해야 합니다:

root@kitploit:~
import (
	// USB armory Mk II 예시
	_ "github.com/usbarmory/tamago/board/usbarmory/mk2"
)

Go 애플리케이션은 이전 단계에서 빌드된 컴파일러로 컴파일할 수 있으며, 몇 가지 플래그/변수를 추가로 사용합니다:

root@kitploit:~
# 이 라이브러리를 `runtime/goos` 오버레이로 설정
export GOOSPKG=github.com/usbarmory/tamago

# Cloud Hypervisor, QEMU 및 Firecracker KVM 예시
GOOS=tamago GOARCH=amd64 ${TAMAGO} build -ldflags "-T 0x10010000 -R 0x1000" main.go

# NXP i.MX6UL 예시
GOOS=tamago GOARM=7 GOARCH=arm ${TAMAGO} build -ldflags "-T 0x80010000 -R 0x1000" main.go

# NXP 8MPLUSLPD4-EVK 예시
GOOS=tamago GOARCH=arm64 ${TAMAGO} build -ldflags "-T 0x40010000 -R 0x1000" main.go

# SiFive FU540 예시
GOOS=tamago GOARCH=riscv64 ${TAMAGO} build -ldflags "-T 0x80010000 -R 0x1000" main.go

# AI Foundry Erbium 예시
GOOS=tamago GOARCH=riscv64 GOSOFT=1 ${TAMAGO} build -ldflags "-T 0x40010000 -R 0x1000" main.go

# Linux 사용자 공간 예시
GOOS=tamago ${TAMAGO} build main.go

각 특정 타겟에 대한 컴파일 정보는 해당 보드 패키지 README 파일을 참조하세요.

빌드 태그

다음 빌드 태그를 사용하면 애플리케이션이 runtime/goos 오버레이에 대한 패키지 자체 정의를 재정의할 수 있습니다:

  • linkramstart: ramStart 재정의
  • linkramsize: ramSize 재정의
  • linkprintk: printk 재정의
  • linkcpuinit: cpuinit 재정의
  • tiny: 힙 할당 요구 사항 감소

실행 및 디버깅

각 특정 타겟(실제 또는 에뮬레이트)에 대한 실행 및 디버깅 정보는 해당 보드 패키지 README 파일을 참조하세요.

예제 애플리케이션은 샘플 드라이버 사용법과 네이티브 및 에뮬레이트 실행에 대한 지침을 제공합니다.

예제 애플리케이션의 에뮬레이트 실행은 다음과 같이 시작할 수 있습니다:

root@kitploit:~
git clone https://github.com/usbarmory/tamago-example
cd tamago-example && make qemu

TamaGo를 사용하는 애플리케이션

  • go-boot - 베어 메탈 Go UEFI 부트 매니저
  • GoKey - 베어 메탈 Go 스마트카드
  • GoTEE - Go 신뢰 실행 환경
  • ArmoredWitness - 교차 생태계 증인 네트워크
  • armory-drive - USB 암호화 드라이브
  • armory-ums - USB 대용량 저장소 펌웨어
  • armory-boot - USB armory 부트 로더
  • tamago-example - TamaGo 예제 애플리케이션
  • tamago-sev-example - 기밀 VM (AMD SEV-SNP) 예제
  • kotama - 초소형 RISC-V 타겟 데모
  • kanzashi - 베어 메탈 에이전트

TamaGo를 사용하는 외부 드라이버

  • go-net - 일반 네트워크 드라이버
  • go-net/imx-usb - i.MX USB를 통한 이더넷 드라이버
  • go-net/virtio - VirtIO 네트워크 드라이버
  • imx-usbserial - i.MX USB를 통한 시리얼 드라이버

추가 자료

  • 패키지 API
  • 런타임 API
  • 호환성
  • 내부 동작
  • FAQ
  • 발표 자료: TamaGo, ArmoredWitness

유지보수자

Andrea Barisani
[email protected]

Andrej Rosano
[email protected]

라이선스

tamago | https://github.com/usbarmory/tamago
Copyright (c) The TamaGo Authors. All Rights Reserved.

이 프로젝트는 LICENSE 파일에 명시된 BSD 스타일 라이선스로 배포됩니다.

TamaGo 로고는 Renee French가 디자인하고 Creative Commons 3.0 저작자 표시 라이선스로 제공된 Go 고퍼를 각색한 것입니다. Go 고퍼 벡터 일러스트레이션은 Hugo Arganda가 제작했습니다.

도구 다운로드
CPU플랫폼CPU 패키지플랫폼 패키지
AMD/Intel 64비트Cloud Hypervisoramd64cloud_hypervisor/vm
AMD/Intel 64비트Firecracker microvmamd64firecracker/microvm
AMD/Intel 64비트QEMU microvmamd64qemu/microvm
AMD/Intel 64비트UEFIamd64uefi/x64
AMD/Intel 64비트Google Compute Engineamd64google/gcp, uefi/x64
SoC보드SoC 패키지보드 패키지
NXP i.MX6ULZ/i.MX6ULUSB armory Mk IIimx6ulusbarmory/mk2
NXP i.MX6ULL/i.MX6ULUSB armory Mk II LANimx6ulusbarmory/mk2
NXP i.MX6ULL/i.MX6ULZMCIMX6ULL-EVKimx6ulmx6ullevk
Broadcom BCM2835Raspberry Pi Zerobcm2835pi/pizero
Broadcom BCM2835Raspberry Pi 1 Model A+bcm2835pi/pi1
Broadcom BCM2835Raspberry Pi 1 Model B+bcm2835pi/pi1
Broadcom BCM2836Raspberry Pi 2 Model Bbcm2835pi/pi2
Nuvoton NUC980NuMaker-IIoT-NUC980G2nuc980nuc980iiot
SoC보드SoC 패키지보드 패키지
NXP i.MX8M Plus8MPLUSLPD4-EVKimx8mpimx8mpevk
Microchip LAN969xEVB-LAN9696-24portlan969xlan9696evb
SoC보드SoC 패키지보드 패키지
SiFive FU540QEMU sifive_ufu540qemu/sifive_u
AI Foundry Erbiumerbium_emuerbiumerbium_emu
AI Foundry ET-SoC-1sys_emuetsoc1sys_emu
운영 체제GOARCH런타임 패키지
Linuxamd64,arm,arm64,riscv64runtime/goos¹
Linuxamd64,arm,arm64,riscv64linux
GoTEEarm,riscv64applet