Appsealing 이전에 분석했던 기록

홈 > 안드로이드 > 안드로이드
안드로이드

Appsealing 이전에 분석했던 기록

앱씔링이란?

https://www.appsealing.com/kr/ 

apk를 보호하기 위한 보안 솔루션 입니다.

이전에 인간 혹은 뱀파이어 게임이 Mod가 한창 유행일때 특정버전. 1.4.0 버전이 업데이트 되었을때 Mod apk 배포가 중단된 적이 있습니다.

바로 앱씔링 때문인데요. 저도 이 게임을 하고 있었던지라 한번 분석을 했었습니다.

해당 게임은 Unity 기반 게임 이었으며 Appsealing에 의해 Assembly-CSharp.dll, Assembly-CSharp-firstpass.dll, Assembly-UnityScript.dll 3개의 파일이 통째로 암호화가 되어 있었습니다. 그리고 리패킹징된 apk, 메모리 탐지, 메소드 단위 암호화, 치트apk 탐지, 디버깅 방지 등 다양한 기능이 적용되어 있었습니다.

e89a51472f4580b5e7a8581490548290_1570449241_4428.JPG

앱실링이 적용된 후 Appsealing 폴더가 생성되어 있었으며 1~7 까지의 이상한 파일이 생성되어 있었습니다. 이 파일들은 메소드 단위의 암호화를 복호화 할때 사용되는 파일입니다.

e89a51472f4580b5e7a8581490548290_1570449459_2541.JPG
Assembly-CSharp.dll 파일의 첫번째 복호화가 진행된 모습입니다. 메소드들은 암호화가 되어있습니다.

e89a51472f4580b5e7a8581490548290_1570449582_5525.JPG

메소드 주소 또한 아작나 있으며 우리가 복구해야할 과제입니다.
e89a51472f4580b5e7a8581490548290_1570449241_4712.JPG
앱실링에 보호되는 apk는 lib 내부에 libcovault-appsec.so 라는 파일이 존재합니다. 해당파일에서 암호화, 복호화, 안티치트기능을 수행합니다.

게임이 실행되야되는데 메소드단위로 암호화되있는걸 어떻게 푸느냐?

방법은 이러합니다.


1. Unity 모듈 메소드가 호출되기 전에 메소드단위의 암호화를 복호화 시키는 함수를 호출하게 됩니다.

2. 메소드 전체를 복호화 하지 않습니다. 호출된 메소드에 대해서만 동적 메모리에 복호화 시킵니다.

3. 동적으로 복호화된 IL 어셈블리들을 실행시킵니다.


e89a51472f4580b5e7a8581490548290_1570450704_7087.JPG

메소드 단위의 암호화를 복호화시키는 함수 부분입니다. 
e89a51472f4580b5e7a8581490548290_1570450704_7393.JPG
메소드의 주소와 메소드의 사이즈를 저장해 놓았습니다. 8Byte 당 셋트 하나씩입니다.

암호화된 메소드들이 너무 많으니 해당 메모리들을 덤프하여 프로그래밍으로 변조된 Unity 모듈들을 Fix 해주어야 합니다.

아흑.. 너무 옛날이라 뭔갈 더 써볼려고해도 기억이 안나는군요,.

이외에도 smali에서 키입력 관련된 부분을 hooking 하는것도 있는듯했습니다.

혹시 Appsealing을 분석해보실 의향이 있으신분들은 txt파일과 dif(ida patch file) 올려놓겠습니다. 해당 주소들 참조해 가시면서 분석 해보세용. 

txt 파일이 매우 더럽습니다. 기록용으로 만들어 둔탓에.. libcovault-appsec.so_baseaddress + 0x 식으로 접근해 보시면 됩니다.

저는 x86 안드로이드 환경에서 분석했습니다. (arm 이 뭐죠? 먹는건가요?)

앱실링은 함수가 실행되기전에는 암호화가되어있습니다. 

e89a51472f4580b5e7a8581490548290_1570452294_2684.JPG
Prologue(복호화) -> 복호화된 코드 실행 -> epilogue(재암호화)

왠만해서는 동적으로 분석하셔야 편하실 껍니다.


39 Comments
2 쟈리로 2019.10.07 21:42  
좋은 정보 감사합니다!
5 Kira 2019.10.07 22:05  
혹시 libngsm.so도 분석해보신 적 있으신가요?
S tutorial1 2019.10.07 22:16  

아뇨. 해본적 없습니다.
3 라피스넷 2019.10.07 22:21  
좋은 경험 풀어주셔서 감사드립니다
26 세월강태공 2019.10.07 22:31  
일 따봉 누르고 갑니다~~
6 지존 2019.10.07 22:56  
ㅗㅜㅑ 너무 직접적이라 조심스러워지는 내용이네요
쨌든 좋은 분석에 좋아요 누르고 가겠습니다!
3 하이큐 2019.10.07 23:06  
Prologue(복호화) -> 복호화된 코드 실행 -> epilogue(재암호화)
ㄷㄷ 겁나 느려지겠네요
따봉박습니다
6 하늘사자 2019.10.08 01:15  
실력자시네요.. 내공이 느껴지십니다. 감사합니다.

Congratulation! You win the 10 축하드립니다! 당첨되셨어요~!

S 코드몽키 2019.10.08 01:54  
텍스트파일 자체가 암호화라는건 함정 ㅋ
2 unclebob 2019.10.08 04:29  
좋은 정보 감사합니다!
5 파파엄마 2019.10.08 07:40  
워 좋은 내용 공유 감사합니다 ^^bbb
2 하늘e준Love 2019.10.08 09:46  
저도 언젠가 해본거 같은데 하도 오래되서 기억이 ㅋㅋ
혹시 앱실링이  il2cpp를 공백으로 난독한 보안이 맞나요? 긴가민가 ㅜㅜ
Kira님 Ngsm은 넥슨꺼 아닌가요?
1 킹짱 2019.10.09 18:10  
키라 그는대체....
3 배움 2019.10.08 11:50  
감사합니다! 여기서 진짜 이것저것 줍고 배워 갑니다.
3 junos 2019.10.09 10:06  
와 감사합니다 열심히 공부하고있습니다.
1 검은산왕 2019.10.09 11:09  
좋은 정보 감사합니다
3 안녕하새우 2019.10.10 16:48  
좋은 정보 감사합니다
5 김치가조아 2019.10.19 09:02  
Prologue(복호화) -> 복호화된 코드 실행 -> epilogue(재암호화)

왠만해서는 동적으로 분석하셔야 편하실 껍니다.


마지막 위의 글 동적분석은 디버깅 하라는 말인가요?
S tutorial1 2019.10.20 20:24  
네 디버깅 하시면서 진행하셔야 편할꺼에요.
1 levis 2019.11.01 01:11  
Thank you first~
But how to set breakpoint in this so with IDA?
S tutorial1 2019.11.01 13:18  
press f2 button, then you can set breakpoint
1 levis 2019.11.01 18:25  
I mean, what should I do next when I set bp at the beiging of libcovault-appsec.so (.init_array)?
How to debug libcovault-appsec.so dynamicly?
S tutorial1 2019.11.01 20:34  
1. you need decompiled apk.
2. go to the smali(.init) area, you can find first .init function from AndroidManifest.xml
3. input this code.
    const-wide/16 v0, 0x2710

    invoke-static {v0, v1}, Landroid/os/SystemClock;->sleep(J)V
this smali code can stop 15 second your app.
4.recompile & sign & run app
5.now, You can attach the debugger effortlessly.

Congratulation! You win the 1 축하드립니다! 당첨되셨어요~!

1 levis 2019.11.01 20:58  
That's a good idea when i use frida.
If I want to bypass protection ,what should I do?
Thank you again~
2 에스트 2019.11.04 12:56  
잘봤습니다 도움 됐습니다
2 95grit 2019.12.07 00:20  
감사합니다
2 리리 2019.12.11 18:10  
감사합니다
2 songod 2019.12.19 17:13  
감사합니다.
2 혀기꼬 2020.01.08 15:21  
감사합니다
28 사딸라 2020.01.08 23:31  
이것도 공부 많이 해야겠네요
2 username 2020.03.15 00:01  
plz make tutorial for il2cpp and how to bypass the security
2 뽀야 2020.03.29 22:18  
공부할때 도움되겠네요
7 래바리 2020.04.03 18:44  
감사합니다.
1 이나얼아니 2020.05.20 13:24  
감사합니다
1 qsdfg 2020.10.04 17:45  
잘봤습니다 도움 됐습니다
1 Uday 2020.10.30 19:00  
Sir, do you have video tutorial for appsealing bypass
1 weststarqp 2021.01.07 14:56  
감사합니다
1 노멀시그너 2021.04.11 23:34  
프로그램들 이름이 무엇인가요?
2 leeSSi 2022.04.06 10:22  
좋은 정보 감사합니다!