36. 기본적인 보안에 대한 개요
본문 바로가기
Reversing & Cheat Engine

36. 기본적인 보안에 대한 개요

by boosting 2024. 3. 21.
728x90

보안을 우회하려면 보안이 어떻게 돌아가는지를 알아야...

말 그대로 지피지기면 백전백승이라는 말이랑 같습니다. 앞으로 무엇을 하시든 간에

대부분의 프로그램에는 그에 걸맞는 보안 체계가 있는 경우가 태반일겁니다.

그 프로그램에서 변조나 데이터 정보를 얻고 싶다면 그 보안을 우회를 하든 구멍을 살짝

내서라도 틈을 봐야 안에 내용을 잠깐이라도 보든가 하겠죠?

 

언젠가 잠깐 짚고 넘어간 적이 있습니다. 게임 보안으로 가장 많이 만나게 되는게

Xigncode와 NGS(Nexon Game Security), 타 플랫폼에서는 배틀아이와 EAC 정도겠죠.

이 보안들은 저희가 당연하게 켰었던 치트엔진 같은건 기본적으로 다 감지를 합니다.

세부적으론 감지 방식에서 차이는 있겠지만 큰 틀은 벗어나지는 않습니다. 보안 개발자도

결국 무에서 유를 창조하는게 아니라 있는 API 함수들을 활용하여 만들기 때문이죠.

 

이들 중 NGS를 제외한 나머지 게임 보안 프로그램들은 기본적으로 메모리에 액세스를

하지 못하게끔 차단이 돼있습니다. 즉 치트엔진을 키더라도 어셈 명령어들이나 이러한

데이터들이 안 보인다는 것이죠. 어떻게 이것이 가능할까요?

 

Xigncode 3

 

이런식으로 게임 실행이 되기 전 보안이 먼저 실행이 됩니다. 보안이 실행되고 난 이후 치트엔진을

켜보면 치트엔진이 계속 최소화 되면서 메모리는 보이지 않는 현상을 볼 수 있습니다.

 

Xigncode 3

 

프로세스를 어태치 했지만 메모리는 보이지 않는 상태이고 얼마 뒤에 게임이 꺼지고 메박이 뜹니다.

 

Xigncode 3

 

우선 메모리를 볼 수 있어야 게임 내부를 쳐다보든지 말든지를 할 수 있겠죠.

일단 당장 제일 쉬운 방법은 보안이 실행 되는 것을 막는 행위입니다. 그러면 볼 수는 있죠.

하지만 이 Xigncode 3의 경우 안이 제대로 동작하고 있는지에 대한 검증 방식의 일종인

하트비트라는게 있습니다. 하트비트라는게 뜻대로 보면 심장 박동이라는 뜻인데요.

사람이 심장박동이 멎으면 죽는거죠? 게임 서버에서도 이 보안 프로그램이 살아서

잘 작동중인지를 검증을 하는거죠. 신호가 안 오면 죽었다고 판단하고 게임 서버를

끊어버리는 식으로 작동을 할 것입니다. 안하는 게임의 경우는 Thanks 하고 외치면 되고..

물론 이 하트비트마저도 구현을 해서 정상적으로 동작중이라고 뻥카를 치는 방법도

존재합니다만 여기서 다룰 부분은 아니기에 일단은 넘어가겠습니다.

 

 

그러면 이렇게 메모리를 못 보게 보호하는 방법이 뭔지를 알아봐야 하는데 이 예시의 경우

xhunter1.sys라는 드라이버를 이용하여 메모리에 액세스를 못하게 차단하는 것입니다.

ObregisterCallbacks라는 콜백함수를 사용하여 차단하는 방식입니다. 직접 설명하기엔

잘 설명된 곳이 좀 있어서 링크로 첨부하도록 하겠습니다.

 

 

[x64 Windows]프로세스 보호기능 구현

집에서 쉬면서 주말동안 했던 코딩했던 것들을 정리해봅니다.본 포스팅 은 프로세스 보호기능 구현에 관련해 작성되었으며 드라이버 테스트환경은 Windows 7 x64에서 이루어졌음을 알립니다. 최근

jeep-shoes.tistory.com

 

위의 형식을 토대로 응용을 했다고 보시면 되겠죠. 그러면 우리가 생각해볼 수 있는건 뭐인가..

똑같이 드라이버를 만들어서 xhunter1.sys가 ObregisterCallbacks 후킹을 해둔 곳을 Restore 해줘야하나..

아니요, 그럴 필요는 없습니다. 다음으로 해볼건 xhunter1.sys라는 드라이버가 로드되지 못하게끔

막아버리는 형식이 있겠죠. 이 경우엔 예전에는 먹혔는데 지금은 막았을지 모르겠습니다.

일단 막힌건 둘째 치더라도 메모리를 볼 수 있음에는 변함이 없긴 하니까요.

 

그러면 sys 같은 드라이버를 로드할 때 사용하는 API 함수가 뭔지를 알아봐야겠죠.

OpenServiceA, OpenSerivceW 이렇게 2개가 있겠습니다. 한 번 잠깐 보도록 하죠.

 

Xigncode 3

 

걸리고 난 뒤에 ESI 부분을 보니까 xhunter1인걸 봐서 드라이버 로드 하려는 상황에 걸린거 같습니다.

 

Xigncode 3

 

간단하게 걸린 채로 드라이버를 로드 못하게끔 리턴을 시켜보고 진행해봅니다.

치트엔진 감지하는 곳은 그대로 살아있기 때문에 꺼지긴 했습니다만.. 메모리 액세스는 가능해졌습니다.

이런식으로 메모리를 액세스 못하게 차단하는 건 드라이버를 올려서 하는 행위다 < 라는 것만

기억해두시면 좋을거 같습니다. 

 

그러면 치트엔진이라는걸 감지하는 방법엔 뭐가 있을까요?

대표적으로 떠올릴 수 있는건 캡션명과 PID일것입니다. 이를 읽는 API 함수들도 다 있기 때문에

그런 API들을 하나씩 디버깅 해보면서 하나씩 우회해가는 과정이 보안 우회라고 볼 수 있습니다.

 

결론

 

사실 여기에서 볼 수 있는 모든 문구가 표적이 될 수 있습니다. 실제로 거의 모든 문구를 감지하는 보안도

존재를 하니까요.. 이 모든 감지를 다 없앨수가 없어서 치트엔진을 개조하는 경우가 더러 있습니다.

개조한 엔진들은 일반적인 엔진 형태는 갖추고 있지만 문구라든지 이런건 전부 랜덤화이거나 이렇거든요.

우회라는 건 다 떠먹여줄 수 있는 영역이 아니기 때문에 직접 해봐야하고 직접 하게 되면 엄청난 시간을

소비하는 과정을 거칠겁니다. 핵을 찾고픈게 있다고 하면 시간 투자를 할 각오를 하시는게 좋겠습니다.

728x90

'Reversing & Cheat Engine' 카테고리의 다른 글

37. 하드 밴이 무엇인가  (0) 2024.04.10
35. Cheat Engine Tutorial 8  (0) 2024.03.20
34. Cheat Engine Tutorial 7  (0) 2024.03.19
33. Cheat Engine Tutorial 6  (0) 2024.03.18
31. Cheat Engine Tutorial 4  (0) 2024.03.16