BJ-DDoS에 대해: An expert's perspective on BJ-DDoS

2023년 12월 26일 치지직(네이버 사의 인터넷 방송 플랫폼), 트위치에서 송출된 "2023 자낳대 시즌 2" 대회 풀리그 1일 차 경기에서 여러 스트리머를 대상으로 인터넷 마비, 게임 튕김 등의 문제가 발생했다. 이는 리그 경기에도 영향을 주었으며, 경기 중단 상태가 여러 번 걸리고 보는 시청자들은 답답함을 표출했다.
[그림 1] 디도스 공격으로 인해 게임에서 튕겨 경기가 일시 정지된 화면 (출처)

개요

2023년 12월 말부터 지속해서 인터넷 방송 스트리머(이하 BJ)를 대상으로 한 디도스 공격이 이루어지고 있다. 해당 사례는 이슈가 된 시점(2024년 1월 중순)으로부터 4월까지도 계속 발생했다. 처음에는 BJ들을 대상으로만 일어난 공격이라, 단순히 '방송 플랫폼 혹은 방송 시 사용되는 플러그인(ex. 도네이션 관련 플러그인, 채팅 및 화면 조정 관련 플러그인 등)의 문제'라고 생각했다.

하지만 2024년 2월 25일 "2024 LCK 스프링 DRX vs DK 경기"의 첫 번째 매치 때 네트워크 이슈로 경기가 중단될걸 보아, '단순 방송 플랫폼 혹은 방송 시 사용되는 플러그인의 문제점이 아닌 다른 문제점이 있을 것이다'라고 생각했다. (2월 25일에 발생한 네트워크 이슈와 관련해서 LCK(라이엇 코리아) 측도 경기 매칭 중 발생한 네트워크 이슈에서 디도스 공격 정황이 발견됐다고 발표했다.)

따라서, 본 글에서는 지속해서 발생하고 있는 BJ 대상 사이버 테러 사건에 대해 자세히 살펴보며, 이에 대한 다양한 가설을 제시하고자 한다.


가설 #1

방송 송출 프로그램 및 방송 도우미 봇의 취약점 이용
[그림 2] 인터넷 방송 송출 구조

먼저 인터넷 방송 송출 구조는 [그림 2]와 같다. 스트리머가 시청자에게 직접 방송 영상을 송출하는 구조가 아닌, 송출 서버를 통해 시청자에게 송출하는 구조이다. 방송 송출 과정에서 쓰이는 프로그램으로는 방송 송출 프로그램(ex. OBS Studio), 방송 알리미 봇(ex. 치직), 방송 도우미 봇(ex. nightbot)이 있다. 첫 번째 가설은 방송 송출 과정에서 쓰이는 다양한 프로그램들의 취약점을 이용했다는 것이다.

방송 송출 과정에서 쓰이는 프로그램들을 하나씩 자세히 살펴보면 다음과 같다.

  • 방송 송출(ex. OBS Studio) : 각 사용자에게 부여되는 스트림 키를 이용해 송출 PC와 방송 플랫폼을 연결함
  • 방송 알리미(ex. 치직) : 각 방송 별 부여되는 방송 채널 ID를 받아와 시청자에게 알림 전송
  • 방송 도우미(ex. nightbot) : 도우미 봇 내의 command 기능을 이용해 스트리머가 방송에 필요한 내용을 명령어 화 → 방송 관련 특정 값을 받아오지 않음
[그림 3] 방송 송출 관련 프로그램 동작 과정

만약 디도스 사례가 방송하는 스트리머만을 대상으로 발생했다면, 앞서 언급한 고유 값들(스트림 키, 방송 채널 ID)을 공격자가 어떻게 탈취했는지에 대해 초점을 맞춰야 한다. 하지만, 실제 대회(ex. 02.25 DRX vs DK - 2024 LCK 스프링)에서도 디도스 공격 정황이 발견되었다. 또한, 비교적 디도스가 가장 많이 발생한 스트리머들(괴물쥐, 랄로, 페이커, 한동숙)의 방송을 살펴보면 방송 도우미 봇을 따로 사용하고 있지 않는 것으로 확인되며, 방송 알리미 봇이 동작하는 디스코드 서버도 따로 운영되고 있지 않는 것을 확인했다.

이러한 이유 등으로 해당 디도스의 원인이 "방송 송출 과정에서 쓰이는 프로그램의 취약점"이 아니라, 다른 원인이 있을 것으로 생각했다.


가설 #2

게임 가드 취약점 이용

2023년 1월 21일경 해커로 인해 라이엇의 소스 코드가 유출된 사례가 있었다.

라이엇 게임즈 ”해커와 협상 없다”…LOL 소스코드 경매 올라 - 글로벌이코노믹
미국 게임사 라이엇 게임즈의 대표작 ‘리그 오브 레전드’ 등의 소스 코드와 데이터들이 경매에 오른 것으로 알려졌다. 사측이 ”소스 코드 유출을 빌미로 돈을 요구하는 협상에 응하지 않을 것”이라고 발표한지 6일만의 일이다.사이버 보안 전문지 CPO매거진의 31일 보도에 따르면 해커들 사이
해커가 Riot Games에서 훔친「LoL(리그 오브 레전드)」의 소스 코드를 판매중
미국 게임 기업 Riot Games에서 도난당한 인기 게임「LoL(리그 오브 레전드)」의 소스 코드가 다크 웹에서 경매에 걸렸습니다. Hackers auction alleged source code for League of Legends Hackers auction alleged source code for League of Legends Threat actors are auctioning the alleged source code for Riot Game’s League of Legends and the Packman anti-c…

위 사례는 게임판에서는 가장 이슈가 됐던 사례이며, 유출된 소스 코드는 다크 웹에 경매로 올라가면서 더 화제가 됐던 사례이다. 이때 유출된 코드는 "xigncode"라는 게임 가드의 취약점이며, "xigncode"는 국내에 대부분의 게임사가 사용하는 게임 가드이다. 현재 "리그오브레전드(이하 롤)"에서는 xigncode와 유사한 코드로 만들어진 "데마시아"라는 게임 가드를 사용한다. 즉, 두 번째 가설은 롤에서 사용하고 있는 게임 가드 "데마시아"와 연관된 코드인 xigncode의 취약점 유출된 사례를 통하여, 이를 이용해 롤 가드의 취약점의 취약점을 이용할 수 있었다는 것이다.

먼저 xigncode는 2010년 6월에 처음 출시된 핵 방지 프로그램으로, 현재 국내에서 유명한 게임들(ex. 롤, 배틀그라운드, 로스트아크 등)은 물론 대부분의 게임사가 사용하고 있는 프로그램이다. 롤의 경우 xigncode 소스코드와 유사하게 작성된 '데마시아'라는 핵 방지 프로그램을 이용 중이다.

정리하면, 데마시아와 유사하게 작성된 xigncode의 취약점 노출로 인해 디도스가 불특정 다수를 대상으로 성행할 수 있었다고 생각했다. 불특정 다수라고 지칭한 이유는 롤을 플레이하는 스트리머만이 아닌 다른 스트리머(ex. 01.24 남순(버츄얼 관련 콘텐츠 진행), 01.31 로아사랑단(로스트 아크 플레이), 02.06 감스트(이풋볼 합방) 등)도 공격을 받았기 때문이다.

  • 롤 → xigncode와 유사한 코드인 데마시아에 xigncode의 취약점 적용
  • 다른 게임 → 2023년에 유출된 xigncode의 취약점 이용

참고로 라이엇 측에서도 공격이 일어나는 사태에 대해 인지했는지 2월 말 패치 노트에서 "뱅가드"라는 라이엇 자체 부정행위 방지 프로그램을 도입한다고 발표했고, 이는 현재 차차 적용 중인 것으로 보인다. (4월 17일 기준으로 롤을 실행하면 뱅가드 설치할 수 있는 환경인지 아닌지 판단하는 팝업 창이 뜬다.) 그러다보니 확실히 2월보다는 공격이 덜 발생하고 있는 것으로 보인다.

[개발 인사이드] 뱅가드 x 리그 오브 레전드 - 리그 오브 레전드
리그 오브 레전드에 찾아온 라이엇의 뱅가드

가설 #3

롤 API 악용

2월 28일에 아프리카 TV 스트리머인 김민교는 계속되는 디도스 공격으로 롤을 하기 어려운 상황이었다. 김민교는 나름의 공격 우회 방법으로 중국 서버에서 롤 하는 것을 택했다. 중국 서버에서 플레이 하기 시작한 이후부터 김민교는 디도스 공격을 받지 않았고, 실제로 원활하게 롤 방송을 진행하기도 했다.

이런 점들을 미루어 보면, 한국 서버에만 문제가 있는 거고 그 문제를 게임 가드(데마시아) 문제만이 아니라, 롤 클라이언트 문제도 존재할 수 있다고 생각한다. 그 이유는 한국 서버에서 플레이하는 스트리머 및 선수들을 대상으로 지속적인 공격이 이루어지기 때문이다. 그렇게 나온 세 번째 가설이 공격자가 롤 클라이언트 내 API를 노출 및 악용해 지속해서 특정 대상에 대해 공격을 수행한다는 것이다.

먼저 롤 데이터 통신 구조를 살펴보면 다음과 같다.

[그림 6] 롤 데이터 통신 구조

롤은 MMORPG 게임이며, 클라이언트와 서버 접속 연결을 유지한 상태로 플레이를 진행한다. 게임 내에서 이루어지는 모든 데이터 변경은 실시간 서버 통신으로 DB에 반영된다. 실시간 서버 통신을 하며 사용자가 플레이하므로, 서버 과부하를 피하고자 국가별 서버 운영으로 사용자를 분산시킨다.

실시간 서버 통신 때 사용되는 API는 공개 API와 비공개 API인 내부 API로 나뉠 수 있다. 공개 API는 주로 외부 개발자들을 위해 사용되며, 내부 API는 실제 데이터 통신에 사용된다. 물론 롤의 경우도 공개 API와 내부 API로 구성되어 있으며, 공개 API는 아래의 링크에서 확인할 수 있다.

Riot Developer Portal

라이엇의 공개 API를 보면 사용자 계정 정보를 조회(ACCOUNT)하거나 게임 내 사용자의 간단한 정보를 조회(MATCH)할 수 있는 API가 있다. 공개 API로도 사용자 정보를 조회해 공격에 이용할 수 있다는 것이다. 하지만 이 API들은 라이엇에서 발급해 주는 API 키가 있어야 하며, 발급되는 키는 24시간 동안만 유효하다.

또한, 공개 API 요청 횟수는 1초에 20번, 2분에 100번으로 요청 횟수가 제한되어 있으므로 많은 요청을 보내 서버를 다운 시킨다는 것이 불가능하다.

[그림 5] 공개 API 요청 횟수 제한

위 내용을 보면 공개된 API로는 디도스 발생이 어려워 보인다. 하지만 LCK 대회 서버가 공격당하는 것과 같은 롤 클라이언트 문제로 보이는 공격 사례도 발생했었다.

02.25일 2024 LCK 스프링 경기 중 DRX와 DK 경기가 네트워크 이슈로 약 2시간가량 경기 중단 상태가 걸렸었다. 이후 두번째 경기(KDF vs BRO)는 더 이상 진행이 어렵다고 판단해 비공개 경기로 대처 됐었다. 디도스 방지를 위해 비공개로 대처 되었지만, 두 번째 경기 결과가 송출되기 전 결과가 유출되었었다.

[그림 6] 02.26 KDF vs BRO -2024 LCK 스프링 유출된 경기 결과 중 일부

[그림 6]을 보면 벤픽과 모든 스코어, 승패까지 다 유출된 것을 볼 수 있다.

[그림 7] 02.25 DRX vs DK 경기 중 발생한 네트워크 이슈와 관련 LCK 측 공지

추후 LCK 측은 02.25 DRX vs DK - 2024 LCK 스프링에 발생한 네트워크 이슈에 대해 디도스 공격 사태라고 직접 언급했다. 이후 다른 날의 경기(02.28 T1 vs FearX - 2024 LCK 스프링)에서 발생한 네트워크 관련 이슈도 디도스 공격 때문이라고 언급했다. LCK 측은 디도스 방지를 위해 6주차 경기(3월 첫째 주 경기)를 모두 비공개로 전환했다. 공개 API로는 디도스 공격이 어렵지만 LCK 측에서도 직접 언급하고 비공개된 경기 결과가 유출된 사례를 봤을 때, 공격자가 내부 API를 탈취 및 악용해 공격을 발생시켰다고 추측할 수 있다.

이외에도 디스코드에서 특정 사용자 아이디를 입력하면 IP를 알려주는 프로그램([그림 8] 참고)이 판매된 사례가 있다.

[그림 8] 디스코드 내 공유되었던 IP 확인 프로그램

위 내용들을 토대로 이번 디도스 사태의 원인이 롤 클라이언트 문제라고 생각했다. 그중 게임 서버와 동작하는 과정에서 넘어가는 클라이언트의 IP가 탈취되어 발생한 공격이라고 생각해, 내부 API가 유출되어 이런 사태가 일어났다고 생각했다.

  • 한국 서버(클라이언트)에서만 디도스 발생
    • e.g. 김민교 중국 서버 플레이 시 디도스 발생 X
  • 대회 서버가 공격받은 사례 존재
    • LCK 측에서는 확실한 디도스 방지를 위해 오프라인 서버를 도입함
  • 녹화 중계로 진행된 경기 결과 유출
  • 디스코드 내 공유되는 IP 확인 프로그램

가설 #3은 LCK 대응(오프라인 경기 서버 도입)과 가설을 뒷받침하는 사례들이 많은 것으로 보아 가장 유력한 가설이라고 생각 들지만, 롤을 플레이 하지 않은 스트리머에게도 공격이 발생했다는 점을 생각하면 이는 공격자의 침투 경로 보단 지속적인 공격을 위한 방법에 좀 더 맞는 가설이라고 생각 든다.


마치며

이번 글에서는 최근 몇 달 내에 발생한 디도스 사례, 일명 BJ-DDoS와 관련해 추측할 수 있는 내용들을 정리해 보았다. ​물론 정확한 원인은 피해 PC와 서버를 분석해 봐야만 알 수 있다. 하지만 내가 생각했을 때 가장 가능성 있는 시나리오는 2023년 1월에 유출된 xigncode의 취약점을 이용해 피해 PC 및 서버에 침투했고, 그중 롤의 경우 취약했던 API를 악용했기 때문에 지속적인 공격이 이루어질 수 있었다는 것이다.

실제 분석을 진행하지 않으면 어디까지나 가설이지만, 그래도 이번 사건을 기점으로 우리가 즐겨하는 게임들이나 사용하는 프로그램들이 마냥 안전하지 않다는 경각심을 가지는 것이 좋을 것 같다.

You've successfully subscribed to PLAINBIT
Great! Next, complete checkout to get full access to all premium content.
Error! Could not sign up. invalid link.
Welcome back! You've successfully signed in.
Error! Could not sign in. Please try again.
Success! Your account is fully activated, you now have access to all content.
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.