카테고리 없음

XIGNCODE 취약점 유출

1binni9 2025. 5. 2. 00:09


앞선 포스팅의 연장선이다.
최근 다양한 온라인 게임에서 사용되고 있는 보안 솔루션 XIGNCODE(이하 사인코드)는 게임사 중심의 운영 정책에 따라 유연하게 보안 수준을 조절할 수 있다는 특징이 있다.

사인코드는 특히 ‘일회용 실행 코드’를 활용해 논클라이언트 봇을 탐지하고, 광범위하게 사용되는 해킹 툴이나 그 변형된 버전까지 차단할 수 있도록 설계되어 있다. 여기에 더해 불법 시스템, MAC 주소, 하드웨어 단위의 차단 기능도 제공되어 게임 운영자 입장에서 보다 세밀한 제어가 가능하다.

기능 면에서는 스피드핵, 커널 함수 변조, 악성 스레드, 키보드 하이재킹, 자동클릭(광클), 누킹, 드랍핵, 메크로 등 다양한 비정상 행위를 탐지하는 데 초점이 맞춰져 있다.

사인코드는 원론적으로 게임 내 공평성에 위해를 가할 수 있는 각종 해킹툴을 방지하는 목적의 프로그램이다. 그래서 많은 게임사들이 메모리 조작이나 패킷 변조처럼 게임 구조에 직접적인 영향을 주는 행위들을 방지하기 위해 이 솔루션을 사용하고 있다.

해당 프로그램의 취약점이 유출되었다는 점에서 앞선 포스팅에서 언급한 디도스 사건이 발생했다는 추측이 나오게 되는데, 이는 게임 플레이어들에 대한 실시간 IP 탈취가 가능해졌기 때문이다. (특정 이벤트 패턴을 보내면 사인 코드는 분석을 위하여 IP를 저장한다. IP를 복호화해낼 수만 있다면, 디도스 공격을 발생시키는 건 상당히 쉽다.) Zero Day Exploit으로부터 비롯된 해킹 기능이 인터넷 불법 배팅 유저들에게 전파되어 LCK 퍼즈 이전에도 스트리머들이 디도스 공격으로 방송을 중단하는 사례가 있었다. 이처럼 LCK 실시간 중계 때 자신이 배팅한 팀에게 유리한 쪽으로 디도스 공격을 가한 것으로 보여진다.


의문 1. 사인코드는 SSD, HDD 수명을 단축시킨다?


“ 하드 디스크나 SSD에 프리징 현상이 생긴다. 플로링 게이트 내의 산화막이 마모되는데, 이때 전자기장의 간섭으로 전자 유출이 발생하고 이로 인해 쓰기 과정이 발생한다. 그러므로 SSD의 수명에 영향을 미친다는 주장 ”

사인코드 측 답변: 일반적으로 SSD의 재기록 가능 횟수가 한정되어 있다. 재기록 가능 횟수란 지우고 다른 내용을 기록하는 것을 말한다. 즉 내용을 지우고 새로 기록하는 횟수가 한정되어 있다는 말이다. 따라서 적혀 있는 내용을 읽는 것과 수명은 큰 상관이 없다. 사인코드는 단순히 읽기 동작만 있을 뿐 랜섬웨어처럼 해당 파일의 내용을 변경하고 새로 기록하는 등의 행위를 하지 않는다. 따라서 순수하게 내용을 읽는 것과 같으므로 SSD의 수명과는 상관이 없다.


SSD에 수명이 있다는 사실은 일반인들에게 잘 알려져, 가장 널리 퍼진 루머다. 핵심은 사인코드가 지속적인 I/O(하드웨어 리소스 사용)로 컴퓨터 성능을 저하한다는 것이고 SSD 수명은 체감 가능한 수준으로 단축되지 않는다. 전자기장 이야기는 무시 가능한 터무니없는 이야기다.


의문2. 파일을 외부 서버로 전송한다?


“ 한 번이라도 켰던 프로그램이나 연결된 하드웨어 심지어 동영상, 음악마저 '사인코드'에서 감지하고 있다. 감지한 파일을 회사 측으로 전달한다. 사용자는 어떤 파일이 전달되었는지 알지 못한다. ”

사인코드 측 답변: '사인코드'가 아무 이유 없이 파일에 접근하지 않는다. 일부 조건들이 충족될 경우 검사 대상 목록에 추가하기도 한다. 해당 파일이 실행파일이 아님에도 접근하는 이유는 실제 동영상 파일이 맞는지 확인하기 위함이다. 확장자는 동영상이지만, 실행 가능한 코드인 경우도 존재하며 이러한 경우 특수한 목적으로 제작된 프로그램에 의해 실행할 수 있어 지기도 한다.

따라서 파일의 정체를 확인하기 위해 해당 파일을 읽고 있다. 또한, 해당 파일을 외부 서버로 전송하거나 하는 일은 없다. 해당 파일에 대한 검사는 모두 로컬에서 발생한다. 로컬 PC의 그 어떠한 파일도 직접 수집하지 않는다. 탐지된 파일에 한해 추후 제재 근거나 오진 여부를 판단할 수 있도록 탐지된 파일의 명칭, 해시 등의 정보만 수집한다.

한 번이라도 실행시키면 기록이 남는다. (리버스 로우라이트)


일단, 파일전송 부분은 루머로 치부해도 좋다. 신뢰할만한 증거는 현재까지 밝혀진 바 없다. 리버서들 사이에서도 사인코드가 해킹툴 제작자의 소스코드나 PDB 파일(소스코드에 준하는 프로그램 정보가 담긴 파일), dll을 웰비아쪽으로 전송해 확인하는 것 같다는 소문이 돈 적이 있다. 그래서 주의 깊게 분석해 보았으나, 스캔한 파일 전체를 개발사에 전송하는 코드는 발견하지 못했다.

다만, 통상 리버싱을 할 때는 작업량이 많아 일반적으로 프로그램 전체를 분석하지 않는다. 그러므로 의혹의 소지는 남아있다. 사인코드는 구조상 사인코드의 dll 파일에 파일 전송 코드가 없다고 해도 서버의 요청에 따라 시스템의 모든 파일을 포함한 개인정보 유출이 언제든 가능한 상황이다.

사인코드에 파일을 전송하는 코드는 없는 것이 거의 확실하나, 해킹툴이 감지된 경우, 서버에서 정보 수집 프로그램을 내려받아 실행하는 것도 확인되었다. 해킹툴로 판단되는 프로그램 전체가 전송되는 것으로 보인다. 해당 프로그램의 기능은 언제든 추가/변경될 수 있다.

의문3.
지속적 스캐닝으로 하드웨어 성능을 저하한다?

“게임을 깔고나니 컴퓨터가 점점느려지는 것 같다. 게임은 SSD에 깔았는데 왜 자꾸 HDD를 읽는지 모르겠다. 왜 모든 파일을 지속해 스캐닝하나. 게임 폴더만 하면 되는 것 아닌가.”


사인코드 측 답변: 사인코드는 모든 파일을 검사하지 않으며 불필요하게 지속적으로 스캐닝하지 않는다. '사인코드'는 랙을 줄이기 위해 검사 루틴들의 스케줄링 정책을 사용한다. 성능 관련 부분은 우리 쪽에서 민감하게 주시하고 있는 부분이며 지속적으로 개선해 나가기 위해 노력하고 있다.

일반적으로 해킹툴 사용자의 경우 게임 시작과 동시에 해킹툴을 사용하는 경향이 매우 높다. 또한, 해킹툴을 사용하지 않는 사용자는 지속적으로 정상 플레이를 할 가능성이 높으므로 '사인코드'의 모든 검사 루틴은 점감 효과를 받도록 스케줄링 된다. 반대로 해킹툴을 사용하려고 한다면 시스템을 더욱 많이 사용하게 된다.

해커가 해킹툴을 게임 폴더에 넣는 경우는 거의 없다. 보통 다른 곳에서 해킹툴을 실행한다. 게임 폴더가 아닌 다른 곳을 검사하는 것이 필요한 이유다. 그리고 전체 드라이브를 스캔하지 않는다. 실행과 관계된 부분에 대해서 검사를 수행한다. 백신의 전체 드라이브 검사를 해보면 알겠지만, 순식간에 전체를 검사할 방법은 아직 개발한 곳이 없다. 전체 검사는 아주 오랜 시간이 걸린다.

파일을 스캔하는 것은 수집과 상관없이 해당 파일이 해킹툴인지 아닌지 판단하기 위함이다. 파일을 읽지 않고는 해킹툴인지 아닌지 알 수 없기 때문이다.

사인코드의 검사 대상 파일은 아주 광범위하며, 시스템 경로 내 파일, 임시 폴더 등 소프트웨어가 존재할 수 있는 거의 모든 영역의 파일을 확장자를 가리지 않고 검사 대상으로 삼는다.

보안 솔루션은 랙을 유발하고 성능을 저하할 수 있다. 사인코드가 사용하는 각종 후킹은 시스템상 다른 모든 프로그램의 속도를 감소시킨다. 지속적인 검사기능은 디스크나 CPU 등의 자원을 지속해서 사용하며 게임 프로그램의 안정성을 떨어뜨려 크래시가 발생하는 등의 문제가 생긴다.

후킹으로 인한 성능 저하는 카스퍼스키 등 세계적인 백신과 비교해 가벼우며 검사로 인한 성능 저하는 하이엔드 PC에서는 체감이 크게 안 되는 수준이라고 보면 된다.

성능 저하는 사인코드의 심각한 문제점이 아니다. 오히려 사인코드의 버그로 일어나는 게임 클라이언트의 예기치 못한 종료나 블루스크린이 심각하다.


의문4.
해외 게임은 사인코드를 사용하지 않는다.

" 해외 게임은 사인코드를 사용하지 않는다. 사인코드가 괜찮은 보안 솔루션이라면 왜 해외에서 사용하지 않는가. 2010년 게임하이(現 넥슨지티) 기업현황을 보면 관계회사 현황에 (주)웰비아닷컴의 지주 비율(50.38)이 명시되어 있는데, 이래서 국내 업계가 사인코드를 밀어주는 거 아닌가. "
* 게임하이 (現 넥슨지티)는 2010년 이후 웰비아닷컴의 지분을 소유하고 있지 않다.

사인코드 측 답변: 사인코드는 스팀 게임과 연동을 지원한다. 과거에 스팀에 연동된 게임이 있으며 현재도 연동해서 사용하는 데에 아무런 문제가 없다. 현재 스팀에서 서비스 중인 게임도 있다. 스팀 연동이 불가능하다는 것은 사실이 아니다.

또한, 해외에서 사인코드는 국내보다 해외에 더 많이 공급되어 있다. 아프리카를 제외한 거의 모든 지역에 서비스되는 게임에 탑재되어 있다. 오해의 소지를 줄이자면 해외에서 사용되고 있다고 이해하면 된다. 한 가지 게임 서비스에만 사용되더라도 사용은 되는 것이기 때문이다.


의문5.
윈도우 커널 모드 드라이버 설치, 루트킷아닌가?

"xhunter1.sys 라는 드라이버를 동의 없이 컴퓨터에 몰래 설치한다. 나는 동의한 기억이 없는데 왜 무단으로 권한을 획득하는 건가."


사인코드 측 답변: 권한이 낮은 상태에서 권한이 높은 대상을 검사할 수 없으므로 권리자 권한이 필요하다. 이러한 완전한 권한을 가지기 위해서 '사인코드'는 커널 모드 드라이버를 설치하여 로드하고 있다. 대부분의 게임 보안 제품이 커널 모드 드라이버를 설치하고 있으며 게임사의 정책에 따르고 있다.

커널 모드 드라이버 설치를 원하지 않는 게임의 경우에는 게임 실행 시점에 커널 모드 드라이버를 설치 및 로드 하지 않는다. 또한, 시스템에 지속적으로 남아서 모니터링을 하거나 CPU 자원을 소모하거나 하지 않는다.

출처 : 알데이드


관리자 권한은 사용자가 '예'를 눌러 부여했으므로 무단획득이 아니다. 관리자 권한을 사용해 xhunter1.sys를 설치하는 것이다.

다만, 관리자 권한이 없다고 해킹툴을 탐지하지 못하는 것은 아니다. 기능 상한선이 존재한다. 커널(드라이버) 레벨 은폐를 사용하는 해킹툴은 감지해낼 수 없다. 하지만, xhunter1.sys를 분석해본 결과 현재 사인코드도 커널 레벨 후킹을 수행하는 해킹툴을 감지할 수 없는 것은 명확하다.

의문9. 왜 서드파티 보안프로그램이 관리자 권한을 요구하나?

“악성코드와 동일한 방법으로 컴퓨터에 접근하는 것 아닌가? 관리자 권한을 무단으로 획득해 좀비 PC로 감염시킬 위험성을 내포하고 있다.”


사인코드 측 답변: 사실, 조금 철학적인 문제다. 높은 권한이 있다면 더 많은 부분을 검사해서 발견해 낼 수 있다는 것을 알지만, 과연 옳은 결정이냐는 것이다. 여기에 대한 가치판단은 저마다 다르고 상황마다 다를 수 있다.

높은 권한은 해킹툴을 발견할 가능성을 높여주지만, 사용성이 떨어지고, 낮은 권한은 해킹툴을 발견할 가능성은 낮아지지만, 사용성은 높아진다. 이는 어떤 한 가지를 일방적으로 고수할 문제가 아니라 게임 운영자가 게임에 맞게 적당히 절충하면 되는 문제다.

결국, 솔루션 개발자 입장에서 정답은 옵션을 제공하는 것이다. 게임운영자가 자신의 게임 특성에 맞춰 적절하게 설정해서 사용할 수 있게 말이다. '사인코드'는 게임사에 옵션을 제공한다. '사인코드'는 3가지 권한 범위를 제공한다. 낮음으로 사용하는 경우 권한 설정에 따라서 '관리자 권한'을 요구하지도 않으며 '커널 모드 드라이버'를 설치 및 로드하지 않는다.

보통 단계에서는 커널 모드 드라이버가 구동되지 않은 경우에 현재 로그인 계정에 대한 권한을 조사한다. 관리자 계정임에도 게임만 관리자 권한을 획득하지 못한 경우에는 게임 실행이 중단된다. 높음의 경우 항상 '관리자 권한'을 요청한다. 그러므로 '사인코드'가 무조건 '관리자 권한'을 요구한다는 것은 사실이 아니다.

확인을 위해 사인코드를 채용한 게임사 게임 개발자 지인에게 SDK(개발자용 소프트웨어 개발 환경) 확인을 요청했다. 증언에 의하면, SDK에는 어떠한 옵션도 켜고 끌 수 있다는 내용을 포함한 문서가 없다. 차단 근거를 표기하거나, 관리자 권한 사용 여부 기능은 물론, VM/멀티로드 허용, 드라이버 로드 여부, 감지 수준 등등의 어떠한 기능도 개발자가 설정할 수 없다.

개발자가 입력 가능한 정보는 '라이센스 키'와 해킹툴이 감지됐을 때, 서버로 전송할 '감지된 유저명'을 지정하는 것뿐이다. 필요한 경우, 담당자에게 직접 전화해서 "이 기능 끌 수 있는 거예요? 꺼주세요."라고 구두로 문의해야 한다고 한다.

그러나 어떤 기능을 켜고 끌 수 있는지조차 SDK에 명시돼 있지 않다. 개발자는 해당 기능이 있는지조차 몰랐다고 한다.

경쟁 제품인 '핵쉴드'와 판이하게 차이가 나는 부분이다. 핵쉴드는 스피드핵 감도 조절, 멀티로드 등 각종 기능 허용 및 비허용 방법을 SDK에 명시하고 쉽게 개발할 수 있게 돼 있다.

사인코드와 같이 루트킷 기능을 담은 커널모드 드라이버는 그 자체로 보안 취약점이다. 해당 드라이버를 통해, 운영체제에서 시스템 권한의 파일 수정 명령 등을 내릴 수 있다. 일종의 권한 상승을 위해 뒷문을 열어놓은 느낌이라고 생각하면 된다.

이런 드라이버가 로드돼 있으면, 관리자 권한을 요구하지 않고 관리자 권한을 취득하거나, 그보다 높은 시스템 권한을 취득하는 일이 가능하다. 드라이버를 사용하지 않는 프로그램은 블루 스크린을 띄울 수 없다. 프로그램 안정성면에서 비교할 수 없는 차이가 난다.




사인 코드와 관련된 여러 가지 의문점들로 인하여 디도스 공격의 원인이라고 확증하는 목소리들이 커진 것으로 보인다. 언급했다시피 아직 찾아내지 못한 제로데이 취약점이 여전히 산재하고 있을 확률이 높으므로 보안에 있어 더욱 각별한 주의가 필요해 보인다.