32100/UDP - Pentesting PPPP (CS2) P2P ์นด๋ฉ๋ผ
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์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
๊ฐ์
PPPP (a.k.a. โP2Pโ)๋ CS2 Network๊ฐ ๋ง๋ ๋ ์ ์ฅ์น ์ฐ๊ฒฐ ์คํ์ผ๋ก, ์ ๊ฐํ IP ์นด๋ฉ๋ผ ๋ฐ ๊ธฐํ IoT ์ฅ์น์ ๋๋ฆฌ ๋ด์ฅ๋์ด ์์ต๋๋ค. ์ด ์คํ์ rendezvous, NAT traversal (UDP hole punching), UDP ์์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต โ์ ๋ขฐ์ฑ ์๋โ ์คํธ๋ฆผ, ID ๊ธฐ๋ฐ ์ฃผ์ ์ง์ ์ฒด๊ณ๋ฅผ ์ ๊ณตํ์ฌ ๋ชจ๋ฐ์ผ/๋ฐ์คํฌํ ์ฑ์ด ์ฅ์น ID๋ง ์๋ฉด ์ธํฐ๋ท ์ด๋์์๋ ์ฅ์น์ ์ ์ํ ์ ์๊ฒ ํฉ๋๋ค.
๊ณต๊ฒฉ์ ๊ด์ ์ ์ฃผ์ ํน์ฑ:
- ์ฅ์น๋ ID ์ ๋์ฌ๋ณ๋ก ๊ณต๊ธ์ ์ฒด๊ฐ ์ด์ํ๋ ์ธ ๊ฐ์ rendezvous ์๋ฒ์ ๋ฑ๋กํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ๋์ผํ ์๋ฒ์ ์ง์ํ์ฌ ์ฅ์น์ ์ธ๋ถ/๋ฆด๋ ์ด ์ฃผ์๋ฅผ ์ฐพ๊ณ UDP hole punching์ ์๋ํฉ๋๋ค. ๋ฆด๋ ์ด ํด๋ฐฑ์ด ์กด์ฌํฉ๋๋ค.
- ๊ธฐ๋ณธ ์๋ฒ ๋ฆฌ์ค๋๋ UDP/32100์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค. ์ต์ํ์ โhelloโ ํ๋ก๋ธ๋ง์ผ๋ก ์๋ฒ์ ์ผ๋ถ ์ฅ์น๋ฅผ ์ง๋ฌธํํ ์ ์์ต๋๋ค.
- ์ ํ์ blanket cipher์ ํน์ํ โCRCEncโ ๋ชจ๋๊ฐ ์กด์ฌํ์ง๋ง ์ค๊ณ์ ์ฝํ๋ฉฐ ์ธ๊ธฐ ์๋ ์ํ๊ณ(์: LookCam)์์๋ ์ผ๋ฐ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค.
- ์ปจํธ๋กค ํ๋ ์ธ์ ๋ณดํต PPPP ์คํธ๋ฆผ ์์ JSON ๋ช ๋ น์ด๋ฉฐ, ์ธ์ฆ ๋๋ฝ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ๋ฒ๊ทธ๊ฐ ํํ ์กด์ฌํฉ๋๋ค.
์ผ๋ฐ์ ์ธ ์ฅ์น ID ํ์(LookCam ๊ณ์ด): PREFIX-######-CCCCC, ์ฑ์์๋ ์ถ์ฝ๋์ด ํ์๋ฉ๋๋ค(์: GHBB-000001-NRLXW โ G000001NRLXW). ๊ด์ฐฐ๋ ์ ๋์ฌ: BHCC (โhekaiโ), FHBB ๋ฐ GHBB (โmykjโ).
Discovery and Enumeration
- Internet exposure: ๋ง์ PPPP ์ํผ๋ ธ๋๊ฐ 32100/UDP ํ๋ก๋ธ์ ์๋ตํฉ๋๋ค. ์๋ ค์ง ํ๋ฌธ ๋ฐ ์๋ฌ ๋ฌธ์์ด ์๋ต์ผ๋ก ํธ๋ํฝ ์บก์ฒ๋ ์ธํฐ๋ท ์ค์บ๋์์ ์ฝ๊ฒ ์๋ณ๋ฉ๋๋ค.
- LAN discovery: ์ฅ์น๋ ์ข ์ข ๋ก์ปฌ ๋ธ๋ก๋์บ์คํธ์ ์ํธํ๋์ง ์์ ๊ฒ์์ ์๋ตํฉ๋๋ค. ์ด๊ฑฐํ๋ ค๋ฉด Paul Marrapeseโs script๋ฅผ ์ฌ์ฉํ์ธ์:
- https://github.com/pmarrapese/iot/tree/master/p2p/lansearch
์ฐธ๊ณ :
- ์ฑ์๋ ๋๋ ํ๋ ์๋ฒ IP ๋ชฉ๋ก๊ณผ ํ๋กํ ์ฝ ํค๋ฅผ ํฌํจํ โinit stringsโ๊ฐ ๋ด์ฅ๋์ด ์์ต๋๋ค. ์ด ๋ฌธ์์ด๋ค์ Android/iOS/Windows ํด๋ผ์ด์ธํธ์์ ์ฝ๊ฒ ์ถ์ถ๋๋ฉฐ ์ข ์ข ๋ง์ ์ ํ ๋ผ์ธ์์ ์ฌ์ฌ์ฉ๋ฉ๋๋ค.
NAT Traversal and Transport
- Rendezvous ์๋ฒ๋ ์ฅ์น์ ์ฃผ๊ธฐ์ keepalive๋ก๋ถํฐ ์ฅ์น์ ๊ณต์ฉ ๋งคํ์ ํ์ตํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ๋งคํ์ ์ํด ์๋ฒ์ ์ง์ํ ๋ค hole punching์ ์ฌ์ฉํด ์ง์ UDP ํ๋ก์ฐ๋ฅผ ์๋ํฉ๋๋ค. NAT traversal์ด ์คํจํ๋ฉด ์ง์ ๋ PPPP ๋ฆด๋ ์ด ํธ์คํธ๊ฐ ํธ๋ํฝ์ ์ค๊ณํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ โ์คํธ๋ฆผโ์ UDP ์์ ์์ฒด ACK/retx ๋ก์ง์ ๊ตฌํํฉ๋๋ค; ์ฌ์ ์ก ๋ฃจํ๊ฐ ์ฌ๋ฌ ์ฝ๋ ๊ฒฝ๋ก์ ์ค๋ณต๋์ด ์์ค์ด ์ฌํ ๋งํฌ๋ฅผ ํ๋ฌ๋ฉํ ์ ์์ต๋๋ค.
์ฝํ โ์ํธํโ ๋ฐ ํค ๋ณต๊ตฌ
CS2 ์คํ์๋ ๋นํจ์จ์ ์ธ ๋ ๊ฐ์ง ๋ฉ์ปค๋์ฆ์ด ์กด์ฌํฉ๋๋ค:
- Blanket cipher (optional) โ P2P_Proprietary_Encrypt
- LookCam์ ์ฌ์ฉํ๋ OEM์์๋ ๋ณดํต ๋นํ์ฑํ๋์ด ์์ต๋๋ค.
- ์ฑ์ธก โinit stringโ์ด ํค ์ฌ๋ฃ๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ด๋ ์ ํจํ 4๋ฐ์ดํธ ํค(~2^32 ๊ณต๊ฐ)๋ก ์ถ์๋ฉ๋๋ค.
- ์ค์ฉ์ ์ธ ์๋ ค์ง ํ๋ฌธ: UDP/32100์ผ๋ก ๋ณด๋ด๋ MSG_HELLO์ ์ฒ์ 4๋ฐ์ดํธ๋ F1 00 00 00๋ก ์๋ ค์ ธ ์์ต๋๋ค. ๋จ์ผ ์ํธํ ํธ๋์ ฐ์ดํฌ๋ฅผ ๊ด์ฐฐํ๋ฉด ๋น ๋ฅธ ํค ๋ณต๊ตฌ๋ ๊ฒ์ฆ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ผ๋ถ ์ ์ด ๋ฉ์์ง(์: MSG_REPORT_SESSION_READY)๋ ์ฑ ์ ๋ฐ์ ๊ณต์ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๋์ฝ๋ฉ ํค๋ก ํญ์ ์ํธํ๋ฉ๋๋ค.
- Registration โencryptionโ โ PPPP_CRCEnc
- ์ด๋ฆ๊ณผ ๋ฌ๋ฆฌ CRC๊ฐ ์๋๋๋ค. 4๋ฐ์ดํธ ํจ๋ฉ ์ฒดํฌ(์ธ์ฆ๋์ง ์์)๊ฐ ์๋ ๊ณ ์ ๋ฐ๋ณต XOR ํค์คํธ๋ฆผ์ ๋๋ค.
- LookCam ๋คํธ์ํฌ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฅ์น โ ์๋ฒ ๋ฑ๋ก(MSG_DEV_LGN_CRC)์ ๋ํด์๋ง CRCEnc๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋๋จธ์ง ๋๋ถ๋ถ์ ํธ๋ํฝ์ ํ๋ฌธ์ผ๋ก ์ ์ง๋ฉ๋๋ค.
Simple keystream recovery for PPPP_CRCEnc (Python):
# ciphertext: captured bytes of an encrypted registration message
# known: guessed/known plaintext region (e.g., JSON or constant header)
keystream = bytes([c ^ p for c, p in zip(ciphertext[:len(known)], known)])
# Decrypt more bytes by XORing with the repeating keystream
pt = bytes([c ^ keystream[i % len(keystream)] for i, c in enumerate(ciphertext)])
์ํ ๋ชจ๋ธ ๋ถ์ผ์น: CS2 ์๋ฃ๋ ๊ธฐ๋ฐ์ฑ(confidentiality)๋ณด๋ค๋ ๊ฐ์ง ๋๋ฐ์ด์ค ๋ฑ๋ก์ ํตํ DoS ๋ฐฉ์ง์ ์ด์ ์ ๋ง์ถ๋ค. ์ด๊ฒ์ด ๋ฑ๋ก(registration)๋ง ์ ํ์ ์ผ๋ก โencryptionโ๋๊ณ ๋น๋์ค/์ปจํธ๋กค์ ์ ํ์ ์ด๊ฑฐ๋ cleartext๋ก ๋จ์ ์๋ ์ด์ ๋ฅผ ์ค๋ช ํ๋ค. ๊ณผ๊ฑฐ PPPP ์๋ฒ๋ค์ rate limiting์ด ์์ด ๋๊ท๋ชจ brute-force/abuse๊ฐ ๊ฐ๋ฅํ๋ค.
Control Plane: JSON Commands and Auth Bypass
๋ง์ PPPP ์นด๋ฉ๋ผ ํ์จ์ด๋ ์ธ์ ์ด ์๋ฆฝ๋๋ฉด JSON ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค. ์: ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ด๋ โloginโ:
{
"cmd": "LoginDev",
"pwd": "123456"
}
Common vulnerability in LookCam-class devices:
- ํ์จ์ด๊ฐ LoginDev ํ๋ฆ๊ณผ ์์ฒญ๋ณ pwd ํ๋๋ฅผ ๋ชจ๋ ๋ฌด์ํจ (CWE-287, CWE-306). ์ฅ์น๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ฒ์ฆํ์ง ์๊ณ ์ด์ ๋ช ๋ น์ ์๋ฝํจ.
- Exploitation: LoginDev๋ฅผ ๋ณด๋ด์ง ์๊ฑฐ๋ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฌด์ํ๊ณ ๋ช ๋ น์ ์ง์ ์ ์ก.
Useful commands observed:
- searchWiFiList โ iwlist๋ฅผ ํธ์ถํจ; ์์ ์ถ๋ ฅ์ /tmp/wifi_scan.txt์ ๋จ์.
- DownloadFile โ ๊ฒฝ๋ก ์ ํ ์์ด ์์ ๊ฒฝ๋ก ์ฝ๊ธฐ primitive.
Workflow to deanonymize location via transient artifacts:
- Send {โcmdโ:โsearchWiFiListโ}.
- Read /tmp/wifi_scan.txt via DownloadFile.
- Submit BSSID MACs to a geolocation API (e.g., Google Geolocation API) to localize the camera to tens of meters.
Memory-Safety to RCE on Embedded Firmware
Typical unsafe pattern (pseudocode from handlers):
char buf[256];
char *cmd = cJSON_GetObjectItem(request, "cmd")->valuestring;
memset(buf, 0, sizeof(buf));
memcpy(buf, cmd, strlen(cmd)); // no bound check
- Trigger: any cmd string > 255 bytes causes a stack buffer overflow (CWE-120/121).
- Protections: no stack canary; DEP/NX and ASLR commonly disabled on these builds.
- Impact: straightforward single-stage shellcode or classic ROP/ret2libc on the deviceโs CPU (e.g., ARM) for full compromise and LAN pivoting.
See also:
Stack Overflow
Cloud Storage Abuse (HTTP, Device-ID only)
๋ง์ LookCam ๋ธ๋๋ ํ์จ์ด๊ฐ ๋ นํ๋ฌผ์ api.l040z.com (BHCC์ ๊ฒฝ์ฐ apicn.l040z.com)์ผ๋ก HTTP๋ง ์ฌ์ฉํด ์ ๋ก๋ํฉ๋๋ค. ๊ด์ฐฐ๋ ์ :
- ํ์จ์ด์ TLS ์์; ์ ์ก์ ํ๋ฌธ HTTP.
- API โauthenticationโ์ device-ID๋ง ์ฌ์ฉ: ID๋ฅผ ์๊ณ ์์ผ๋ฉด ๋ นํ๋ฌผ์ ๊ฐ์ ธ์ฌ ์ ์์.
- 5 MiB ๋จ์ ์ฒญํฌ๊ฐ ํ๋์ฝ๋ฉ๋์ด ์์.
- ์๊ฒฉ ํ์ฑํ: ๋ถํ ์ ์ฅ์น๋ http://api.l040z.com/camera/signurl ๋ฅผ ํธ์ถํ๊ณ , ์๋ฒ ์๋ต์ด ์ ๋ก๋ ์์ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํจ. ๋ชจ๋ฐ์ผ ์ฑ์ ์ ๋ก๋๊ฐ ๋ฐ์ํด๋ cloud โdisabledโ๋ก ํ์๋ ์ ์์. ์ 3์๊ฐ ํผํด์ ID์ ๋ํด cloud๋ฅผ ๊ตฌ๋งค/ํ์ฑํํ๋ฉด ๋ฌด๋จ์ผ๋ก ์์ ์์ง์ด ๊ฐ๋ฅํจ.
์ด๋ classic cleartext sensitive transmission (CWE-319)์ด๋ฉฐ ์๋ฒ ์ธก authZ ๋ถ์ฌ๊ฐ ๋ฌธ์ ์ ๋๋ค.
Device-ID Enumeration and Guessing
- ID ํ์: PREFIX-######-CCCCC ๋ฐ ์ฑ ๋จ์ถํ (์: GHBB-000001-NRLXW โ G000001NRLXW).
- Prefix ๊ณ์ด: BHCC (hekai servers), FHBB ๋ฐ GHBB (mykj servers). ๊ฐ prefix๋ HA์ฉ์ผ๋ก ์ธ ๊ฐ์ rendezvous ์๋ฒ์ ๋งคํ๋จ.
- 5์ ๊ฒ์ฌ์(verifier)๋ 22๊ฐ์ ๋๋ฌธ์ ์ํ๋ฒณ์ ์ฌ์ฉ (A, I, O, Q ์ ์ธ) โ 22^5 โ 5.15M ์กฐํฉ/์ซ์ ๊ธฐ๋ฐ.
- ์ด์ ์ฐ๊ตฌ์์ ์๋ฒ ์ธก rate-limiting์ด ์๋ ๊ฒ์ผ๋ก ๊ด์ฐฐ๋์ด ๋ถ์ฐ ์ถ์ธก์ด ์ค์ฉ์ ์. verifier ์๊ณ ๋ฆฌ์ฆ์ ๋ง์ถคํ์ด๋ฉฐ ์ฑ/ํ์จ์ด ๋ฆฌ๋ฒ์ฑ์ผ๋ก ์ถ์ธกํ๊ฑฐ๋ ์ป์ ๊ฐ๋ฅ์ฑ์ด ๋์.
์ค๋ฌด์ ID ์ถ์ฒ:
- ๊ณต์ ์ฑ ์ ๋ฐ์ ํ์๋๋ฉฐ ์ฌ์ฉ์ ์คํฌ๋ฆฐ์ท/๋น๋์ค์์ ์์ฃผ leaked.
- AP ๋ชจ๋ SSID๊ฐ device ID์ ๋์ผ; ๋ง์ ์ฅ์น๊ฐ ์จ๋ณด๋ฉ ์ค์ ์คํ AP๋ฅผ ๋ ธ์ถํจ.
Forcing Remote Reachability
์ผ๋ถ ํ์จ์ด๋ rendezvous ์๋ฒ์ ๋๋ฌํ ์ ์์ ๋๊น์ง ์ฌ๋ถํ ๋ฃจํ์ ๋ค์ด๊ฐ๋๋ค. egress๊ฐ ์ฐจ๋จ๋๋ฉด ์ฅ์น๋ ์ฌ๋ถํ ์ฌ์ดํด์ ๋จ์ ์์ ์๊ฐ ์ฅ์น๋ฅผ ์ธํฐ๋ท์ ์ฐ๊ฒฐํ๊ฒ ๊ฐ์ ํ๊ณ PPPP rendezvous์ ๋ ธ์ถ๋๊ฒ ๋ฉ๋๋ค.
Practical Exploitation Playbook (for repro/defense testing)
- Obtain device ID
- ์ฑ UI ๋๋ AP SSID์์; ๊ทธ๋ ์ง ์์ผ๋ฉด PREFIX+number๋ฅผ ์ด๊ฑฐํ๊ณ 22^5 verifier ๊ณต๊ฐ์ ๋ธ๋ฃจํธํฌ์ค.
- Establish PPPP session
- CS2 PPPP client ๋๋ ์ปค์คํ ์ฝ๋ ์ฌ์ฉ; ์ฑ init ๋ฌธ์์ด์์ ์๋ฒ IP ๋ชฉ๋ก๊ณผ init keys๋ฅผ ์ถ์ถ; UDP hole punching ์๋; ์คํจํ๋ฉด relay๋ก ํด๋ฐฑ.
- Bypass auth
- LoginDev๋ฅผ ๊ฑด๋๋ฐ๊ฑฐ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฌด์; ์ด์์ฉ JSON์ ์ง์ ์ ์ก.
- Exfiltrate files / geo-locate
- Send {โcmdโ:โsearchWiFiListโ}; ๊ทธ๋ฐ ๋ค์ DownloadFile โ/tmp/wifi_scan.txtโ; BSSIDs๋ฅผ geolocation API์ ์ ์ถ.
- Achieve RCE
- cmd > 255 bytes๋ฅผ ๋ณด๋ด ์คํ ์ค๋ฒํ๋ก์ฐ๋ฅผ ์ ๋ฐ; ROP/ret2libc๋ฅผ ๊ตฌ์ฑํ๊ฑฐ๋ shellcode๋ฅผ ์ฃผ์ (์คํ canary/DEP/ASLR ์์).
- Cloud access
- device ID๋ง์ผ๋ก api.l040z.com ์๋ํฌ์ธํธ์ ์ํธ์์ฉ; 5 MiB ์ฒญํน ์ ์; cloud ํ์ฑํ๋ ์ฑ UI ์ํ์ ๋ฌด๊ดํ๊ฒ /camera/signurl๋ก ์ ์ด๋จ.
Related Protocols/Services
554,8554 - Pentesting RTSP
References
- A look at a P2P camera (LookCam app) โ Almost Secure
- PPPP device discovery on LAN (Paul Marrapese)
- LookCam analysis (Warwick University, 2023)
- General PPPP analysis โ Elastic Security Labs (2024)
- CS2 Network sales deck (2016) โ PPPP/threat model
- Anyka hardened community firmware
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์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


