Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
GoTEE-example — GoTEE - example application | Kitploit
أدوات/GitHubGitHub/usbarmory/gotee-example
Embedded Systems SecurityMemory ForensicsDebuggersSecurity VirtualizationHardware Security
GitHubusbarmory/gotee-example

GoTEE-example

GoTEE - example application

عرض المستودع
175منذ 4 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

مقدمة

ينفّذ إطار عمل GoTEE إنشاءً متزامنًا لليونيكيرنلات المبنية على TamaGo في الأوضاع المميزة وغير المميزة، بحيث تتفاعل مع بعضها البعض من خلال وضع المراقب واستدعاءات النظام المخصصة.

بفضل هذه الإمكانيات، ينفّذ GoTEE بيئات تنفيذ موثوقة (TEE) قائمة على TamaGo، مما يجلب أمان الذاكرة وسهولة الاستخدام والإمكانيات التي توفرها لغة Go إلى التنفيذ على المعدن العاري داخل العالم الآمن لـ ARM TrustZone أو بيئات تنفيذ المشرف في RISC-V.

يمكن لـ GoTEE الإشراف على التطبيقات الموثوقة المستقلة المبنية بلغة Go أو Rust أو C، والتي تنفّذ واجهة برمجة تطبيقات GoTEE، بالإضافة إلى أي نظام تشغيل قادر على العمل في العالم العادي لـ ARM TrustZone أو وضع S-mode في RISC-V مثل Linux.

الميزات

  • سياقات تنفيذ معزولة لوضع مستخدم ARM، أو العالم العادي لـ TrustZone، أو وضع المشرف RISC-V

  • الخطوة الناعمة الانتهازية لاكتشاف الأعطال

  • واجهة برمجة تطبيقات لبناء نظام التشغيل الموثوق (استدعاءات النظام (Syscall) ومعالجات JSON-RPC والاستثناءات)

التوثيق

Go Reference

يمكن العثور على التوثيق الرئيسي، الذي يتضمن برنامجًا تعليميًا، في ويكي المشروع.

يمكن العثور على توثيق واجهة برمجة تطبيقات الحزمة على pkg.go.dev.

الأجهزة المدعومة

يلخّص الجدول التالي أنظمة SoC واللوحات المدعومة حاليًا.

مثال تطبيقي

في مصطلحات TEE، يُشار عادةً إلى اليونيكيرنل المميز باسم نظام التشغيل الموثوق (Trusted OS)، بينما يمثل غير المميز تطبيقًا موثوقًا (Trusted Applet).

يوضح مثال GoTEE التشغيل المتزامن ليونيكيرنلات Go التي تعمل كنظام تشغيل موثوق وتطبيق موثوق ونظام تشغيل رئيسي.

[!WARNING] يمكن أن يكون نظام التشغيل الرئيسي أي نظام تشغيل «غني» (مثل Linux)، ويُستخدم TamaGo ببساطة لمثال مكتفٍ ذاتيًا. وينطبق الأمر نفسه على التطبيق الموثوق الذي يمكن أن يكون أي تطبيق معدني عاري قادر على العمل في وضع المستخدم وتنفيذ واجهة برمجة تطبيقات GoTEE، مثل برامج C أو Rust المستقلة.

يمكن استخدام مثال Rust عن طريق استبدال trusted_applet_go بـ trusted_applet_rust عند البناء.

يجري المزيج المكوّن من نظام التشغيل الموثوق والتطبيق الموثوق في المثال اختبارًا أساسيًا للتنفيذ المتزامن لثلاثة يونيكيرنلات TamaGo بمستويات امتياز مختلفة:

  • نظام التشغيل الموثوق (ARM: وضع نظام TZ Secure World، RISC-V: وضع M-mode)
  • التطبيق الموثوق (ARM: وضع مستخدم TZ Secure World، RISC-V: وضع S-mode)
  • نظام التشغيل الرئيسي (ARM: وضع نظام TZ Normal World، RISC-V: وضع S-mode)

يُعيد نظام التشغيل الرئيسي التحكم عبر استدعاء مراقب.

ينام التطبيق الموثوق لمدة 5 ثوانٍ قبل محاولة قراءة ذاكرة نظام التشغيل الموثوق، مما يؤدي إلى استثناء يعالجه المشرف وينهي التطبيق الموثوق.

يتم تنفيذ واجهة syscall الخاصة بـ GoTEE للتواصل بين نظام التشغيل الموثوق والتطبيق الموثوق.

عند تشغيله على USB armory Mk II، يمكن الوصول إلى التطبيق المثال عبر SSH من خلال Ethernet عبر USB (بروتوكول ECM، مدعوم على مضيفي Linux و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

>

يمكن تشغيل المثال بأمر gotee الذي يطلق نظام التشغيل الرئيسي مرتين لإظهار السلوك قبل وبعد تفعيل قيود TrustZone باستخدام الأجهزة الطرفية الحقيقية.

بالإضافة إلى ذلك، يمكن استخدام أمر linux لتشغيل صورة Debian الأساسية لـ USB armory كنظام تشغيل رئيسي غير آمن.

[!NOTE] لا تُدعم للتشغيل غير الآمن إلا إصدارات صورة Debian الأساسية لـ USB armory

= 20211129.

gotee

يمكن أيضًا تشغيل المثال عبر محاكاة QEMU.

[!NOTE] تقوم عمليات المحاكاة بإجراء اختبارات جزئية بسبب عدم دعم QEMU الكامل لـ TrustZone/PMP.

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

بناء المترجم

يتم تنزيل مترجم TamaGo وتجميعه تلقائيًا كأداة go tool بواسطة Makefile.

بدلاً من ذلك، يمكن تجاوز متغير البيئة 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

البناء والتنفيذ على أهداف ARM

قم ببناء الملفات التنفيذية للتطبيق الموثوق المثال والنواة كما يلي:

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] استبدل trusted_applet_go بـ trusted_applet_rust لمثال تطبيق موثوق بلغة Rust، وهذا يتطلب Rust nightly وسلسلة أدوات armv7a-none-eabi.

يتم إنشاء الملفات التنفيذية النهائية في الدليل الفرعي bin، ويجب استخدام trusted_os_usbarmory.imx للتنفيذ الأصلي.

الأهداف التالية متاحة:

TARGETاللوحةالتنفيذ وتصحيح الأخطاء
usbarmoryUSB armory Mk IIusbarmory

تدعم الأهداف التنفيذ الأصلي (انظر روابط التوثيق ذات الصلة في الجدول أعلاه) بالإضافة إلى التنفيذ المُحاكى (مثل make qemu).

البناء والتنفيذ على أهداف RISC-V

قم ببناء الملفات التنفيذية للتطبيق الموثوق المثال والنواة كما يلي:

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] استبدل trusted_applet_go بـ trusted_applet_rust لمثال تطبيق موثوق بلغة Rust، وهذا يتطلب Rust nightly وسلسلة أدوات riscv64gc-unknown-none-elf.

يتم إنشاء الملفات التنفيذية النهائية في الدليل الفرعي bin.

الأهداف المتاحة:

TARGETاللوحةالتنفيذ وتصحيح الأخطاء
sifive_uQEMU sifive_usifive_u

تم اختبار الهدف فقط مع التنفيذ المُحاكى (مثل make qemu)

التطبيقات التي تستخدم GoTEE

  • ArmoredWitness - شبكة شهود عبر الأنظمة البيئية

المؤلفون

Andrea Barisani
[email protected]

Andrej Rosano
[email protected]

الترخيص

GoTEE | https://github.com/usbarmory/GoTEE
حقوق النشر (c) مؤلفو GoTEE. جميع الحقوق محفوظة.

يتم توزيع ملفات المصدر هذه بموجب ترخيص بنمط BSD الموجود في ملف LICENSE.

تنزيل الأداة
SoCاللوحةحزمة SoCحزمة اللوحة
NXP i.MX6ULZUSB armory Mk IIimx6ulusbarmory/mk2
NXP i.MX6ULLMCIMX6ULL-EVKimx6ulmx6ullevk
SiFive FU540QEMU sifive_ufu540qemu/sifive_u