스마트폰 게임 해킹과 대응
ANB Soft 송찬호KASA 2013.9.5
해킹 공격 분야
결제
파일
세이브 파일패킷
속도
메모리
결제 해킹 사례
사례>출시 후 6시간, 회사 과금 로그 1억 찍음!!소고기 맛 나게 먹다가..... 찜찜구글 (애플) 결제 로그 결제 금액 0원 ㅠ_ㅠ
결제 공격 대상 - 결제 모듈
IAP (ios) / IAB (android) 모듈- 무조건 결제 성공- 가짜 영수증 반환- 타 게임의 유효한 영수증 반환- 이미 처리된 영수증 반환
결제 공격 대응 - 결제 모듈
결제 인증 서버- 결제 후 영수증을 서버로 보내 유효할 경우 결제 결과 지급
영수증 인증- 해당 어플의 영수증 인지?- 영수증이 유효한지?- 영수증이 기존에 처리된적 있는지?
결제 공격 대상 - 지급 로직
결제 결과 전달 시점 로직- 아이템 (결제 결과) 을 지급 받았지만 지급 대상 (원격의 서서) 이 지급 실패 판단을 유도하여 재지급 하도록 공격 시도
결제 공격 대응 - 지급 로직 - 1
안전한 지급 로직- 결제 정보와 정확히 일치- 어플 종료 등 실패시 재지급
=> 결제 인증 시 유효한경우 지급 - 개별 아이템을 지급하지 않음
=> 인벤 단위나 최종값 (캐시) 을 서버로 받음
=> 아이템 추가, 캐시 증가량을 전달하지 않음
과금 공격 대응 - 지급 로직 - 2
안전한 지급 로직- 과금 인증시 서버에서 아이템 지급 (DB에 기록)
=> 안드로이드의 경우 apk를 해킹하여 인증 로직을 제거하면 과금은 통과 하나 아이템 지급이 안됨- 클라이언트가 인벤 및 캐시 포인트 업데이트시 과금 내역을 반영한 내용이 전달
파일 해킹
사례>모든 데이터는 내 손에…나는야 성실한 놈 함 디벼 볼까 ~~
파일 공격 유형
예전 버전 파일 덮어 쓰기- 원하는 벨런스 시절로 롤 백
데이터 수정- 저장된 파일을 바이너리 편집기로 수정
파일 공격 감지
예전 버전 파일 덮어 쓰기 & 데이터 수정- 최근 파일의 해시값과 로딩한 파일의 해시값을 비교
파일 공격 대응
정상 파일을 다운로드 후 읽은 다음 어플 기동
어플 재설치 요구
세이브 파일 해킹
사례>모든 데이터는 내 손에…원하는데로 될 때까지 수정...귀찮아 친구꺼 가져다 게임 하지.. 뭐나는야 만렙~~
세이브 파일 공격 유형
세이브 파일 배포- 친구(혹은 불특정 다수)에게 세이브 파일 공개
세이브 파일 백업- 서버에 아이템을 전송 (인벤, 경매, 우편) 후 세이브 파일을 기존 것으로 되돌림
데이터 수정- 저장된 파일을 바이너리 편집기로 수정
세이브 파일 공격 감지
세이브 파일 배포- 세이브 파일에 사용자 정보 입력
세이브 파일 백업- 서버에 아이템을 전송 시 변경되는 카운터를 세이브 파일에 기록
데이터 수정- 저장시 세이브 파일의 해시값을 기록, 읽을 때 해시와 저장한 해시 비교
세이브 파일 공격 대응
서버에 세이브 파일 기록
절대 로딩 실패 하면 안된다!!- 해킹과 버그를 구분 할 수 없음
일단 게임이 되고, 서버에 해킹 기록 후 대응
패킷 해킹
사례>웹 통신을 주로 사용…패킷 캡춰 시 모든 정보가 읽기 쉽게 됨…JSON 이나 URL encode 방식이니 이해가 쏙쏙…원하는데로 고쳐 보내기도 좋다.
패킷 공격 대상
모든 패킷 !!
해킹 용 리눅스 박스 (BackTrack) 설치 ..스마트폰의 패킷이 리눅스 박스를 거쳐 가도록 네트워크 환경 구축 .. (맨 온더 미들 공격 패턴)패킷 캡쳐 및 가공 ..
패킷 공격 대응
패킷 보안- AES, 3DES, Seed (KISA) 등 패킷 암호화
하다 못해 XOR 후 Base64 인코딩 정도는 하자- 일단 보이지 않게 라도..
속도 해킹
사례>아~ 여기 적이 넘 빨라서 어렵네…그럼 게임을 천천히 구동..여기는 시간 때워야 하네.. 지루해그럼 빠르게 구동..나는야 시간의 지배자 !!
속도 공격 대상
시간 소비를 단축- 빠름 속도로 게임을 진행하여 재화 획득 시간 단축
난이도 하락- 속도에 따른 게임성을 약화시켜 쉽게 진행
해킹툴 (Game Chi) 등에서 기능 제공- 0.5, 0.8, 1.2, 2, 5, .. 100 배속 지원
속도 공격 대응
게임 내에서 속도 변화를 감지 할 수 없음
외부 (서버나 다른 프로세스)의 도움이 필요- 같이 시간을 세다 오차 범위를 넘어서면 속도 해킹으로 간주- 일차적으로 경고 후 지속 되면 어플 종료
메모리 해킹
사례>엉엉 님 맘대로…
Android GameGuardian TutorialiOS GamePlayerCheat BBS - Android Hacks
메모리 공격 대상 - 1
모든 게임내 데이터- 사용자 정보- 상점 가격- 상점 상품 구성- 기타 등등
창의적으로 해킹하는 사람들이 많다 ㅠ_ㅠ
메모리 공격 대상- 2
변화하는 값, 변하지 않는 값- 모든 메모리 공격은 특정 값의 메모리 위치를 찾아내는 데 있음- 변화하는 값은 변하지 않는 값에 비해 찾기 쉬움
=> 전체 메모리 덤프 후 변화 부분만 남기는 것
=> 값의 변화 추이 (증가, 감소, 변화 없음)
하나가 발견되면 연관된 다른 값도 수정- 아이템 가격이 발견되면 아이템 아이디도 추정
메모리 공격 대응 - 1
데이터 난독화- 모든 공격은 특정값을 검색하는 것에서 출발- 검색이 되지 않도록 변형하여 기록
해시값을 기록- 유효한 값에서 다른 값으로 변경 될 경우 감지- 메모리 해킹 내용에 대해서 즉각 통지, 어플 중단
메모리 공격 대응 - 2
보이는 값과 실제 정보 분리- 데이터 난독화 및 해시값에 따른 성능 이슈 가능
=> 모든 인벤의 물약 갯수
데이터 오염- 어느 시점에서는 데이터를 변형 해야함- 이때 해킹된 정보가 보안 처리된 영역에 들어 가지 않도록 주의- 임시 메모리 사용후 메모리를 쓰레기 값으로 채운다.
앞으로 할 것 들
패킷
- Seed128 적용
속도
- 웹서버 연동- 클라이언트에 협력 프로세스 구현
그리고
창의적으로 해킹하는 님들과 소통
앱짱닷컴
구글님
감사합니다.
Q&A