Windows ๋ ์ง์คํธ๋ฆฌ ํ์ด๋ธ ์ต์คํ๋ก์ ํ๋ฆฌ๋ฏธํฐ๋ธ
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์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
ํ์ด๋ธ ์์์ด ํน๋ณํ ์ด์
Windows registry hives๋ ๋ฉ๋ชจ๋ฆฌ ๋งตํ๋ .regf ํ์ผ๋ก, ์ปค์คํ
ํ ๋น์(HvAllocateCell, HvReallocateCell, HvFreeCell)์ ์ํด ๊ด๋ฆฌ๋ฉ๋๋ค. ์ด ํ ๋น์๋:
- ํ ๋น์ ๋ฌด์์ํํ์ง ์์ โ ์ ๋ฐฐ์น๋ ์ด์ registry API ํธ์ถ์ ์์/ํฌ๊ธฐ์๋ง ์์กดํ๋ฏ๋ก ๋ ์ด์์์ ํธ์คํธ ๊ฐ์ ์ฌํํ ์ ์์ต๋๋ค.
- ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ ๋ถ์กฑ โ ์๋์ผ๋ก ๋ณ๊ฒฝ๋ ํค๋/๋ฐ์ดํฐ ํ๋๋ ์ปค๋ ์๋น์(Cmp* routines)์ Registry ํ๋ก์ธ์ค ์์ฒด์์ ์ ๋ขฐ๋ฉ๋๋ค.
- ๊ถํ ์๋ ํ์ด๋ธ์ ์ฃผ์ ๊ณต๊ฐ์ ๊ณต์ ํจ โ ๋ง์ ๊ฒฝ์ฐ ๊ณต๊ฒฉ์๊ฐ ์ ์ดํ๋ ํ์ด๋ธ๊ฐ HKLM/HKU ํ์ด๋ธ์ ๋์ผํ ์ ์ ๋ชจ๋ ์ฃผ์ ๋ฒ์์ ๋งคํ๋์ด inter-hive overflow๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
์ด๋ก ์ธํด ํ์ด๋ธ ๊ธฐ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์์ ๋ฒ๊ทธ(์: CVE-2023-23420 / CVE-2023-23423)๋ LPE์ ๋ํด ์ ๋ ์ ๋ขฐ์ฑ์ด ๋์ต๋๋ค.
registry APIs๋ก ๊ฒฐ์ ๋ก ์ ๋ ์ด์์ ์ ๋ฆฌ
ํ์ด๋ธ ํ ๋น์ด ๊ฒฐ์ ๋ก ์ ์ด๊ธฐ ๋๋ฌธ์ Win32 APIs๋ง์ผ๋ก ์ ๋ฐฐ์น๋ฅผ ๊ทธ๋ฃจ๋ฐํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ ์ํฌํ๋ก๋:
- ๋์ ํค๋ฅผ ๋ฆฌ์ (์ญ์ /์ฌ์์ฑ)ํ์ฌ ํ์ด๋ธ ๋น์ ์๋ ค์ง ์ ๋ง ๋จ๊ธฐ๊ธฐ.
- ์ ์(์์ธก ๊ฐ๋ฅํ) ์ ์ฐ์์ ํ ๋นํ๋ ค๋ฉด ํฌ๊ธฐ๋ฅผ ์ ์คํ ์ ํํด ๊ฐ์ ์์ฑ:
- Key/value ๋ฉํ๋ฐ์ดํฐ ์ ์ 8๋ฐ์ดํธ์ ๋ฐฐ์์ ๋๋ค.
0x3FD8-๋ฐ์ดํธ ๊ฐ์ ์ฐ๋ฉด ์0x4000-๋ฐ์ดํธ ๋น์ด ๊ฐ์ ๋ฉ๋๋ค(0x3FD8๋ฐ์ดํฐ +_HBINํค๋/ํจ๋ฉ), ์ดํ ๋น์ ์ํธ ๊ต์ฐจ(interleaving)ํ๊ธฐ์ ์ด์์ ์ ๋๋ค.
- ํฌ๊ธฐ ์กฐ์ ์ ์นํ์ ์ธ ํ์ ์ฌ์ฉ(์: REG_BINARY) โ RegSetValueEx์ ๋ค๋ฅธ ๊ธธ์ด๋ก ํธ์ถํ๊ธฐ๋ง ํด๋ ๊ฐ๋ณ ์ ์ ํด์ /ํ์ฅํ ์ ์์ต๋๋ค.
- ์์ ์์๋ฅผ ๊ธฐ๋ก(์์ฑ/์ญ์ /ํฌ๊ธฐ๋ณ๊ฒฝ). ์ด๋ฅผ ์ฌ์ํ๋ฉด ํ ๋น์์ ๋ฌด์์์ฑ์ด ์์ผ๋ฏ๋ก ๋ค๋ฅธ ์์คํ ์์๋ ๋์ผํ ๋ ์ด์์์ ์ฌํํ ์ ์์ต๋๋ค.
Example layout shaper (simplified C)
```c void MakeBin(HKEY base, const wchar_t *name, size_t bytes) { std::vectorvoid Groom(HKEY hive) { for (int i = 0; i < 0x20; ++i) { wchar_t value[32]; swprintf(value, Lโbin_%02dโ, i); MakeBin(hive, value, 0x3FD8); RegDeleteKeyValueW(hive, NULL, value); // leaves holes for victim cells } }
</details>
Once a corruption primitive (overwrite/fill) is available, the groom guarantees that the **target cell resides next to the sprayed holes**, enabling precise overwrites without heap spraying.
## ์๋ชป ๊ตฌ์ฑ๋ ํ์ ํค๋ฅผ ํตํ API-only ์ ๊ทผ์ผ๋ก privileged hives์ ์ก์ธ์ค
Windows๋ ๋ ์ง์คํธ๋ฆฌ ๊ฒฝ๋ก์ ๋ง์ง๋ง ๊ตฌ์ฑ ์์์ ๋ํ **ACL on the final component**๋ง ํ๊ฐํ๋ค. HKLM/HKU ์๋์ ์ด๋ค ํ์ ํญ๋ชฉ์ด๋ `KEY_SET_VALUE`, `KEY_CREATE_SUB_KEY`, ๋๋ `WRITE_DAC`๋ฅผ ์ ๊ถํ ์ฌ์ฉ์์๊ฒ ๋ถ์ฌํ๋ฉด, ์์ ํค๋ค์ด ๋ชจ๋ ์ ๊ฒจ ์์ด๋ ํด๋น ํ์ ํญ๋ชฉ์ ์ ๊ทผํ ์ ์๋ค. Project Zero๋ **>1000 such writable keys in HKLM on Windows 11**๋ฅผ ๋ฐ๊ฒฌํ์ผ๋ฉฐ, ์ฌ๊ธฐ์๋ `HKLM\SOFTWARE\Microsoft\DRM` ๊ฐ์ ์ฅ๊ธฐ ํญ๋ชฉ๊ณผ ์ฌ๋ฌ `HKLM\SYSTEM` ๋ถ๊ธฐ๊ฐ ํฌํจ๋๋ค.
Practical enumeration strategy:
1. ๊ถํ ์์น๋ ์ปจํ
์คํธ์์ `\Registry\Machine`๊ณผ `\Registry\User`๋ฅผ ์ํํ๋ฉฐ ๊ฐ ํค์ security descriptor๋ฅผ ๋คํํ๋ค. DACL์ด unprivileged SIDs๋ฅผ ํ์ฉํ๋ ํญ๋ชฉ์ ์ ์ฅํ๋ค.
2. ์ผ๋ฐ ์ฌ์ฉ์๋ก์ ๊ธฐ๋กํ ๊ฒฝ๋ก์ ๋ํด `RegOpenKeyEx`๋ฅผ `KEY_SET_VALUE|KEY_CREATE_SUB_KEY` ๊ถํ์ผ๋ก ์๋ํ๋ค. ์ฑ๊ณต์ ์ผ๋ก ์ด๋ฆฐ ํค๋ ์์คํ
hives์ attacker-controlled data๋ฅผ ํ์๋ก ํ๋ hive corruption bugs์ ์ ํจํ ํ๊น์ด๋ค.
3. PoCs๊ฐ ์์๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ฐฐํฌํ ์ ์๋๋ก **stable writable locations**์ ๋ํ ์ด๋ฆฐ ํธ๋ค์ ์บ์๋ฅผ ์ ์งํ๋ค.
```powershell
$targets = Get-ChildItem Registry::HKEY_LOCAL_MACHINE -Recurse |
Where-Object { (Get-Acl $_.PsPath).Access.IdentityReference -match 'S-1-5-32-545' } |
Select-Object -ExpandProperty PsPath
foreach ($path in $targets) {
try { Get-Item -Path $path -ErrorAction Stop | Out-Null }
catch {}
}
์ผ๋จ ๊ทธ๋ฌํ ๊ฒฝ๋ก๋ฅผ ์๊ฒ ๋๋ฉด, ์ต์คํ๋ก์์ ์คํ๋ผ์ธ์์ ํ์ด๋ธ๋ฅผ ์กฐ์ํ ํ์๊ฐ ์์ผ๋ฉฐโํ์ค ๋ ์ง์คํธ๋ฆฌ APIs๋ง์ผ๋ก๋ SYSTEM ์๋น์ค๊ฐ ์ ๊ทผํ๋ ๊ถํ ์๋ ํ์ด๋ธ ์์ ์์๋ ์ ์ ๋ฐฐ์นํ ์ ์๋ค.
HKCU\Software\Microsoft\Input\TypingInsights๋ฅผ ํตํ ๊ต์ฐจ ์ฌ์ฉ์ ํ์ด๋ธ ์
์ฉ
๋ชจ๋ ์ฌ์ฉ์ ํ์ด๋ธ์๋ HKCU\Software\Microsoft\Input\TypingInsights๊ฐ ๋ค์ด ์์ผ๋ฉฐ, ํด๋น ACL์ KEY_ALL_ACCESS๋ฅผ Everyone (S-1-1-0). ์๊ฒ ๋ถ์ฌํ๋ค. Microsoft๊ฐ ์ด๋ฅผ ๊ฐํํ ๋๊น์ง, ๋ชจ๋ ์ฌ์ฉ์๋ ๋ค์์ ์ํํ ์ ์๋ค:
- ๋ค๋ฅธ ์ฌ์ฉ์์ ํ์ด๋ธ๋ฅผ 2โฏGiB ํ๋๊น์ง ์ฑ์ ๋ก๊ทธ์จ ์คํจ๋ฅผ ์ ๋ฐํ๊ฑฐ๋ ํ์ด๋ธ ์ ๋จ์ ๊ฐ์ ํ ์ ์๋ค(allocator ๋์์ ์ ๋ํ๊ฑฐ๋ DoS์ ์ ์ฉ).
- ๋ค๋ฅธ ์ฌ์ฉ์์
NTUSER.DAT์ ์์๋ ์ ์ ์ฝ์ ํด ํผํด์ ํ๋ก์ธ์ค๊ฐ ์์๋ ํค๋ฅผ ์ฝ์ ๋ ํธ๋ฆฌ๊ฑฐ๋๋ ์ธก๋ฉด ์ด๋ ์ต์คํ๋ก์์ ์ค๋นํ ์ ์๋ค. - ์ฌ์ฉ์๋ณ ์ค๋ฒ๋ ์ด ํ์ด๋ธ์ ์์กดํ๋ ์๋๋ฐ์ค ์ฑ์ differencing hives๋ฅผ ์์ ํด ์ ์ฑ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋๋ก ๊ฐ์ ํ ์ ์๋ค.
์ด๋ก ์ธํด ํ์ด๋ธ ์์ ์ทจ์ฝ์ ์ ๋์ผ ๊ณ์ ๋ด ๊ถํ ์์น๋ฟ ์๋๋ผ lateral movement์๋ ์ ์ฉ๋ ์ ์๋ค.
๋ฉํ๋ฐ์ดํฐ ์์์ paged pool overflows๋ก ์ ํ
๋ํ ๋ ์ง์คํธ๋ฆฌ ๊ฐ์ _CM_BIG_DATA ๋ ์ฝ๋์ ์ ์ฅ๋๋ค:
_CM_KEY_VALUE.DataLength๋ ๋ ผ๋ฆฌ์ ํฌ๊ธฐ๋ฅผ ์ ์ฅํ๋ค. ์์ ๋นํธ๋ ํ์ด๋ก๋๊ฐ ์ ๋ด๋ถ์ ์๋์ง ์๋๋ฉด big-data ์ ์ฅ์์ ์๋์ง๋ฅผ ๋ํ๋ธ๋ค._CM_BIG_DATA.Count๋ ์ฒญํฌ ํ ์ด๋ธ์ ํตํด ์ฐธ์กฐ๋๋ 16โฏKiB ์ฒญํฌ(๋ฉํ๋ฐ์ดํฐ ์ ์ธ 16384 ๋ฐ์ดํธ)๋ฅผ ์นด์ดํธํ๋ค.
์ด๋ค ์ปดํฌ๋ํธ๊ฐ CmpGetValueData๋ฅผ ํธ์ถํ๋ฉด:
- ์ปค๋์
DataLength์ ๋ฐ๋ผ ์๊ฒฉํ ํฌ๊ธฐ๊ฐ ์ ํด์ง paged pool buffer๋ฅผ ํ ๋นํ๋ค. - ํ์ด๋ธ ์ ์ฅ์์์
Count * 0x4000๋ฐ์ดํธ๋ฅผ ํด๋น ๋ฒํผ๋ก ๋ณต์ฌํ๋ค.
์
์ ์์์์ผ DataLength < 16344 * (Count - 1)๊ฐ ๋๋๋ก ํ ์ ์๋ค๋ฉด, ๋ณต์ฌ๋ ์ธ์ ํ paged-pool ๊ฐ์ฒด๋ก ์ ํ์ ์ผ๋ก ๋ชฉ์ ์ง๋ฅผ ์ด๊ณผ(overrun) ํ๋ค. ์ ๋ขฐํ ์ ์๋ ์ต์คํ๋ก์ ์ฒด์ธ์ ๋ค์๊ณผ ๊ฐ๋ค:
- ๊ฒฐ์ ๋ก ์ groom์ ์ฌ์ฉํด ์ทจ์ฝํ
_CM_KEY_VALUE๋ฅผ ์ ์ด ๊ฐ๋ฅํ ๋ฉํ๋ฐ์ดํฐ ๊ทผ์ฒ์ ๋ฐฐ์นํ๋ค. _CM_BIG_DATA.Count๋ ๊ทธ๋๋ก ๋ ์ฑDataLength๋ฅผ ์์ ๊ฐ(์: 0x100)์ผ๋ก ๋ณ๊ฒฝํ๋ค.- ํ์ดํ, ALPC ํฌํธ, section ๊ฐ์ฒด ๋ฑ ์ฌ์ฉ์ ๋ชจ๋์์ pool-groom์ ์ํํด ์ ํํ ๊ฐ์ฒด(์:
EPROCESS->Token์์ ์ ๋๋SRVNET_BUFFER)๊ฐ 1๋จ๊ณ์์ ํ ๋น๋ ๋ค์ ์ฒญํฌ๋ฅผ ์ฐจ์งํ๋๋ก ํ๋ค. - ์ฝ๊ธฐ ํธ๋ฆฌ๊ฑฐ(์:
RegQueryValueEx,NtQueryValueKey)๋ฅผ ์ ๋ฐํดCmpGetValueData๊ฐ ๋ชจ๋ ์ฒญํฌ๋ฅผ ๋ณต์ฌํ๋๋ก ํ๊ณ ํ์ด๋ธ์ ๊ณต๊ฒฉ์ ์ ์ด ๋ฐ์ดํฐ๋ก ์ด์์ ํ๋๋ฅผ ๋ฎ์ด์ฐ๊ธฐ(overwrite) ํ๋ค. - ์์๋ ์ปค๋ ๊ฐ์ฒด๋ฅผ ์ด์ฉํด ์์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ถํ์ผ๋ก ํผ๋ฒํ๊ฑฐ๋ ์ง์ SYSTEM ํ ํฐ์ ํ์ทจํ๋ค.
์ค๋ฒํ๋ก์ฐ ๊ธธ์ด๊ฐ (Count * 0x4000) - DataLength์ ๊ฐ๊ธฐ ๋๋ฌธ์, **์ ํํ ๋ฐ์ดํธ ์์ฐ(precise byte budget)**๊ณผ ๊ธฐ๋ก๋๋ ๋ฐ์ดํธ์ ๋ํ ์์ ํ ์ ์ด๋ฅผ ํ๋ณดํ ์ ์์ด ๋ง์ ๋๋ผ์ด๋ฒ ๊ธฐ๋ฐ ํ ์ค๋ฒํ๋ก์ฐ๋ณด๋ค ์ฐ์ํ๋ค.
๋นฝ๋นฝํ๊ฒ ํจํน๋ HBIN์ ํตํ ์ธํฐ-ํ์ด๋ธ ์ ํ ์ค๋ฒํ๋ก์ฐ
Registry ํ๋ก์ธ์ค์ ์ํด ๋ง์ดํธ๋ ํ์ด๋ธ๋ 2โฏMiB-aligned views๋ก ๋งคํ๋๋ฉฐ **๊ฐ๋ ๊ฐญ(guard gaps)**์ด ์๋ค. ๋ ๊ฐ์ ์๋ก ๋ค๋ฅธ ํ์ด๋ธ๋ฅผ ๋์์ ์ฑ์ฅ์์ผ ๊ทธ๋ค์ _HBIN ๋ฒ์๊ฐ ๋ง๋ฟ์ ๋๊น์ง ๊ฐ์ ํ ์ ์๋ค:
- ๊ณต๊ฒฉ์๊ฐ ์ธ ์ ์๋ ํ์ด๋ธ(์ฑ ํ์ด๋ธ ๋๋ ์ฌ์ฉ์ ํ์ด๋ธ)์ ๊ถํ ์๋ ๋์(์:
HKLM\SOFTWARE)์ ์ ํํ๋ค. - ๋ ํ์ด๋ธ ๋ชจ๋์์
0x3FD8-๋ฐ์ดํธ ๊ฐ์ ์ง์์ ์ผ๋ก ์์ฑ/์ญ์ ํ๋ค. ๊ฐ ํ ๋น์0x4000-๋ฐ์ดํธ bin์ ์ถ๊ฐํ๋ฏ๋ก, ๋ ์์ฑ๊ธฐ๋ฅผ ๋ณ๋ ฌ๋ก ์คํํ๋ฉด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์์ ๊ทธ๋ค์ bin์ด ๊ต์ฐจ(interleave)ํ๊ฒ ๋๋ค(!process Registry+!vad๋ก ๊ด์ฐฐ ๊ฐ๋ฅ). - ๊ณต๊ฒฉ์ ํ์ด๋ธ์ ๋ง์ง๋ง bin์ด HKLM์ ์ํ HBIN ๋ฐ๋ก ์์ ์์นํ๊ฒ ๋๋ฉด, ํ์ด๋ธ ์์ ๋ฒ๊ทธ๋ฅผ ์ด์ฉํด ๊ณต๊ฒฉ์ ํ์ด๋ธ๋ฅผ ๋์ณ(overflow out of the attacker hive) HKLM ๋ด๋ถ์ HBIN ํค๋๋ ์ ์ ํ๊ดดํ๋ค.
- HKLM ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ดํ๊ฒ ๋๋ฉด ๋ค์์ ํ ์ ์๋ค:
- ๊ถํ ์๋ ํ์ด๋ธ์ ์ง์ big-data ๋ถ์ผ์น ์์(primitive)๋ฅผ ์ค๋นํ๋ค.
- ์ปค๋์ ๋ฒ์ด๋๊ธฐ ์ ์ SYSTEM ์๋น์ค๊ฐ ์๋นํ๋ ๊ตฌ์ฑ ๋ฐ์ดํฐ๋ฅผ ์์์ํจ๋ค.
๊ฐ๋ ํ์ด์ง๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ถํ ์๋ ํ์ด๋ธ์์์ ์ ํ ๋ฎ์ด์ฐ๊ธฐ๋ ์ง์ ์ ์ผ๋ก SYSTEM ์์ ์ ํ์ด๋ธ ๊ตฌ์กฐ๋ฅผ ์์์ํฌ ์ ์์ผ๋ฉฐ, ์ด๋ ๋ฐ์ดํฐ ์ ์ฉ ๊ณต๊ฒฉ์ ๊ฐ๋ฅํ๊ฒ ํ๊ฑฐ๋ ์์์ ์ค๋ช ํ pool overflow๋ฅผ HKLM/HKU ๋ด๋ถ์ ์ค์ ํ ์ ์๊ฒ ํ๋ค.
์ด์ ํ
- ์ค๋ฒํ๋ก์ฐ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๊ธฐ ์ ์ ์ธ์ ์ฑ์ ํ์ธํ๊ธฐ ์ํด
!vad(์ ์ ๋ชจ๋)์!reg view/!pool(์ปค๋)์ ์ฌ์ฉํด ํ์ด๋ธ ๋ฐฐ์น๋ฅผ ๋ชจ๋ํฐ๋งํ๋ค. - ์ด๊ฑฐ ์ค ๋ฐ๊ฒฌํ ์ฐ๊ธฐ ๊ฐ๋ฅํ HKLM ๊ฒฝ๋ก๋ฅผ ์บ์ํด ์ฌ๋ถํ ํ์๋ ์์ ํ๋ฆฌ๋ฏธํฐ๋ธ๋ฅผ ๋น ๋ฅด๊ฒ ๋ฐฐ์นํ ์ ์๋๋ก ํ๋ค.
- hive grooming์ ํ์ค pool feng shui(ํ์ดํ ํ์ด freelists,
NtAllocateVirtualMemoryonRegistryprocess)์ ๊ฒฐํฉํด ์ค๋ฒํ๋ก์ฐ ์ดํ์ ํ๋ฆฌ๋ฏธํฐ๋ธ๋ฅผ ์์ ํํ๋ค.
References
- Project Zero โ The Windows Registry Adventure #8: Practical exploitation of hive memory corruption
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์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


