스마트폰 해킹과 대응 @kgc2013
DESCRIPTION
TRANSCRIPT
안녕하세요
저는 …
여러분은 …
오늘에 주제는 …
목차
해킹 & 대상- 결제, 파일, 세이브 파일, 패킷, 속도, 메모리- 사례 및 대응
게임 유형별 사례- 단독 / 동기 / 비동기 구동 게임- 사례 및 대응
정리
해킹 & 대상
결제 / 파일 / 세이브 파일 / 패킷 / 속도 / 메모리
결제 해킹 사례
사례>출시 후 6시간, 회사 과금 로그 1억 찍음!!소고기 맛 나게 먹다가..... 찜찜구글 (애플) 결제 로그 결제 금액 0원 ㅠ_ㅠ
결제 공격 대상 - 결제 모듈
IAP (ios) / IAB (android) 모듈- 무조건 결제 성공- 가짜 영수증 반환- 타 게임의 유효한 영수증 반환- 이미 처리된 영수증 반환
결제 공격 대응 - 결제 모듈
결제 서버- 원격 서버에서 결제 결과 확인- 결제 후 영수증을 서버로 보내 유효할 경우 결제 결과 지급
영수증 인증- 해당 어플의 영수증 인지?- 영수증이 유효한지?- 영수증이 기존에 처리된적 있는지?
결제 공격 대상 - 지급 로직
결제 결과 전달 시점 로직- 아이템 (결제 결과) 을 지급 받았지만 지급 대상 (원격의 서서) 이 지급 실패 판단을 유도하여 재지급 하도록 공격 시도
결제 공격 대응 - 지급 로직 - 1
안전한 지급 로직- 결제 정보와 정확히 일치- 어플 종료 등 실패시 재지급
=> 결제 인증 시 유효한경우 지급 - 개별 아이템을 지급하지 않음
=> 인벤 단위나 최종값 (캐시) 을 받음 (아이템 추가, 캐시 증가량 합산 방식을 지양)
과금 공격 대응 - 지급 로직 - 2
안전한 지급 로직- 과금 인증시 서버에서 아이템 지급 (DB에 기록)
=> 안드로이드의 경우 apk를 해킹하여 인증 로직을 제거하면 과금은 통과 하나 아이템 지급이 안됨- 클라이언트가 인벤 및 캐시 포인트 업데이트시 과금 내역을 반영한 내용이 전달
파일 해킹
사례>모든 데이터는 내 손에…
파일 공격 유형
예전 버전 파일 덮어 쓰기- 원하는 벨런스 시절로 롤 백
데이터 수정- 저장된 파일을 바이너리 편집기로 수정
파일 공격 감지
예전 버전 파일 덮어 쓰기 & 데이터 수정- 최근 파일의 해시값과 로딩한 파일의 해시값을 비교
파일 공격 대응
정상 파일을 다운로드 후 읽은 다음 어플 기동=> 게임의 패치 기능 활용
어플 재설치 요구=> 마켓 어플 설치 페이지 연결
세이브 파일 해킹
사례>모든 데이터는 내 손에…
원하는데로 될 때까지 수정... 성실한 놈;;귀찮아 친구꺼 가져다 게임 하지.. 뭐나는야 만렙~~
세이브 파일 공격 유형
세이브 파일 배포- 친구(혹은 불특정 다수)에게 세이브 파일 공개
세이브 파일 백업- 서버에 아이템을 전송 (인벤, 경매, 우편) 후 세이브 파일을 기존 것으로 되돌림
데이터 수정- 저장된 파일을 바이너리 편집기로 수정
세이브 파일 공격 감지
세이브 파일 배포- 세이브 파일에 사용자 정보 입력
세이브 파일 백업- 서버에 아이템을 전송 시 변경되는 카운터를 세이브 파일에 기록
데이터 수정- 저장시 세이브 파일의 해시값을 기록, 읽을 때 해시와 저장한 해시 비교
세이브 파일 공격 대응
서버에 세이브 파일 기록=> 가장 안전,
절대 로딩 실패 하면 안된다!!- 해킹과 버그를 구분 할 수 없음
일단 게임이 되고, 서버에 해킹 기록 후 대응
패킷 해킹
사례>웹 통신을 주로 사용…패킷 캡춰 시 모든 정보가 읽기 쉽게 됨…JSON 이나 URL encode 방식이니 이해가 쏙쏙…원하는데로 고쳐 보내기도 좋다.
패킷 공격 대상
모든 패킷 !!
해킹 용 리눅스 박스 (BackTrack) 설치 ..스마트폰의 패킷이 리눅스 박스를 거쳐 가도록 네트워크 환경 구축 .. (중간자 공격 Man-in-the-middle attack)
패킷 캡쳐 및 가공 ..
패킷 공격 대응
패킷 보안- AES, 3DES, Seed128/256 (KISA) 등 패킷 암호화
하다 못해 XOR 후 Base64 인코딩 정도는 하자- 일단 보이지 않게 라도..
속도 해킹
사례>아~ 여기 적이 넘 빨라서 어렵네…그럼 게임을 천천히...여기는 시간 때워야 하네.. 지루해그럼 빠르게....
속도 공격 대상
시간 소비를 단축- 빠름 속도로 게임을 진행하여 재화 획득 시간 단축
난이도 하락- 속도에 따른 게임성을 약화시켜 쉽게 진행
해킹툴 (Game Chi) 등에서 기능 제공- 0.5, 0.8, 1.2, 2, 5, .. 100 배속 지원
속도 공격 대응
게임 내에서 속도 변화를 감지 할 수 없음
외부 (서버나 다른 프로세스)의 도움이 필요- 같이 시간을 세다 오차 범위를 넘어서면 속도 해킹으로 간주- 일차적으로 경고 후 지속 되면 어플 종료
메모리 해킹
사례>엉엉 님 맘대로…
Android GameGuardian TutorialiOS GamePlayerCheat BBS - Android Hacks
메모리 공격 대상 - 1
모든 게임내 데이터- 사용자 정보 (레벨, 경험치, 행동 포인트...)- 상점 가격- 상점 상품 구성- 기타 등등
창의적으로 해킹하는 사람들이 많다 ㅠ_ㅠ
메모리 공격 대상- 2
변화하는 값, 변하지 않는 값- 모든 메모리 공격은 특정 값의 메모리 위치를 찾아내는 데 있음- 변화하는 값은 변하지 않는 값에 비해 찾기 쉬움
=> 전체 메모리 덤프 후 변화 부분만 남김=> 값의 변화를 이용
(증가, 감소, 변화 없음)
메모리 공격 대상- 3
특정 값이 발견되면 연관된 다른 값도 수정- 아이템 가격이 발견되면 아이템 아이디도 추정
- 특정 메모리 번지의 앞/뒤를 확인 가능HP / MP, 최대 HP / 최대 MP상점 테이블에서 가격과 상품 ID
메모리 공격 대응 - 1
데이터 난독화- 모든 공격은 특정값을 검색하는 것에서 출발- 검색이 되지 않도록 변형하여 기록- 보이는 값과 실제 정보 분리
=> 데이터 난독화 따른 성능 문제 발생(모든 인벤의 물약 갯수)
메모리 공격 대응 - 2
데이터 오염- 어느 시점에서는 데이터를 변형 해야함- 이때 해킹된 정보가 보안 처리된 영역에 들어 가지 않도록 주의- 임시 메모리 사용후 메모리를 쓰레기 값으로 채운다.- 데이터를 보안 영역에서 얻어 올 때 같은 임시 메모리를 사용하지 않는다.
메모리 공격 대응 - 3
해시값 비교- 로딩 시점에서 해시값을 생성- 참고 시점에서 해시값 확인- 유효한 값에서 다른 값으로 변경 될 경우 - 메모리 해킹 내용에 대해서 즉각 통지, 어플 중단
=> 메모리 해커의 경우 어플 다운을 염두=> 메모리 오버런 버그 ㅠ_ㅠ
게임 유형별 사례
단독 / 동기 / 비동기 구동 게임
공격 사례 : 단독 구동 어플 - 1
세이프 파일- 파일 수정, 백업, 공유
=> 해시값 기록=> 사용자 고유값 기록=> 넷 인벤, 경매장 삭제=> 로딩 시점에 해킹 유무 체크=> 서버에 해킹 상황 기록
공격 사례 : 단독 구동 어플 - 2
결제
- IAP Cracker .. etc 무조건 결제 승인=> 인승 서버 연계
통신 (패킷)- 아이템 전송 시점에 어플 이상 종료 ... 아이템 분실시 복구 요청..
=> 아이템 전송 로직 삭제=> 인벤 전체 업데이트 만 있음
공격 사례 : 단독 구동 어플 - 3
메모리 공격 - 1- 특정값 검색 수정... HP / MP etc
=> 메모리 난독화=> 성능 문제가 생겨 최소 단위(아이템 별,특정 스텟 묶음 단위)로 처리
=> 전체 인벤의 아이템 갯 수 (물약) 등의정보는 별도 처리
공격 사례 : 단독 구동 어플 - 4
메모리 공격 - 2- 특정값 검색 수정 & 값을 고정
=> 경험치나 레벨 값이 임시 저장되는 곳에 값을 고정시키고 기다리면 값이 갱신되는 특정 시점에 오염된 값이 보안 처리된 곳에 들어감=> 해시값을 도입 했으나 별 성과 없음=> PC에서 재현, 사용후 지우지 않는
임시 공간 발견
공격 사례 : 단독 구동 어플 - 5
메모리 공격 - 3- 아이템 가격을 음수로 수정, 구매시 골드 증가
=> 아이템 가격 난독화=> 가격이 음수인 경우 구매 실패
- 가격을 검색하여 주변 메모리를 수정하여 아이템 ID 추정, 상품 구성 변경
=> 테이블에 해시값 적용, 변경 감지
공격 사례 : 단독 구동 어플 - 5
메모리 공격 - 4- 스킬, 스텟 포인트 증가
=> 포인트 분배 완료시 전체 포인트를 계산 유효한지 확인
게임 플레이 로깅- 사용자 이용 패턴 분석- 해킹 사용자 판별 자료- 해킹 사용자로 확실시 되면 블럭
공격 사례 : 동기 구동 어플 - 1
어플 속도 증가- 빠른 속도로 스테이지 클리어
=> 서버와 클라이언트의 누적 시간을 비교=> 10% 이상 차이가 날 경우 경고
(치트 어플의 속도 조절의 최소 단위 보다 작게 … 1.2 배속 0.8 배속)
=> 3회 이상 경고시 사용자 접속 종료(망 상태에 따라 패킷이 뭉쳐 가는 경우 누적 시간에 오차가 커질 수 있음)
공격 사례 : 동기 구동 어플 - 2
메모리 공격- 스킬 ID 조작 타 캐릭터 스킬 사용
=> 서버에 검증 코드 추가
결제
- PID 해킹 낮은 가격 아이템 결제=> 해당 마켓 서비스 하지 않음
- 영수증 처리 로직 없는 마켓=> 해당 마켓 서비스 하지 않음
공격 사례 : 비동기 구동 어플 - 1
영수증 공격- 타 게임의 영수증을 인증용으로 제출
=> 영수증의 Product ID 확인
메모리 공격- 사냥시 습득 골드를 수정
=> 서버 상에서 최대 습득 금액 설정, 오버 시 0 골드 습득 처리
=> 데이터 난독화
공격 사례 : 비동기 구동 어플 - 2
패킷
- 보안 강화 요청 (SNS 연동)=> 3DES, Seed128 등 암호화 패킷 사용
정리
앞으로 할 것 들 / 그리고 … / 마지막 …
앞으로 할 것 들
Unity3D- 메모리 보안 강화
속도
- 웹서버 연동- 클라이언트에 협력 프로세스 구현
그리고...
창의적으로 해킹하는 님들과 소통
앱짱닷컴
구글님
마지막...
해킹 사용자도 고객 입니다.
감사합니다.
Q&A