2014.12.20 22:58

최근, 1주일+a 동안 즐겁게 핵쉴드를 분석해서 내리는데 성공했습니다. 그래서 정리도 할 겸 끄적여봐야지~ 싶은 포스트.

*개발자나 리버싱 좋아하시는 분들 가볍게 보고 가시라고, 또 이걸 보고 스크립트키디가 핵쉴드를 내려서 큰 파장이 되지 않도록, 코드나 기술적인 부분의 상세사항은 적지 않습니다.

분석해본 결과 핵쉴드는 크게 치트엔진이나 디버거 등을 이용한 메모리 해킹+매크로 등의 자동플레이 툴, 논클라이언트 봇을 방지 기능을 가지고 있었습니다.

 

생각나는대로 적어야지..

 

인터페이스

게임 프로그램은 EhSvc.dll을 로드하고, 핵쉴드에서 제공하는 SDK에 따라 클라이언트 프로그램을 개발합니다. EhSvc.dll이 핵쉴드의 본체이며, 거의 모든 보안기능은 얘가 합니다.

대강 이렇게 작동합니다.

1. Ehsvc.dll 로드

2. Ehsvc.dll 안에 있는 intialize 함수 호출

이 과정에서 어떤 어떤 보안 기능을 사용할 것인지, 라이센스 정보 등을 전달합니다.

드라이버 로드

Ehsvc.dll 내부에 있는 드라이버를 추출해 기억이 잘 안나는데 temp folder같은데에 파일 만들고 즉시 서비스로 로드합니다.

드라이버 통신에는 수시로 바뀌는 AES키로 암호화된 내용으로 이것저것 보냅니다.

옛날에는 이것저것 기능이 매우매우많았으나, ms가 서명 안한 드라이버는 못올리게 된 이후로 아주 많은 부분이 삭제된 정황이 코드에 남아있네요.

그래서 지금 주 기능은 프로세스에 접근하는 유저모드 API를 막는 것, 멀티 instance(통칭 멀티로더)를 체크 하는 기능입니다.

3. 게임 실행

각종 상황에 대해 클라이언트에 콜백을 전달해줍니다. 스피드핵이나 해킹툴이 감지되었다 등등.

가장 빡치는 기능 중 하나는, 해킹 시도에 대한 콜백이 전달된 후 클라이언트가 스스로 종료하지 않으면 핵쉴드가 강제로 프로세스를 종료해버립니다. 메모리나 코드 보고있는데 계속해 꺼지니 여간 번거로운게 아님.

해킹툴 체크, 디버거 체크, 디버그 레지스터 체크 등 무수한 체크.

코드 수정이 가능하다면 우회하는 건 어렵지 않음

무수히 무수히 무수히 많은 CRC체크

정신병 걸릴뻔 했습니다. 다 뚫고나니 시원함

해킹툴 등의 체크를 무력화하는 것이 쉬운 대신 CRC에 목숨건듯한 느낌이 남.

서버에서 보내는 핵쉴드 인증 패킷을 처리합니다.

서버에서 요청하는 인증은 몇개인지 모르겠으나

현재 핵쉴드가 해킹 툴을 감지했는지에 대한 여부

클라이언트 CRC

Ehsvc.dll CRC

클라이언트 CRC(0x1000바이트씩 국소적으로)

기타 무수히 많은 인증

등을 요청에 따라 적절히 암호화해서 보냅니다.

이부분은 민감한 부분이니만큼 VM이 하도 많아서 짜증나네요.

4. 게임 종료

드라이버를 내리려고는 합니다만, 많은 경우에 성공적으로 내리지 못합니다..

 

메모리 해킹 방지 기능

아시다시피 메모리해킹은 기본적으로 완벽하게 막을수가 없습니다. 컴퓨터 전체가 가상화돼있지 않은 한 모든 메모리 쓰기 및 읽기를 감지하는 것은 기본적으로 불가능합니다. CPU에서 지원하질 않아요. 그래서 핵쉴드는 1차적으로는 드라이버를 올려 프로세스의 메모리를 읽으려는 시도를 막고있습니다. 이 방법으로는 유저모드 어플리케이션의 메모리 해킹을 거의 100% 막을 수 있습니다.

문제는 똑같이 드라이버를 사용해 메모리를 읽는 툴은 막을수가 없습니다.

때문에, 이런 툴들에 대해서는 "감지"하는 것이 유효한 전략입니다. "메모리 해킹 툴이 감지됐으니 종료됩니다." 라는 메세지를 띄우고 스스로 종료되는 겁니다.

 

아.. 더 나가면 게임 해킹의 역사를 설명해야 되네... 그건 싫으니 이만 생략합니다.

 

하여튼 그렇기 때문에 해킹툴 감지 기능은 필수입니다.

분석 결과 감지 기능은 크게 3가지 정도로 나뉩니다.

1. 핸들 체크

현재 열린 모든 핸들의 패턴을 체크합니다. 특정 뮤텍스가 열렸는지 체크하기도하고, ... 등등

2. 프로세스 체크

프로세스의 특정 메모리를 해쉬를 떠서, DB에 있는 내용과 일치하는 것이 있는지 체크합니다.

3. V3 엔진

미니멀한 v3 백신 엔진을 가져와서 탐지하던데, 자세한건 모르겠네요. 머리아프게 분석하기도 싫고..

 

 

나머진 나중에~

 

 

Posted by 라이에

티스토리 툴바