상세 컨텐츠

본문 제목

월드 오브 워크래프트: 비싼 대가를 치르게 하는 단순한 코드 한 줄

국내외 보안동향

by 알약(Alyac) 2016. 7. 26. 14:27

본문

월드 오브 워크래프트: 비싼 대가를 치르게 하는 단순한 코드 한 줄

World of Warcraft: one simple line of code can cost you dearly


며칠 전, 새로운 타입의 골드, 아이템 사기가 퍼지기 시작했습니다. MMORPG에서의 사기는 보통 소셜 엔지니어링 기법을 통해 이루어집니다. 하지만 이 공격은 소셜 엔지니어링 기법을 동반할만 아니라, WoW 인터페이스의 숨겨진 기능을 악용합니다.


유명한 길드의 멤버인 것으로 보이는 캐릭터가 사용자의 게임 캐릭터로 다가와 희귀한 탈것, 무기 등 좋은 아이템들을 공유해 준다며 대화를 시도합니다. 이후 공격자는 채팅창에 아래의 명령어를 입력하라고 설득합니다.


/run RemoveExtraSpaces=RunScript


WoW 인터페이스와 애드온은 Lua 스크립트 언어로 쓰여있습니다. RemoveExtraSpaces와 RunScript 둘 다 합법적인 기능이며, WoW의 Lua API의 일부분이기도 합니다. 하지만 채팅창에 이 코드 한 줄을 입력하는 순간, 사용자 WoW 인터페이스의 행동 방식을 바꿔버립니다.


/run은 이 후 따라오는 텍스트를 Lua 스크립트로 이해하겠다는 명령어입니다. RemoveExtraSpaces는 텍스트에서 불필요한 스페이스를 삭제하는 기능입니다. 그리고 RunScript는 텍스트를 Lua 코드로써 실행하는 기능입니다. (/run 명령어와 유사함)


RemoveExtraSpaces 기능은 플레이어가 받는 모든 새 챗 메시지에 호출됩니다. 위에 언급한 명령어가 RemoveExtraSpaces 기능을 소프트웨어 개발에서 ‘후킹’이라고 불리는 RunScript로 대체시킵니다. 원래의 기능이 덮어쓰기되면, 모든 새로운 챗 메시지는 Lua 코드로 이해되어 즉시 실행됩니다. 


플레이어가 이 명령어를 채팅창에 입력하면, 아래와 같은 상황이 벌어질 수 있습니다.


사용자가 채팅창에 코드를 입력한 후 보내기 직전

<이미지 출처 : https://blog.gdatasoftware.com/2016/07/28809-world-of-warcraft-one-simple-line-of-code-can-cost-you-dearly>

 

공격자가 챗 메시지를 피해자에게 보냄

<이미지 출처 : https://blog.gdatasoftware.com/2016/07/28809-world-of-warcraft-one-simple-line-of-code-can-cost-you-dearly>

 

해당 챗 메시지는 Lua 코드로 해석되어 실행

<이미지 출처 : https://blog.gdatasoftware.com/2016/07/28809-world-of-warcraft-one-simple-line-of-code-can-cost-you-dearly>


위 상황은 해당 기능을 악용했으나, 아직은 피해자에게 해를 끼치지 않는 사례입니다. 이것이 위험한 이유는 지금부터 공격자가 피해자의 인터페이스를 원격으로 제어할 수 있기 때문입니다. 이는 일반적인 트로이목마들이 컴퓨터에서 보여주는 행동 방식과 매우 유사합니다. 그들은 유용해보이는 무언가로 위장하고, 서서히 악의적인 행동을 하기 시작합니다. 테스트가 아닌 실제 상황에서는 공격자가 'test' 메시지 창을 띄우는 것이 아닌, 아래와 같은 스크립트를 실행하기 시작할 것입니다.


피해자가 그의 인터페이스에 백도어를 열면 공격자는 아래의 챗 메시지를 보냅니다.


공격자가 새로운 커뮤니케이션 채널을 설정함

<이미지 출처 : https://blog.gdatasoftware.com/2016/07/28809-world-of-warcraft-one-simple-line-of-code-can-cost-you-dearly>


만약 명령어가 실행되었을 경우, 위 메시지가 피해자에게 보여지지는 않지만 즉시 실행될 것입니다. 이후 피해자는 자신의 채팅창이 더 이상 동작하지 않는다는 사실 때문에 게임을 재시작할지도 모릅니다. 공격자는 이러한 문제를 재빨리 해결하기 위해 새로운 커뮤니케이션 채널을 생성하고, 피해자의 채팅 기능을 다시 회복해주는 명령어를 피해자에게 보냅니다.


따라서 피해자는 공격자가 이를 공개하기 전까지 자신에게 무슨 일이 일어나고 있는지 알 수 없게 됩니다.


공격자는 피해자의 인터페이스 전체 제어 권한을 가지고 있으므로, 피해자의 캐릭터가 어디에 위치해있는지 파악한 후 근처로 갈 수 있습니다. 게임 WoW에서는 유저간 아이템 거래가 가능한데, 두 명의 캐릭터가 근접해 있어야만 합니다. 공격자는 피해자의 캐릭터로 접근한 후 거래창을 열고, 아이템이나 골드(게임머니)를 거래창에 등록한 후 ‘거래 승낙’ 버튼을 누를 수 있습니다. 공격자가 피해자를 가상으로 털어버릴 수 있다는 이야기입니다.


또한 공격자가 이러한 클라이언트를 악용하여 길드멤버나 친구들 등 다른 플레이어들에게 메시지를 보낼 수도 있습니다. 보통 친구나 동료들로부터 받은 메시지는 믿을만하다고 여기기에 문제가 발생할 수 있습니다.



예방 방법


예방 방법은 의외로 간단합니다. 사용자가 스크립트 코드를 채팅창에 입력하지 않으면 됩니다. 게임상 누군가 낯선이가 입력하라고 하는 모든 메시지를 의심해봐야 합니다.


해당 이슈는 블리자드에 의해서만 고쳐질 수 있습니다. 이렇게 특수 함수를 덮어쓰기 하는 것이 불가능하도록 조치를 취해야 합니다. 블리자드는 최근 출시예정 애드온인 ‘Legion’을 선공개 했습니다. 또한 사용자가 스크립트를 입력했을 때, 이를 실행하기 전 경고 메시지를 출력하도록 변경한 상태입니다.

 

블리자드가 새로운 패치에 추가한 경고

<이미지 출처 : https://blog.gdatasoftware.com/2016/07/28809-world-of-warcraft-one-simple-line-of-code-can-cost-you-dearly>


커스텀 스크립트 실행을 시도했습니다. 

스크립트를 실행하면 당신의 캐릭터가 해킹 당해 아이템이나 골드를 잃을 수 있습니다. 

커스텀 스크립트를 실행하시겠습니까?


만약 사용자가 'Yes'를 선택하면 이 메시지는 영구적으로 비활성화됩니다. 클라이언트를 재시작하더라도 돌아오지 않습니다. 이 메시지를 다시 보기 위해서는 설정 파일에서 한 줄만 삭제하면 가능합니다.


삭제 되어야할 코드 명:  SET AllowDangerousScripts "1"

파일 이름: config-cache.wtf 

경로: World of Warcraft\WTF\Account\<ACCOUNTNAME>\




출처 :

https://blog.gdatasoftware.com/2016/07/28809-world-of-warcraft-one-simple-line-of-code-can-cost-you-dearly



관련글 더보기

댓글 영역