[TECH] 모바일 앱 위변조와 방지 솔루션 - 위변조 방법과 방어의 우선순위

모바일 어플리케이션(앱) 위변조의 방법과 우선 순위로 대응해야 하는 사례에 대하여 설명합니다.

 

[TECH] 모바일 앱 위변조와 방지 솔루션 - 위변조 방법과 방어의 우선순위

 
 
안녕하세요. LIAPP TEAM입니다.
이전 포스팅에서는 모바일 앱 위변조의 목적과 실제 사례를 기반으로 현재 일어 나고 있는 위변조의 해킹에 대한 심각성 및 받을수 있는 피해에 대해 이야기 했습니다.

이번 포스팅에서는 실제 위변조를 하기 위해서 어떤 과정을 거치는지와 한정된 자원에서 가장 우선적으로 방어해야 할 유형에 대하여 설명합니다

- 용어 정리

* 정적(static) DATA
앱 또는 앱 패키지 내에 선언되어 있는 정보
ex) 접속할 서버의 URL, DB query, 패키지 내에 파일로 저장되어 있는 정보, 그외 String으로 선언된 정보

*동적(dynamic) DATA
앱 이나 앱 패키지 내에는 존재 하지 않고 서버와의 통신을 통해서 받아지는 정보
ex) 앱 동작에 필요한 정보 중 정적 DATA를 제외한 정보
 
앱 위변조 해킹을 하기 위해서는 일반적으로 아래와 같은 순서로 작업이 이루어 집니다.

1. 소스코드 분석 후 해킹할 point 타겟팅
2. 수정 해야할 값이 동적DATA라면
   앱 debugging을 통하여 해당 Method에서 사용되는 DATA를 확인
3. 타겟팅 한 로직을 원하는 동작을 하도록 로직 수정 및 DATA 수정
4. 수정된 앱을 동작 시킬수 있도록 Re-Packaging
5. 해킹이 된 앱을 어떻게 배포할 것인지 방법을 선택하여 배포
 
 
첫번째
소스코드의 분석 후 해킹할 로직에 대한 타겟팅입니다.

프로그래밍이나 코드 분석의 기본 지식없이 툴만을 사용하여 해킹을 하는 (낮은 기술적 난이도) 스크립트 키드 수준의 해커가 아니라면 거의 모든 해킹의 첫번째 순서는 소스코드의 분석이 선행됩니다.

이는 PC,모바일을 통털어서 전분야에 해당되는 사항이며, 특히 android 와 같은 경우에는 우리가 만들어낸 앱이 기계어가 아닌 상대적으로 분석이 쉬운 JAVA ByteCode로 구성되어 있기 때문에 소스코드의 분석의 난이도가 쉽냐 어렵냐 하는 관점에서는 PC나 iOS보다 Android가 훨씬 취약한것이 사실입니다.

하지만 이는 어디까지나 해커의 역량에 관한 것임으로 바이너리 코드로 이루어진 iOS가 소스분석에 절대적으로 안전하다고 판단할수는 없습니다.
그렇지만 바이트코드의 소스분석 난이도가 낮으므로 iOS를 공격하려는 해커의 수보다 Android를 공격하려는 해킹의 수가 많은것은 사실입니다.
( 바이너리 코드와 바이트 코드에 관해서는 다른 포스팅에서 더 이야기 하도록 하겠습니다.)

위변조의 첫번째는 소스코드의 분석을 통하여 내가 원하는 변경 포인트가 어디인지 확인하고 어떤값으로 변경해야 하는지를 확인 하는 작업을 선행 합니다.

이때에는 jasmin,dex2jar 등 많은 툴을 이용하여 소스코드를 분석하게 됩니다.

두번째
내가 원하는 해킹의 결과를 도출하기 위해서 타겟팅한 로직에서 실제 어떤 데이터 값이나 어떤 로직으로 변경 해야 하는지 ( field의 값을 몇으로 변경하여야 원하는 값으로 인식하는지...어떤 if를 뛰어 넘어야 하는지...)를 확인하고 테스트 해보아야 합니다.

이러한 값이 소스코드내에 static하게 정의 되어 있으면 ( 정적 DATA ) 그것을 참고하여 변경을 하면 되지만 만약 이러한값이 서버와의 통신 및 다른 시스템과의 연계를 통하여 내려 받는 값으로써 앱 실행시에만 알수 있는 값이라면 소스코드를 변경하여 해당 값에 대한 logging을 하거나 앱을 실행하고 debugging 을 통하여 서버와의 통신 정책 및 값들에 대한 정보를 받오는 작업을 진행합니다.

세번째
실제 내가 분석한 코드를 기반으로 어느 부분을 고치면 내가 원하는 값이 나올지에 대해 알았고 그 값을 어떤값으로 변경해야 하는지에 대해서 디버깅을 통해서 알았기 때문에 직접 수정하여 적용하여 보는 작업을 진행합니다.

네번째
리패키징은 수정이 완료된 소스코드를 기존의 정상적인 앱과 같이 보이기 위해 다시 앱의 형태로 변환하는 과정을 말합니다.

다섯번째
이렇게 변경된 앱을 어떻게 배포할 것인지는 해커가 원하는 목적에 따라 다를수 있습니다.

이전 포스트에서도 분류한 것과 같이 해킹의 목적이 서비스를 사용하는 고객들의 정보라면 악성코드를 이용하여 사용자가 인지할 수 없는 상황에서 정상 앱을 변조된 앱으로 변경하는 방법을 택할 것이며, 목적이 서비스 사업자가 제공하는 컨텐츠에 대한 해킹이라면(컨텐츠 무료 사용, 능력치 변경 등), 공개된 게시판에 해킹이 된 앱을 배포 하거나, 해킹된 앱이 서비스 수준(?)이 높고 많은 사람들이 필요로 한다면 일정한 돈을 받고 앱을 제공하는 사이트를 통하여 배포가 될 것입니다.
현재는 유료화된 해킹앱들이 활성화 되고 있는 상황입니다.

 
 
서비스 사업자의 입장에서 가장 큰 보안적 위협을 꼽으라면 해킹된 앱이 배포 됨으로써 일어나는 해킹이 가장 조심해야 할 보안 사고중 하나라고 하겠습니다.

많은 기업들이 처음부터 모든 해킹에 대한 방어책을 준비하고 실행한다면 매우 좋겠지만 이러한 작업은 현실적으로 많은 제약이 있는 중소 규모의 기업에서는 여건상 곤란한 부분이 있습니다.

그렇다면 공들여 만든 서비스를 지키기 위해 우리가 해야할 일은 가장 파급력있고 서비스에 심각한 타격을 줄수 있는 해킹을 우선순위로 막아야 하겠습니다.

조금 극단적인 예를 들어보면 한명의 천재 해커가 자신의 만족으로 혼자 해킹하여 서비스의 컨텐츠를 무료로 이용한다면, 이는 한명의 사용자가 하는 것임으로 상대적으로 서비스에 큰 피해를 주지는 않을것입니다.
또한 이러한 사용자는 DB 나 서비스 모니터링 및 법적인 규제를 통하여 제재 할수 있을 것입니다.

하지만 해킹이 된 앱이 배포 되고 불특정 다수가 사용하게 되면, 이러한 해킹앱 사용자를 통해 많은 정상 사용자가 피해 또는 불합리함을 느낄것이며 이는 사용자의 이탈로 이어지게 되며 해킹 앱의 사용자가 늘어날수록 서비스의 수익률 저하와 정상 사용자의 이탈은 가속화될 것입니다.

마지막으로 보안은 한번 준비로 마칠수 있는 것이 아니기 때문에 현재 할 수 있는 상황에서 우선순위를 정하고 하나씩 준비해 감으로써 최종적으로는 서비스에 피해를 줄수 있는 해킹을 성공적으로 차단하는것을 목표로 두어야 할 것입니다.

다음 포스트에서는 위변조를 막는 기술과 이중 서비스에 가용성과 보안성을 모두 충족하기 위해서는 어떤것을 중점에 두어야 하는가에 대해서 이야기 해보도록 하겠습니다.
 
 
#위변조_방지_솔루션 #android_app_protector #ios_app_protector #Gartner_2017,2018 #모바일_앱_보안_#소스코드_난독화 #소스코드_암호화 #해킹툴_탐지 #Unity_보안 #Unreal_engine_보안 #리패키징_보안