Security > NHN AppGuard > 콘솔 사용 가이드
NHN AppGuard는 Android, iOS 그리고 Unity 환경을 지원합니다.
Android
- AppGuard Android SDK를 적용하면 더욱 향상된 기능을 이용할 수 있습니다(선택 사항).
- Android Studio 등에서 빌드한 apk 또는 aab 파일을 웹 콘솔 또는 CLI로 앱을 더 편리하게 보호할 수 있습니다(필수 사항).
iOS
- AppGuard iOS SDK를 적용하여 앱을 보호할 수 있습니다(필수 사항).
- Xcode에서 빌드한 ipa 파일을 웹 콘솔 또는 CLI로 더 강력하게 보호할 수 있습니다(선택 사항).
- 웹 콘솔 또는 CLI로 앱 보호 작업을 수행하지 않으면 기본 정책인 Business 플랜으로 동작합니다.
- 웹 콘솔 또는 CLI로 앱 보호 작업을 수행해야만 무결성 검증, 서명자 검증, 기본 정책 적용, 난독화, 플랜 선택 등 솔루션의 다양한 기능을 누릴 수 있습니다.
- 이 보호 작업으로 인한 추가 비용 청구는 없습니다.
주의
Business 플랜 이외 요금제를 설정하거나 플랜을 변경해야 할 경우 웹 콘솔 또는 CLI로 앱 보호 작업을 수행해야 합니다. 앱 보호 작업을 원치 않을 경우 개별 상담을 요청하여 진행하세요.
Unity
- Android/iOS 앱을 손쉽게 보호할 수 있는 편의 기능을 제공합니다.
- Unity SDK는 Android SDK와 iOS SDK를 포함하고 있고 하나의 인터페이스로 적용할 수 있습니다.
NHN AppGuard를 사용하려면 다음 단계를 따릅니다.
![[그림 1] NHN AppGuard 적용 방법](http://static.toastoven.net/prod_appguard/AppGuard_3_overview01.png)
대시보드
앱 보호 작업이 완료된 앱을 앱 스토어에 배포 후 어뷰징 유저가 탐지되면 아래 그림의 대시보드 탭에서 현황을 확인할 수 있습니다.

- 이상 행위 탐지 현황은 NHN AppGuard가 탐지한 어뷰징 사용자를 로그 탐지 패턴, 기간별 기준 시도 순서로 확인할 수 있습니다.
- 이상 행위 탐지 현황 의 결과는 우측 상단의 보고서 다운로드(Excel) 버튼을 클릭하여 다운로드할 수 있습니다.
- 대시보드에서 NHN AppGuard가 탐지한 어뷰징 사용자의 통계 그래프와 목록을 검색할 수 있습니다.
- 루팅의 경우, 앱 설치 후 하루 1회 탐지 또는 제재로그를 대시보드에서 확인할 수 있습니다.
- 유저 ID, 디바이스 ID, 로그 탐지 횟수, 로그 탐지 패턴, 조회기간으로 검색할 수 있습니다.
- 유저 ID와 디바이스 ID는 콤마로 구분하여 여러 개의 조건을 추가할 수 있습니다.
- 탐지 통계 그래프에서 탐지 패턴별 비율과 기간별 탐지 로그 증감 현황을 확인할 수 있습니다.
- 이상 행위 탐지 현황은 API를 이용해 JSON 형태로도 조회할 수 있습니다. 자세한 내용은 API 가이드를 참고하세요.
앱 보호
SDK 다운로드 및 연동
앱 보호 메뉴를 선택하고 SDK 다운로드 버튼을 클릭하면 OS별 SDK를 다운로드할 수 있습니다.
SDK를 다운로드한 뒤 첨부된 매뉴얼에 따라 연동합니다.
난독화 활성화 신청하기
앱 보호 메뉴를 선택하고 난독화 활성화 버튼을 클릭하면 Android OS의 코드 난독화를 신청할 수 있습니다.
Android OS의 코드 난독화는 월 100만 원의 추가 요금이 발생합니다.
iOS는 앱 보호 작업 시 코드 난독화 이용 여부를 선택할 수 있으며, 이에 따른 추가 비용은 청구되지 않습니다.
앱 보호 메뉴 선택
앱 보호 메뉴 선택 후 + 앱 보호 버튼을 클릭하면 다음과 같은 화면이 나옵니다.

- [인증서] 파일을 선택합니다. Android는 KeyStore 파일입니다.
- [마스터 비밀번호]를 입력하고 [유효성 검사] 버튼을 클릭하여 인증서 파일의 유효성을 검사합니다.
- 이 검사 작업은 앱 보호 작업 전 KeyStore의 유효성과 적절한 앨리어스를 선택하기 위함입니다.
- 유효성 검사 실패 시, 인증서 파일 정상 여부와 마스터 비밀번호를 확인합니다.
- [앨리어스]명을 선택합니다.
- [앨리어스 비밀번호]를 입력합니다.
- [보호할 앱]을 선택합니다.
- [플랜]을 선택합니다.
- Business: 앱에 대한 비정상 행위 및 패턴 기반의 기본 보안 탐지 기능
- Enterprise: Business+자바 코드(DEX) 암호화+메모리 조작 탐지 등 동적 분석 방어 기능(일반 앱 권장)
- Game: Enterprise+게임 엔진 라이브러리 정적 보호+Unity IL2CPP 코드 분석 방어 등 향상된 동적 분석 방어 보안 기능(게임 앱 권장)
- 각 플랜별로 제공되는 전체 기능은 앱가드 서비스 가이드를 참조하세요.
- [릴리즈 버전]을 선택합니다.
- 확인 버튼을 클릭하여 앱 보호를 합니다.
- 앱 보호가 끝나면 보호된 앱을 다운로드할 수 있습니다. 이제 보호된 배포 파일을 각 앱스토어에 업로드하여 배포합니다.
- 앱 보호 작업 수단: Console, CLI(Command Line Interface)
정책
NHN AppGuard 작동 중 코드, 메모리, 속도 조작 시도 탐지 시 취해야 할 차단 정책을 설정할 수 있으며, '조건 차단' 시 임계값 기반으로 차단 조건을 설정할 수 있습니다.

- 전체 차단으로 설정한 정책으로 탐지될 경우, NHN AppGuard 안내 창이 나타나고 앱이 종료됩니다.
- 조건 차단 시 설정한 조건을 만족하면 블랙리스트에 등록되며, 해당 사용자가 앱을 실행한 경우 NHN AppGuard 안내 창이 나타나고 앱이 종료됩니다.
제재에 대한 내용은 SDK에 포함된 "NHN AppGuard Developer's Guide" 문서를 참고하세요.
차단 기능별 소개
- NHN AppGuard > 정책 > 전체 차단
- NHN AppGuard 정책 화면에서 전체 차단으로 설정한 경우 해당 행위가 탐지된 즉시 앱이 종료됩니다.
- 정책으로 인해 앱이 종료되었더라도 이상 행위 없이 앱을 재실행하면 앱을 정상적으로 사용할 수 있습니다.
- 정책을 전체 차단 또는 탐지로 변경한 경우 약 1분 후 재기동된 앱에 적용됩니다.
- NHN AppGuard > 정책 > 개별 차단
- 에뮬레이터와 매크로툴에 한하여 모든 유형이 아닌 개별 도구 단위로 차단할 수 있습니다.
- 개별 차단에서 차단으로 설정된 경우 전체 차단과 동일하게 탐지 즉시 앱이 종료됩니다.
- 정책 저장 후 약 1분 후 재기동된 앱에 적용됩니다.
- NHN AppGuard > 정책 > 조건 차단
- NHN AppGuard 정책 화면에서 조건 차단으로 설정한 경우 매일 00시 00분에 조건을 만족한 사용자를 블랙리스트로 등록합니다.
- 조건의 만족 여부는 작일 00:00:00~23:59:59까지 발생한 탐지 로그를 기반으로 판단하며, 각 조건은 종류별로 독립적으로 동작합니다.
- 조건 차단으로 등록된 블랙리스트는 NHN AppGuard 블랙리스트 탭에서 확인할 수 있습니다.
- 조건 차단으로 등록된 블랙리스트로 인해 차단된 사용자는 NHN AppGuard 대시보드 탭에 노출되지 않습니다.
- 조건 차단으로 블랙리스트에 등록된 사용자는 이상 행위 없이 앱을 실행하더라도 설정한 차단 기간 동안 앱을 사용할 수 없습니다.
- 조건 차단으로 설정 또는 조건을 변경한 경우 약 10분 후 모든 사용자를 대상으로 적용됩니다.
- NHN AppGuard > 블랙리스트 기능을 통한 차단
- NHN AppGuard 블랙리스트 화면에서 사용자를 블랙리스트에 등록한 경우, 해당 사용자가 앱을 실행하면 앱이 종료됩니다.
- 블랙리스트에 등록한 직후부터 앱이 재실행될 때 적용됩니다.
변경 이력
정책을 변경하고 저장할 때, 언제 누가 어떻게 변경했는지 이력을 관리할 수 있습니다.

개별 차단
에뮬레이터와 매크로툴에 한하여 모든 유형이 아닌 개별 도구 단위로 차단할 수 있습니다.
- 개별 도구 단위로 해제, 탐지, 차단을 설정할 수 있습니다.
- 기본 정책을 통해 식별되지 않은 유형에 대한 정책을 설정할 수 있습니다.
조건 추가
정책 메뉴 선택 후, 각 탐지 종류별 조건 차단 버튼을 클릭하면 다음과 같은 화면이 나타납니다.

- 차단 기준을 선택합니다.
- 국가 정보를 선택합니다.
- 탐지 횟수를 입력합니다.
- 루팅의 경우, 탐지 횟수는 1회로 설정됩니다.
- 차단 기간(일)을 선택합니다.
- 추가 버튼을 클릭하여 조건을 추가합니다.
- 조건 차단 버튼이 활성화된 상태로 저장 버튼을 클릭하여 조건을 적용합니다.
- 전날 누적된 탐지 로그를 기반으로 조건이 적용되며, 처음 조건 적용까지는 최대 10분이 소요됩니다.
- 이후 매일 00시 05분에 전날 누적된 탐지 로그를 기반으로 조건이 새로 적용됩니다.
조건 확인

- 조건 차단 버튼 옆 ▼ 버튼을 클릭하여 추가된 조건을 확인할 수 있습니다.
블랙리스트
NHN AppGuard에서 제공하는 디바이스 ID와 SDK 연동 시 사용할 수 있는 유저 ID를 등록하여, 특정 기기와 사용자를 블랙리스트로 관리합니다.

- 차단 기준, 상태, 블랙리스트, 시작 일자, 만료 일자, 차단 사유로 검색할 수 있습니다.
- 블랙리스트는 입력한 값과 같은 아이디를 검색합니다.
- 시작 일자와 만료 일자는 시작일과 만료일을 선택하여 검색할 수 있습니다.
- 차단 사유는 입력한 사유를 LIKE 검색합니다.
- 블랙리스트, 차단 기준, 상태, 차단 사유, 시작 일자, 만료 일자, 관리 버튼이 나타납니다.
- 다운로드(Excel)를 클릭해 조회 결과를 다운로드할 수 있습니다.
블랙리스트 등록
블랙리스트 메뉴 선택 후, 등록 버튼을 클릭하면 다음과 같은 화면이 나타납니다.

- 등록 아이디를 선택합니다.
- 아이디 유형을 선택합니다.
- 등록 사유를 입력합니다.
- 차단 기간(일)을 선택합니다.
- 등록 버튼을 클릭하여 블랙리스트를 등록합니다.
- 등록된 블랙리스트 아이디로 앱을 실행하면 차단 기간 동안 NHN AppGuard 안내 창이 나타나고 앱이 종료됩니다.
블랙리스트 해제
블랙리스트 메뉴 선택 후, 등록된 블랙리스트의 해제 버튼을 클릭하면 다음과 같은 화면이 나타납니다.

- 해제 버튼을 클릭하여 등록된 블랙리스트를 해제합니다.
- 해제된 블랙리스트 아이디로 앱을 실행하면 NHN AppGuard에서 앱을 종료하지 않습니다.
블랙리스트 재등록
블랙리스트 메뉴 선택 후, 해제된 블랙리스트의 재등록 버튼을 클릭하면 다음과 같은 화면이 나타납니다.

- 등록 사유와 차단 기간(일)을 수정합니다.
- 등록 버튼을 클릭하여 블랙리스트를 수정한 내용으로 등록합니다.
- 재등록된 블랙리스트 아이디로 앱을 실행하면 차단 기간 동안 NHN AppGuard 안내 창이 나타나고 앱이 종료됩니다.
블랙리스트 일괄 등록
블랙리스트 메뉴 선택 후, 일괄 등록(Excel) 버튼을 클릭하면 다음과 같은 화면이 나타납니다.

- 블랙리스트 일괄 등록 템플릿 파일을 클릭해 템플릿 파일을 다운로드합니다.
- 템플릿 파일을 열어 등록 아이디, 아이디 유형, 등록 사유, 차단 기간(일)을 입력합니다.
- 아이디 유형은 DEVICEID 또는 USERID를 입력합니다.
- 파일 선택 버튼을 클릭하여 업로드한 후 등록 버튼을 클릭하여 블랙리스트를 일괄 등록합니다.
- 등록이 완료되면 처리 결과에 메시지가 나타납니다.
블랙리스트 일괄 해제
블랙리스트 메뉴 선택 후, 해제할 블랙리스트들을 체크하고 일괄 해제 버튼을 클릭하면 다음과 같은 화면이 나타납니다.

- 해제 버튼을 클릭하여 등록된 블랙리스트를 일괄 해제합니다.
블랙리스트 일괄 재등록
블랙리스트 메뉴 선택 후, 재등록할 블랙리스트들을 체크하고 일괄 재등록 버튼을 클릭하면 다음과 같은 화면이 나타납니다.

- 차단 기간을 입력한 후 등록 버튼을 클릭하여 블랙리스트를 일괄 재등록합니다.
로그 조회
탐지된 로그의 상세한 내용을 로그 조회 탭에서 확인할 수 있습니다.

- 유저 ID, 디바이스 ID, 로그 탐지 횟수, 로그 종류, 조회 기간으로 검색할 수 있습니다.
- 유저 ID와 디바이스 ID는 쉼표(,)로 구분하여 여러 개의 조건을 추가할 수 있습니다.
- 유저 ID와 디바이스 ID, Host IP, 디바이스 모델, OS, 로그, 앱 정보 및 시각이 나타납니다.
- ANDROID_ID 칼럼의 정보를 활용하여 Gamebase의 device_key를 조회하는 데 사용할 수 있습니다.
- 보고서 다운로드(Excel)를 클릭해 조회 결과를 다운로드할 수 있습니다.
설정
알람 설정
탐지/차단 로그의 개수가 임계값을 넘었을 때 설정한 채널로 알람을 받을 수 있습니다.
- 임계값 설정
- 비교 기간 동안 발생한 탐지+차단 수의 중위값에 대하여 오늘 발생한 탐지+차단 수가 임계값을 넘으면 알람이 발생합니다.
- 중위값을 사용하는 이유는 비교 기간 내 공격 등의 비정상적인 활동으로 인해 로그 수가 급격히 증가한 케이스의 영향성을 줄이기 위함입니다.
- 임계값은 10~10000%로 설정할 수 있습니다.
- 예를 들어 7일간 발생한 로그 수가 [5,5,5,5,7,7,7]이고, 설정한 임계값이 100%라면, 오늘 발생한 로그 수가 5개 이상이면 알람이 발생합니다.
- 알람 수신 채널 설정
- 이메일을 최대 5개까지 입력하여 알람을 받을 수 있습니다.
- 이메일은 쉼표(,)로 구분하여 여러 개를 입력할 수 있습니다.
- 이메일은 추가하거나 삭제만 할 수 있습니다. 수정은 불가능합니다.
- 알람은 임계값을 넘은 시점부터 10분 이내에 발송됩니다.
- 알람 메일을 수신한 경우 콘솔에 접속하여 탐지 로그를 확인하세요.
알아두기
알람은 하루에 최대 1회 발송됩니다.
무결성 검증
NHN AppGuard 무결성 검증 콘솔 사용 방법을 설명합니다.
무결성 검증 기능을 이용하려면 문의하기를 통해 권한을 요청해야 합니다.
상품
기본정보, 무결성 검증 정책, 안드로이드 서명 정보, 추가 정보 등을 설정할 수 있습니다.

- 상품 앱키: 상품을 식별하는 고유의 키입니다.
- 상품 시크릿키: 요청 시 HMAC 인증을 위한 키입니다.
- Android 서명 정보: 복수로 입력 가능하며, Android 검증 로직 수행되기 전에 값이 존재해야 합니다.
-
추가 정보
- Challenge 만료 시간(초): Challenge의 유효 시간입니다.
- Token 만료 시간(초): 토큰의 유효 시간입니다.
무결성 검증 정책
Android / iOS 플랫폼별로 무결성 검증 옵션을 설정합니다. 옵션은 무결성 검증 항목과 신뢰할 수 없는 환경 두 가지 섹션으로 구성됩니다.
무결성 검증 항목
아래 항목은 기본 활성화되어 있으며, 변경할 수 없습니다.
| 항목 |
설명 |
| 앱 바이너리 무결성 |
앱 바이너리의 변조 여부를 검증합니다. |
| 서명 변조 탐지 |
앱 서명의 변조 여부를 탐지합니다. |
| Challenge-Response 검증 |
Challenge-Response 방식의 검증을 수행합니다. |
신뢰할 수 없는 환경
아래 환경에서는 무결성 토큰이 발급되지 않습니다. 체크박스를 통해 개별 항목을 활성화하거나 비활성화할 수 있습니다.
| 항목 |
Android |
iOS |
| 루팅/탈옥 환경 |
루팅 환경 |
탈옥 환경 |
| 에뮬레이터/시뮬레이터 환경 |
에뮬레이터 환경 |
시뮬레이터 환경 |
| 디버깅 환경 |
디버깅 환경 |
디버깅 환경 |
| 후킹 환경 |
후킹 환경 |
후킹 환경 |
앱
앱 빌드 정보를 확인할 수 있습니다.

- 앱 ID: 앱 빌드 시 생성되는 고유 ID입니다.
- 삭제 버튼을 클릭하여 앱을 삭제할 수 있습니다.
앱 정보
목록에서 앱을 클릭하면 상세 정보를 확인할 수 있습니다.

기본 정보
| 필드 |
설명 |
| 앱 ID |
앱 빌드 시 생성되는 고유 ID |
| 앱키 |
상품 앱키 |
| 플랫폼 |
Android / iOS |
| 패키지명 / 번들 ID |
앱의 패키지 이름 또는 번들 식별자 |
| 버전코드 / 빌드번호 |
앱의 버전 코드 또는 빌드 번호 |
| 버전 |
앱 버전 |
무결성 정보
- 앱 서명: 무결성 검증을 진행하는 데 필요한 서명 정보입니다.
해시 수집/검증
앱의 바이너리 해시를 수집하고 검증하는 기능입니다. 스토어 업로드 시 앱이 재빌드되어 해시가 달라질 수 있으므로, 여러 해시를 수집한 후 검증 모드로 전환하여 사용합니다.
- 수집 모드(기본): 앱 실행 시 해시가 자동으로 수집됩니다. 서명만 검증하며, 해시 검증은 수행하지 않습니다.
- 검증 모드: 수집된 활성 해시와 비교하여 무결성을 검증합니다. 일치하는 해시가 없으면 검증에 실패합니다.
모드 전환 버튼을 클릭하여 수집 모드와 검증 모드를 전환할 수 있습니다.
해시 목록 테이블에서 수집된 해시 정보를 확인하고 관리할 수 있습니다.
| 컬럼 |
설명 |
| 해시 |
바이너리 해시 (마스킹 처리) |
| 호출 횟수 |
해당 해시로 검증이 요청된 횟수 |
| 상태 |
활성 / 비활성 |
| 생성일 |
해시가 최초 수집된 날짜 |
| 활성화 |
토글 스위치로 해시의 활성/비활성 전환 |
| 삭제 |
개별 해시 삭제 |
알아두기
해시 수집/검증의 권장 사용 흐름은 다음과 같습니다.
- 앱을 보호합니다(수집 모드가 기본).
- 보호된 앱을 실행합니다. 해시 A가 수집됩니다.
- 스토어에 업로드합니다. 스토어가 재빌드하면 해시 B가 수집됩니다.
- 스토어에서 릴리즈합니다. 재빌드가 발생하면 해시 C가 수집됩니다.
- 수집이 완료되면 검증 모드로 전환합니다.
- 필요 없는 해시를 비활성화하거나 삭제합니다.
추가 정보
- 앱 Public 키: 앱 SDK의 Public Key로, 무결성 검증을 위해 필요한 정보입니다.
- 상품 Public 키: 앱에 귀속된 서버의 Public Key로, 무결성 검증을 위해 필요한 정보입니다.
검증 로그
무결성 검증 로그를 확인할 수 있습니다.

다음 조건으로 로그를 검색할 수 있습니다.
| 필터 |
설명 |
| 플랫폼 |
Android / iOS 선택 |
| 앱 버전 |
앱 버전으로 검색 |
| 패키지 이름 / 번들 아이디 |
플랫폼에 따라 패키지명 또는 번들 ID로 검색 |
| 버전코드 / 빌드번호 |
플랫폼에 따라 버전코드 또는 빌드번호로 검색 |
| 시간 범위 |
시작/종료 시간 지정 (YYYY-MM-DD HH:mm:ss 형식) |
| 앱 아이디 |
앱 ID로 검색 |
| 결과 검색 |
성공 / 실패 필터링 |
실패 사유 코드
| Code |
Message |
사유 |
| 0 |
SUCCESS |
|
| 4000068 |
Android Signature Not Exist |
안드로이드 서명 정보가 존재하지 않음 |
| 4000074 |
iOS signature not exist |
iOS 무결성 정보의 앱 서명 정보가 존재하지 않음 |
| 4000021 |
Challenge not exist |
무결성 검증 요청 시 Challenge가 존재하지 않음 |
| 4000069 |
Integrity info not match |
앱의 무결성 정보(앱 해시, 앱 서명 정보)가 일치하지 않음 |
| 4000073 |
App artifact not match |
앱의 패키지 이름, 버전코드 등이 일치하지 않음 |
| 4000032 |
Challenge verification failed |
검증 결과 불일치 |
| 4000076 |
Integrity option(rooting, emulator, debug, env..) check failed |
무결성 옵션 불일치 |