GPS - Google Password Sync
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
์ด๊ฒ์ Google์ด AD์ Workspace ๊ฐ์ ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋๊ธฐํํ๊ธฐ ์ํด ์ ๊ณตํ๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ ์๋น์ค์ ๋๋ค. ์ฌ์ฉ์๊ฐ AD์์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ ๋๋ง๋ค Google์ ์ค์ ๋ฉ๋๋ค.
์ด๊ฒ์ C:\Program Files\Google\Password Sync
์ ์ค์น๋๋ฉฐ, ์ฌ๊ธฐ์์ ๊ตฌ์ฑํ ์ ์๋ ๋ฐ์ด๋๋ฆฌ PasswordSync.exe
์ ๊ณ์ ์คํ๋ ์๋น์ค password_sync_service.exe
๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
์ด ๋ฐ์ด๋๋ฆฌ(๋ฐ ์๋น์ค)๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด Workspace์์ Super Admin ์ฃผ์ฒด์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค:
Google์ ํตํด OAuth๋ก ๋ก๊ทธ์ธํ ํ ๋ ์ง์คํธ๋ฆฌ์ ํ ํฐ์ ์ ์ฅํฉ๋๋ค(์ํธํ๋จ)
GUI๊ฐ ์๋ ๋๋ฉ์ธ ์ปจํธ๋กค๋ฌ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
Workspace ์ฌ์ฉ์ ๊ด๋ฆฌ ๊ถํ์ด ์๋ GCP์ ์๋น์ค ๊ณ์ ์๊ฒฉ ์ฆ๋ช (json ํ์ผ) ์ ๊ณต
์ด๋ฌํ ์๊ฒฉ ์ฆ๋ช ์ ๋ง๋ฃ๋์ง ์์ผ๋ฏ๋ก ์ ์ฉ๋ ์ ์์ด ๋งค์ฐ ๋์ ์์ด๋์ด์ ๋๋ค.
SA๊ฐ GCP์์ ์์๋ ์ ์์ผ๋ฏ๋ก Workspace์ ๋ํ SA ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋งค์ฐ ๋์ ์์ด๋์ด์ ๋๋ค.
Google์ GUI๊ฐ ์๋ ๋๋ฉ์ธ ์ ์ด๋ฅผ ์ํด ์ด๋ฅผ ์๊ตฌํฉ๋๋ค.
์ด๋ฌํ ์๊ฒฉ ์ฆ๋ช ๋ ๋ ์ง์คํธ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค.
AD์ ๊ด๋ จํ์ฌ ํ์ฌ ์์ฉ ํ๋ก๊ทธ๋จ ์ปจํ ์คํธ, ์ต๋ช ๋๋ ํน์ ์๊ฒฉ ์ฆ๋ช ์ ์ฌ์ฉํ๋๋ก ์ง์ ํ ์ ์์ต๋๋ค. ์๊ฒฉ ์ฆ๋ช ์ต์ ์ด ์ ํ๋๋ฉด ์ฌ์ฉ์ ์ด๋ฆ์ ๋์คํฌ์ ํ์ผ์ ์ ์ฅ๋๊ณ ๋น๋ฐ๋ฒํธ๋ ์ํธํ๋์ด ๋ ์ง์คํธ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค.
Winpeas๊ฐ GPS๋ฅผ ๊ฐ์งํ๊ณ ๊ตฌ์ฑ์ ๋ํ ์ ๋ณด๋ฅผ ์ป์ผ๋ฉฐ ๋น๋ฐ๋ฒํธ์ ํ ํฐ์ ๋ณตํธํํ ์ ์๋ค๋ ์ ์ ์ ์ํ์ธ์.
ํ์ผ **C:\ProgramData\Google\Google Apps Password Sync\config.xml
**์์ ๊ตฌ์ฑ์ ์ผ๋ถ๋ฅผ ์ฐพ์ ์ ์์ผ๋ฉฐ, ์ฌ๊ธฐ์๋ ๊ตฌ์ฑ๋ AD์ **baseDN
**๊ณผ ์ฌ์ฉ ์ค์ธ ์๊ฒฉ ์ฆ๋ช
์ **username
**์ด ํฌํจ๋ฉ๋๋ค.
๋ ์ง์คํธ๋ฆฌ **HKLM\Software\Google\Google Apps Password Sync
**์์ ์ํธํ๋ ์๋ก ๊ณ ์นจ ํ ํฐ๊ณผ AD ์ฌ์ฉ์(์๋ ๊ฒฝ์ฐ)์ ์ํธํ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ๋ํ, ํ ํฐ ๋์ SA ์๊ฒฉ ์ฆ๋ช
์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ, ํด๋น ๋ ์ง์คํธ๋ฆฌ ์ฃผ์์์ ์ํธํ๋ ์๊ฒฉ ์ฆ๋ช
์ ์ฐพ์ ์ ์์ต๋๋ค. ์ด ๋ ์ง์คํธ๋ฆฌ์ ๊ฐ์ ๊ด๋ฆฌ์๋ง ์ก์ธ์คํ ์ ์์ต๋๋ค.
์ํธํ๋ ๋น๋ฐ๋ฒํธ(์๋ ๊ฒฝ์ฐ)๋ ADPassword
ํค ์์ ์์ผ๋ฉฐ CryptProtectData
API๋ฅผ ์ฌ์ฉํ์ฌ ์ํธํ๋ฉ๋๋ค. ์ด๋ฅผ ๋ณตํธํํ๋ ค๋ฉด ๋น๋ฐ๋ฒํธ ๋๊ธฐํ๋ฅผ ๊ตฌ์ฑํ ์ฌ์ฉ์์ ๋์ผํด์ผ ํ๋ฉฐ, **CryptUnprotectData
**๋ฅผ ์ฌ์ฉํ ๋ ์ด ์ํธ๋กํผ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค: byte[] entropyBytes = new byte[] { 0xda, 0xfc, 0xb2, 0x8d, 0xa0, 0xd5, 0xa8, 0x7c, 0x88, 0x8b, 0x29, 0x51, 0x34, 0xcb, 0xae, 0xe9 };
์ํธํ๋ ํ ํฐ(์๋ ๊ฒฝ์ฐ)์ AuthToken
ํค ์์ ์์ผ๋ฉฐ CryptProtectData
API๋ฅผ ์ฌ์ฉํ์ฌ ์ํธํ๋ฉ๋๋ค. ์ด๋ฅผ ๋ณตํธํํ๋ ค๋ฉด ๋น๋ฐ๋ฒํธ ๋๊ธฐํ๋ฅผ ๊ตฌ์ฑํ ์ฌ์ฉ์์ ๋์ผํด์ผ ํ๋ฉฐ, **CryptUnprotectData
**๋ฅผ ์ฌ์ฉํ ๋ ์ด ์ํธ๋กํผ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค: byte[] entropyBytes = new byte[] { 0x00, 0x14, 0x0b, 0x7e, 0x8b, 0x18, 0x8f, 0x7e, 0xc5, 0xf2, 0x2d, 0x6e, 0xdb, 0x95, 0xb8, 0x5b };
๋ํ, 0123456789abcdefghijklmnopqrstv
์ฌ์ ์ ์ฌ์ฉํ์ฌ base32hex๋ก ์ธ์ฝ๋ฉ๋ฉ๋๋ค.
์ํธ๋กํผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ๊ฒฌ๋์์ต๋๋ค. ์ด ๋๊ตฌ๋ CryptUnprotectData
๋ฐ CryptProtectData
ํธ์ถ์ ๋ชจ๋ํฐ๋งํ๋๋ก ๊ตฌ์ฑ๋์์ผ๋ฉฐ, ๊ทธ๋ฐ ๋ค์ PasswordSync.exe
๋ฅผ ์คํํ๊ณ ๋ชจ๋ํฐ๋งํ๋ ๋ฐ ์ฌ์ฉ๋์์ต๋๋ค. ์ด ๋๊ตฌ๋ ๊ตฌ์ฑ๋ ๋น๋ฐ๋ฒํธ์ ์ธ์ฆ ํ ํฐ์ ์ฒ์์ ๋ณตํธํํ๋ฉฐ, ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ฌ์ฉ๋ ์ํธ๋กํผ ๊ฐ์ ํ์ํฉ๋๋ค:
์ด API ํธ์ถ์ ์ ๋ ฅ ๋๋ ์ถ๋ ฅ์์ ๋ณตํธํ๋ ๊ฐ์ ๋ณผ ์ ์๋ค๋ ์ ์ ์ ์ํ์ธ์(Winpeas๊ฐ ์๋์ ๋ฉ์ถ ๊ฒฝ์ฐ).
๋น๋ฐ๋ฒํธ ๋๊ธฐํ๊ฐ SA ์๊ฒฉ ์ฆ๋ช
์ผ๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ, ๋ ์ง์คํธ๋ฆฌ **HKLM\Software\Google\Google Apps Password Sync
**์ ํค ์์ ์ ์ฅ๋ฉ๋๋ค.
GCPW์ ๋ง์ฐฌ๊ฐ์ง๋ก PasswordSync.exe
๋ฐ password_sync_service.exe
ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋คํํ ์ ์์ผ๋ฉฐ, ์ด๋ฏธ ์์ฑ๋ ๊ฒฝ์ฐ ์๋ก ๊ณ ์นจ ๋ฐ ์ก์ธ์ค ํ ํฐ์ ์ฐพ์ ์ ์์ต๋๋ค.
AD ๊ตฌ์ฑ ์๊ฒฉ ์ฆ๋ช
๋ ์ฐพ์ ์ ์์ ๊ฒ์
๋๋ค.