5. 결제 해킹 사례
사례>
출시 후 6시간, 회사 과금 로그 1억 찍음!!
소고기 맛 나게 먹다가..... 찜찜
구글 (애플) 결제 로그 결제 금액 0원 ㅠ_ㅠ
6. 결제 공격 대상 - 결제 모듈
IAP (ios) / IAB (android) 모듈
- 무조건 결제 성공
- 가짜 영수증 반환
- 타 게임의 유효한 영수증 반환
- 이미 처리된 영수증 반환
7. 결제 공격 대응 - 결제 모듈
결제 서버
- 원격 서버에서 결제 결과 확인
- 결제 후 영수증을 서버로 보내 유효할 경우 결
제 결과 지급
영수증 인증
- 해당 어플의 영수증 인지?
- 영수증이 유효한지?
- 영수증이 기존에 처리된적 있는지?
8. 결제 공격 대상 - 지급 로직
결제 결과 전달 시점 로직
- 아이템 (결제 결과) 을 지급 받았지만 지급 대
상 (원격의 서서) 이 지급 실패 판단을 유도하여
재지급 하도록 공격 시도
9. 결제 공격 대응 - 지급 로직 - 1
안전한 지급 로직
- 결제 정보와 정확히 일치
- 어플 종료 등 실패시 재지급
=> 결제 인증 시 유효한경우 지급
- 개별 아이템을 지급하지 않음
=> 인벤 단위나 최종값 (캐시) 을 받음
(아이템 추가, 캐시 증가량 합산 방식을
지양)
10. 과금 공격 대응 - 지급 로직 - 2
안전한 지급 로직
- 과금 인증시 서버에서 아이템 지급 (DB에 기
록)
=> 안드로이드의 경우 apk를 해킹하여
인증 로직을 제거하면 과금은 통과
하나 아이템 지급이 안됨
- 클라이언트가 인벤 및 캐시 포인트 업데이트
시 과금 내역을 반영한 내용이 전달
26. 메모리 공격 대상 - 1
모든 게임내 데이터
- 사용자 정보 (레벨, 경험치, 행동 포인트...)
- 상점 가격
- 상점 상품 구성
- 기타 등등
창의적으로 해킹하는 사람들이 많다 ㅠ_ㅠ
27. 메모리 공격 대상- 2
변화하는 값, 변하지 않는 값
- 모든 메모리 공격은 특정 값의 메모리 위치를
찾아내는 데 있음
- 변화하는 값은 변하지 않는 값에 비해 찾기 쉬
움
=> 전체 메모리 덤프 후 변화 부분만 남김
=> 값의 변화를 이용
(증가, 감소, 변화 없음)
28. 메모리 공격 대상- 3
특정 값이 발견되면 연관된 다른 값도 수정
- 아이템 가격이 발견되면 아이템 아이디도 추
정
- 특정 메모리 번지의 앞/뒤를 확인 가능
HP / MP, 최대 HP / 최대 MP
상점 테이블에서 가격과 상품 ID
29. 메모리 공격 대응 - 1
데이터 난독화
- 모든 공격은 특정값을 검색하는 것에서 출발
- 검색이 되지 않도록 변형하여 기록
- 보이는 값과 실제 정보 분리
=> 데이터 난독화 따른 성능 문제 발생
(모든 인벤의 물약 갯수)
30. 메모리 공격 대응 - 2
데이터 오염
- 어느 시점에서는 데이터를 변형 해야함
- 이때 해킹된 정보가 보안 처리된 영역에 들어
가지 않도록 주의
- 임시 메모리 사용후 메모리를 쓰레기 값으로
채운다.
- 데이터를 보안 영역에서 얻어 올 때 같은 임시
메모리를 사용하지 않는다.
31. 메모리 공격 대응 - 3
해시값 비교
- 로딩 시점에서 해시값을 생성
- 참고 시점에서 해시값 확인
- 유효한 값에서 다른 값으로 변경 될 경우
- 메모리 해킹 내용에 대해서 즉각 통지, 어플 중
단
=> 메모리 해커의 경우 어플 다운을 염두
=> 메모리 오버런 버그 ㅠ_ㅠ
33. 공격 사례 : 단독 구동 어플 - 1
세이프 파일
- 파일 수정, 백업, 공유
=> 해시값 기록
=> 사용자 고유값 기록
=> 넷 인벤, 경매장 삭제
=> 로딩 시점에 해킹 유무 체크
=> 서버에 해킹 상황 기록
34. 공격 사례 : 단독 구동 어플 - 2
결제
- IAP Cracker .. etc 무조건 결제 승인
=> 인승 서버 연계
통신 (패킷)
- 아이템 전송 시점에 어플 이상 종료 ... 아이템
분실시 복구 요청..
=> 아이템 전송 로직 삭제
=> 인벤 전체 업데이트 만 있음
35. 공격 사례 : 단독 구동 어플 - 3
메모리 공격 - 1
- 특정값 검색 수정... HP / MP etc
=> 메모리 난독화
=> 성능 문제가 생겨 최소 단위(아이템 별,
특정 스텟 묶음 단위)로 처리
=> 전체 인벤의 아이템 갯 수 (물약) 등의
정보는 별도 처리
36. 공격 사례 : 단독 구동 어플 - 4
메모리 공격 - 2
- 특정값 검색 수정 & 값을 고정
=> 경험치나 레벨 값이 임시 저장되는 곳에
값을 고정시키고 기다리면 값이 갱신되는
특정 시점에 오염된 값이 보안 처리된 곳에
들어감
=> 해시값을 도입 했으나 별 성과 없음
=> PC에서 재현, 사용후 지우지 않는
임시 공간 발견
37. 공격 사례 : 단독 구동 어플 - 5
메모리 공격 - 3
- 아이템 가격을 음수로 수정, 구매시 골드 증가
=> 아이템 가격 난독화
=> 가격이 음수인 경우 구매 실패
- 가격을 검색하여 주변 메모리를 수정하여 아
이템 ID 추정, 상품 구성 변경
=> 테이블에 해시값 적용, 변경 감지
38. 공격 사례 : 단독 구동 어플 - 5
메모리 공격 - 4
- 스킬, 스텟 포인트 증가
=> 포인트 분배 완료시 전체 포인트를 계산
유효한지 확인
게임 플레이 로깅
- 사용자 이용 패턴 분석
- 해킹 사용자 판별 자료
- 해킹 사용자로 확실시 되면 블럭
39. 공격 사례 : 동기 구동 어플 - 1
어플 속도 증가
- 빠른 속도로 스테이지 클리어
=> 서버와 클라이언트의 누적 시간을 비교
=> 10% 이상 차이가 날 경우 경고
(치트 어플의 속도 조절의 최소 단위 보다
작게 … 1.2 배속 0.8 배속)
=> 3회 이상 경고시 사용자 접속 종료
(망 상태에 따라 패킷이 뭉쳐 가는 경우
누적 시간에 오차가 커질 수 있음)
40. 공격 사례 : 동기 구동 어플 - 2
메모리 공격
- 스킬 ID 조작 타 캐릭터 스킬 사용
=> 서버에 검증 코드 추가
결제
- PID 해킹 낮은 가격 아이템 결제
=> 해당 마켓 서비스 하지 않음
- 영수증 처리 로직 없는 마켓
=> 해당 마켓 서비스 하지 않음
41. 공격 사례 : 비동기 구동 어플 - 1
영수증 공격
- 타 게임의 영수증을 인증용으로 제출
=> 영수증의 Product ID 확인
메모리 공격
- 사냥시 습득 골드를 수정
=> 서버 상에서 최대 습득 금액 설정,
오버 시 0 골드 습득 처리
=> 데이터 난독화
42. 공격 사례 : 비동기 구동 어플 - 2
패킷
- 보안 강화 요청 (SNS 연동)
=> 3DES, Seed128 등 암호화 패킷 사용