IT/OPINION

apk 진단 고찰 Part2 권한 고찰

종금 2021. 4. 13. 15:43
반응형

데이터 바우처를 진행하며 APK에 대해 심도있게 공부하던 와중 악성코드가 의심되는 APK의 경우 권한에 대한 부분을 많이 가져온다는 것을 알게되었다.

물론 진단하는 어플의 경우 악성코드로서 보지는 않지만 컨설팅에서 좀더 뎁스있는 방법으로 권한에 대한 부분을 과하게 받는지 아닌지 확인하여 진단하는 것을 해주면 좋지않을까 하며 해당 부분에 대해 좀더 다루어보려고한다.
(실제로 권한을 과도하게 받으면 악성코드가 존재하는 어플리케이션인지 백신에 의해 의심받을 수 있다.)

안드로이드의 권한의 경우 AndroidManifest.xml 파일에 압축되어 정의되어 있다.

위의 예시의 경우 Manifest.xml파일에 총 16개의 permission이란 단어를 포함한다 이중 일부는 실제 퍼미션은 아니지만 위의 사진에서 몇몇 퍼미션은 해석이 가능하다.
사진에서 보이는 권한을 해석해보면 "네트워크에 접근이 되는 권한", "와이파이 접근 허용 권한" 등 보이지 않는 권한까지 약 10개를 살짝 상회하는 권한을 받아오는것으로 확인된다.

그렇다면 이를 이용해 어떻게 우리는 가이드를 내릴 수 있을 까 먼저 예시를 통해 어떤식으로 살필수 잇는지 찾아보자
우리는 어플리케이션 X를 실행하는데 필요한 최소한의 권한을 Y라고 생각해보자 (어플리케이션을 실행할 때는 해당 어플리케이션마다 필요한 권한수는 다르겠지만 0은 없다는 가정으로 시작한다)
만약 어플리케이션 X에 악성코드를 삽입 후 리패키징하여 X'를 만들었을 때 X의 기능은 작동하여야하며 이외에 악성코드를 작동할 권한이 추가로 존재하기에 "X'의 권한은 Y+a"라고 생각할 수 있다.
즉 사용자를 속이기 위해서는 X의 기능이 완벽히 작동해야하며 이외에 악의적으로 패키징한 사용자의 목적 달성을 위해 악성앱은 권한을 많이 사용할 수 밖에 없으며 이를 이용해 일부 백신들은 권한의 개수 혹은 권한의 종류 등을 산청하여 판별에 도움을 주기도한다. 
만약 개발사에서 만든 앱 베타버전을 테스트 의뢰받았을 때 해당 어플리케이션은 "공급망 공격을 받지 않았다"라는 조건하에서 특정 권한이 있거나 권한의 개수가 필요 이상으로 많다면 이를 가이드해야할 것이다.
그렇다면 어플에 필요하지 않은 권한이 있거나, 권한 개수가 많음 혹은 적절함의 판단 기준은 어떻게 해야할까 

 

이는 논문에서 해답을 좀 얻고 있다

1. 권한의 수 
Ref: CFG 라이브러리 정보를 이용한 권한 기반 안드로이드 악석코드

"권한사용율을 보았을 때 정상 어플의 경우 6.33이며 악성코드의 경우 12.19개의 권한을 불러온다."

대체적으로 적절한 권한의 개수를 X라고 가정할 때 약 두배의 권한이 존재한다면 해당 어플의 권한의 개수를 의심해 볼 수 있다. 
하지만 금융앱은 평균 권한의 개수가 일반앱에 약 두배인 것을 확인할 수 있다

Ref 모바일 앱 개인정보 침해현황 및 대응방안 (금융, 안드로이드 운영체제 중심으로) 

즉 일반적인 어플 관점에서는 악성코드가 삽입될 수 있다라고 예상될만한 권한의 개수가 금융 어플리케이션에 입장에서는 평균의 권한보다도 못미치는 권한의 개수가 될 수 있는 것이다.
그러기에 각 앱이 속한 분야(금융, 게임, 소셜, 등)를 파악하고 해당 분야에 대한 필요 최소 권한에 대한 규칙을 세워 이를 넘을 시 가이드하는 방향으로 가야할 것이다.

 

2. 특정 권한을 긁어오는 경우

권한중 일부의 경우 악성코드에서 특히 많이 사용하는 권한이 존재한다.
물론 해당 권한이 필요할 수 있기에 "특정 권한이 있다 -> 악성코드가 삽입된 앱이다"로 할 수 없겠지만 그래도 
예시로 모바일게임 앱이지만 사진을 찍는다거나(일부 게임 제외), 마켓앱인데 전화번호를 불러오는 등의 행위가 코드에 삽입되어 있다면 해당 부분에 대해서는 한번 재고하도록 요청할 수 있을 것이다.

Ref: CFG 라이브러리 정보를 이용한 권한 기반 안드로이드 악성코드
Ref: 모바일 앱 개인정보 침해현황 및 대응방안 (금융, 안드로이드 운영체제 중심으로)


물론 코로나시대로 되며 현재는 비대면거래를 위해 신분증 촬영이 필요한만큼 계좌 개설 어플리케이션의 경우 사진촬영 권한이 필요할 수도 있는만큼 매번 변화하는 시대에 맞추어야겠지만 '오디오녹음, 주소록 읽기/수정, SMS메시지 읽기,보내기, 통화기록, 기기전원, 강제 재부팅' 등의 필요하지 않아 보이는 여러 권한에 대해 꼭 개발사에게 체크 후 해당 부분에 대해 고칠 수 있도록 가이드해야할 것이다. 

 

정리:

분명 안드로이드는 달빅 샌드머신에서 실행 되어 독립적으로는 안전한 어플리케이션으로 보일 수 있으나 권한에 대한 설정 하나하나에 의해서 보안이 무너질 수 있을정도로 권한이 갖은 힘은 막강하다.

그러기에 필요한 개수의 권한을 갖을 수 있게 잘 가이드하는 것이 중요한데 
이 부분에 대해서는 각자 앱이 갖는 특성이 있는만큼 답이 "이 기준을 넘으면 취약, 이 권한이 존재하면 취약" 등으로 표현하기 어려울 것이다. 이럴땐 진단자의 센스가 필요한데 진단자는 앱의 분야 및 특성을 먼저 파악하고 권한에 대해 고찰해보며 필요한 권한과 아닌 권한인지 분류하는 것에 체크하고 진단해야할 것이다.
이후 체크된 "필요 외 권한"들에 대해서 개발자와의 인터뷰를 통해 확인해보고 좀 더 안정성 있는 앱이 될 수 있도록 가이드하는 것이 중요할것이다.

반응형