Seraph: In The Darkness(暗黑) 안전 평가 및 분석

다모클레스 연구소
2023-12-01 11:29:14
수집
Damocles는 11.24일에 Seraph에 대해 심층적인 보안 평가 및 분석을 실시하였으며, 그 결과는 좋지 않았습니다.

일, 개요(게임 안전성 평가)

Seraph는 2023년 11월 22일에 3차 테스트를 개방했습니다. Damocles 팀은 11월 24일 해당 게임에 대한 안전 분석 및 평가를 진행했지만, 평가 결과는 만족스럽지 않았습니다. 첫째, 프로젝트 측이 코드에 대량의 Log 정보를 남겼으며, Log 정보를 통해 프로젝트 측이 한국 팀이 아닌 중국 팀임을 추론할 수 있었습니다. 또한, 해당 게임은 Unity를 사용하여 lua를 로드하는 방식으로 개발되었으며, Lua 코드를 보호하지 않거나 lua jit와 같은 역공학 난이도를 높이는 수단을 사용하지 않아 소스 코드가 완전히 노출되었습니다. 단지 load 함수를 hook하기만 하면 메모리에서 게임 소스 코드를 덤프할 수 있습니다. 그러나 이 게임은 ARPG 게임에 속하며, 이러한 유형의 게임은 대부분의 데이터가 서버와 동기화되기 때문에 자연적인 방지 우위를 가지고 있어 게임의 안전 문제를 어느 정도 완화시킵니다.

이, 게임 배경

Ø 평가한 게임 버전: v0.0.0.6

Ø 게임 유형 & 게임 엔진: ARPG, Unity

Ø 게임 플레이에서 발생할 수 있는 문제:

n 순간 이동

n 가속(가속 이동, 가속 스킬 발동)

n 자동 사냥

n 배율 수정

n 무적

n Buff 수정(캐릭터가 지속적으로 영혼 결정석 생산을 증가시키는 buff 또는 기타를 유지할 수 있도록)

삼, 게임 안전성 분석

게임 코드 보호:

분석 과정:
  1. 서로 다른 엔진은 서로 다른 분석 모드를 가지고 있으므로, 게임 EXE를 확보한 후 먼저 게임이 사용하는 엔진을 확인해야 합니다. 게임 기본 정보를 인식하여 이 게임이 Unity로 개발되었음을 확인할 수 있습니다.

  1. 게임 디렉토리의 GameAssembly.dll 및 global-metadata.dat를 통해 게임이 il2cpp 컴파일 모드를 사용하고 있음을 확인하여 iL2Cppdumper를 통해 소스 코드를 복원했습니다.

그러나 dump.cs 파일에서 게임과 관련된 코드 로직을 발견하지 못하여, 이 게임이 C#으로 개발되지 않고 lua로 로드되고 있다고 추측했습니다. 그래서 코드 Hook을 통해 게임 loadbuff 관련 함수를 호출하여 게임의 실제 소스 코드를 얻었습니다.

그리고 게임 소스 코드에서 몇 가지 흥미로운 주석을 발견했습니다:

분석 결론:

Seraph는 게임 코드 보호 측면에서 0점을 받았으며, 보호가 전혀 없습니다. Lua로 개발된 전통적인 게임에서는 종종 맞춤형 lua 인터프리터를 사용하고 LuaJit을 통해 일정 수준의 코드 보호를 수행합니다. Seraph는 견고한 코드 보호 메커니즘이 없기 때문에 악의적인 플레이어가 코드를 분석하는 문턱과 비용이 매우 낮습니다. 만약 치트가 발생한다면, 정상 플레이어에게는 불공평하며, 게임의 경제 모델에 영향을 미칠 가능성도 있습니다.

게임 기본 반치트:

분석 과정:
  1. 기본 반치트 감지 측면에서, 우리는 주로 Lua 파일을 교체하여 게임이 외부 로직을 로드하고 실행하는지 여부를 판단합니다.

  2. CE 주입 도구 DLL을 통해 게임의 Log 파일에서 제3자 Log가 출력되는지 확인합니다.

  1. lua 로직을 수정하여 게임 내의 치명타율 등의 데이터를 수정해보았고, 효과가 있으며 게임에서 검사가 존재하지 않음을 발견했습니다. (속성 데이터 수정을 통해 보다 직관적으로 표시하기 위한 것이며, 일반적으로 이 필드는 서버에 저장되므로 로컬 수정 시에는 아무런 효과가 없습니다.)
분석 결론:
  1. Seraph는 반치트 능력 측면에서 0점을 받았으며, 악의적인 사용자가 자유롭게 치트를 할 수 있습니다.

  2. Lua를 게임에 다시 로드하는 주요 원리는: 이 행동이 Lua 기반 게임 치트의 기초가 되며, 이 점이 제대로 이루어지지 않는다면 다른 측면의 반치트는 더욱 나빠질 것입니다.

게임 로직 문제

분석 과정:

현재 게임의 소스 코드를 확보했으므로, 분석 과정에서 로직 층에 대한 안전 분석을 진행했으며, 프로토콜 층에 대한 분석은 진행하지 않았습니다. 로직 층 측면에서 우리는 다음 몇 가지에 대해 안전 테스트를 진행했습니다.

주로 캐릭터 초기화 시 속성 변조: (해당 부분의 민감한 속성이 많지 않아 수익을 증가시킬 수 없음을 발견했습니다.)

다음으로 능동 공격 시의 일부 스킬 관련 변조: (해당 부분은 단지 표시만 할 뿐 실제 피해 검증에 참여하지 않음을 발견했습니다.)

마지막으로 몬스터가 공격받을 때의 로직 수정 (해당 점을 수정해도 실제 의미가 없으며, 이 모듈의 주요 목적은 이벤트를 트리거하여 기록하는 것이고 실제 계산에 참여하지 않음을 추측합니다.)

분석 결론:
  1. Seraph는 우리가 무작위로 변조한 세 가지 점에서 모두 효과가 없었으며, 이는 피해 계산과 표시가 분리되어 진행되거나 서버에서 계산되어 안전성이 어느 정도 보장됨을 증명합니다. 점수는 3점 0입니다.

  2. 그러나 일부 피해 판정이 로컬에 저장되어 있어 치트 공간은 여전히 존재합니다.

게임 RPC 분석

해당 게임은 protolbuf를 사용하여 프로토콜 상호작용을 진행하며, Web3 관련 상호작용도 이 방식을 사용합니다. 현재 이 부분에 대해서는 세밀한 테스트가 진행되지 않았으며, 후속적으로 ProtoBuf 부분에 대한 세밀한 테스트가 진행될 수 있습니다.

WEB3 안전 분석:

개요:

현재 Seraph는 토큰을 발행하지 않았으며, Mint 계약은 프록시 계약을 사용하는 일반적인 NFT721 계약으로 총 공급량은 3225입니다. Mint 및 크로스 체인 모두 Role 제어가 있으며, 체인 상의 안전성은 통제 가능합니다.

게임 내 경제 시스템 안전:

현재 Seraph의 금전 획득 주요 방식은 영혼 결정석을 중심으로 하며, 영혼의 상자를 제작하거나 열 때 모두 서버에서 판단합니다. 클라이언트는 단지 요청을 발동할 뿐이며, 안전성은 주로 서버에서 통제하므로, 그 안전성 평가는 클라이언트 안전 평가 범위에 포함되지 않습니다. 후속적으로 Damocles는 모든 요청을 정리하고 블랙박스 테스트를 진행할 수 있습니다.

Damocles에 대하여

Damocles labs는 2023년에 설립된 보안 팀으로, Web3 산업의 안전에 집중하고 있으며, 사업 내용에는 계약 코드 감사, 비즈니스 코드 감사, 침투 테스트, GameFi 코드 감사, GameFi 취약점 발굴, GameFi 치트 분석, GameFi 반치트가 포함됩니다.

우리는 Web3 안전 산업에서 지속적으로 힘을 쏟고 있으며, 가능한 한 많은 분석 보고서를 출력하여 프로젝트 측과 사용자에게 GameFi 안전에 대한 인식을 높이고, 산업의 안전한 발전을 촉진할 것입니다.
Twitter:@DamoclesLabs Discord: 채널 입구

체인캐처(ChainCatcher)는 독자들에게 블록체인을 이성적으로 바라보고, 리스크 인식을 실제로 향상시키며, 다양한 가상 토큰 발행 및 조작에 경계해야 함을 상기시킵니다. 사이트 내 모든 콘텐츠는 시장 정보나 관련 당사자의 의견일 뿐이며 어떠한 형태의 투자 조언도 제공하지 않습니다. 만약 사이트 내에서 민감한 정보를 발견하면 “신고하기”를 클릭하여 신속하게 처리할 것입니다.
체인캐처 혁신가들과 함께하는 Web3 세상 구축