PS5 RTMP 스트림을 DNS 스푸핑으로 가로채 맥에서 받기
- PS5는 방송을 시작할 때 DNS로 Twitch 인제스트 서버 주소를 조회하므로, DNS 응답을 조작하면 RTMP 스트림 목적지를 맥으로 돌릴 수 있음.
- ingest.twitch.tv:443은 실제 RTMP 서버가 아니라 지역 서버를 알려주는 디스커버리 엔드포인트이고, 진짜 인제스트는 RTMPS(443 포트 TLS)라 self-signed 인증서가 거부되며 PS5에 커스텀 CA를 설치할 방법이 없음.
- YouTube 우회는 1935 포트 평문 RTMP라 인증서 문제가 없지만, PS5가 YouTube API로 방송 상태를 주기적으로 확인해서 약 60초 뒤 방송이 끊김.
- 방송 중 dnsmasq 로그를 보니 PS5가 ingest.global-contribute.live-video.net을 조회해 aps30.contribute.live-video.net으로 이어졌고, contribute.live-video.net을 스푸핑하면 모든 서브도메인을 한 번에 덮음.
- dnsmasq와 nginx-rtmp로 macOS에서 스트림을 받으며, 캡처 카드($100 이상) 구매나 Remote Play의 입력 지연과 설정 제약을 피하려는 목적임.
Hacker News opinions
방송 서버 호스트네임 찾는 것과 YouTube에서 스트림이 안 뜨는 문제 사이에 뭔가 빠진 것 같은데. YouTube 얘기하다가 갑자기 Twitch로 넘어가서 헷갈림.
나도. YouTube는 포기하고 Twitch로 돌아간 거임. 마지막 홉 서버가 TLS 검증을 안 해서 인증서 문제 없이 맥으로 리다이렉트되는 거더라.
live-video.net은 Twitch 도메인임. 마지막 RTMP 서버는 인증서를 안 쓴다고 보면 됨.
또 Sony의 암호화 실수네. 트래픽을 아예 평문으로 내보내고 있음.
이게 진짜 보안 문제인가? 스트림을 암호화하려는 기기 입장에서는 오히려 부담인데.
정리하면 PS5가 DNS로 목적지를 찾는데 메인 서버는 TLS라 self-signed 인증서를 못 믿게 함. 그래서 실제 Twitch 방송을 켜놓고 DNS 로그를 떠서 마지막 서버만 스푸핑한 거임. PS5 문제라기보다 RTMP/Twitch 쪽 문제에 가까움.
Sony가 Twitch로만 보내고 싶었으면 서버 TLS 인증을 강제하면 됐음. 안 하니까 영상이 어디로든 감.
nginx랑 mpv 단계를 OBS나 gstreamer로 합칠 수도 있음. gstreamer만으로도 되고.
돈으로 투표해서 게이밍 PC 사라. PS5 독점작이 15개 정도인데 뭐 하러.
Windows 쓰느니 독을 먹겠음.
난 드라이버 관리하고 안티치트 루트킷 피하는 데 시간을 씀. 이미 PS5 있고 교체 비용도 없음.
Bluetooth 주변기기 우회법이 있었으면 좋겠음. Clicks Power Keyboard를 PS5에서 쓰고 싶은데.
자기 RTMP 목적지를 직접 지정하게 해주면 안 되나. 참 쉬운 생각인데.
2026년인데 아직 평문으로 인터넷을 타는 게 슬픔. RTMP 뒤에 깔린 프로토콜도 복잡해서 익스플로잇이 수백 개는 숨어 있을 듯.
서버는 ack만 주고 복잡한 건 클라이언트가 다 함. Flash 시절 구현을 아무도 신경 안 써서 익스플로잇은 어려울 걸. 서버 쪽이 더 쉬울 듯.
이건 MITM이 필요한 거 아님? PS5가 특정 서버로 보내는 상황인데, 취약점보다 프라이버시 문제에 가까움.
RTMPS로 보낸다더니 갑자기 평문 RTMP라니 설명이 빠진 것 같음.
YouTube 연동으로 바꿔서 그럼. 거긴 RTMPS를 지원 안 함.
DNS 트릭은 신기한데 화면 공유하려고 dnsmasq까지 세팅하긴 싫음. Sony가 그냥 아무 데나 스트리밍하게 해주면 될 텐데.