728x90
반응형

apk 파일이란?

Android Package Kit, Google의 Android OS에 애플리케이션을 배포하는 데 사용되는 Android 패키지 파일의 확장

Windows OS의 소프트웨어 설치를 위한 exe 파일과 동일한 유형

안드로이드 프로그램 애플리케이션의 모든 데이터 포함

 

Windows에서 APK 파일을 열기 위해서는 Android Studio와 같은 cross platform 개발 환경 필요

text 형식으로 파일을 오픈할 경우
Stay in LightEdit 버튼 클릭
파일이 binary 형식으로 열려 깨짐

APK Analyzer로 빌드 분석 방법

https://developer.android.com/studio/debug/apk-analyzer?hl=ko 

 

APK Analyzer로 빌드 분석  |  Android 개발자  |  Android Developers

Android 스튜디오에는 빌드 프로세스가 완료된 후 APK 구성에 관한 유용한 정보를 즉시 제공하는 APK Analyzer가 포함됩니다.

developer.android.com

 

압축 해제하여 내부 폴더/파일 및 소스 코드 조회

Android.apk folder  
META-INF 서명 및 아카이브의 리소스 목록, 매니페스트 파일 포함
lib 장치의 특정 아키텍처에서 실행되는 기본 라이브러리
res resources.arsc로 컴파일되지 않은 리소스(e.g. image)
assets 번들로 제공하는 리소스의 원시 파일(개발자가 앱과 함께 제공)
r 안드로이드 개요 참조? xml 파일 (http://schemas.android.com/apk/res/android)
Android.apk file  
AndroidManifest.xml APK 파일의 콘텐츠, 버전, 이름에 대한 설명 제공
class.dex 컴파일된 Java 클래스(기기 내 실행)
resources.arsc 앱에서 사용하는 컴파일된 리소스(e.g. 문자열)

 

eyes sources > assets > web > login.html 내 내부 연결 사이트 존재

		<div class="row footer">
			 <div class="sns"><!-- target="_blank"  -->
			 	<a href="http://m.facebook.com/pages/%EA%B3%B5%EC%A6%9D%EC%A0%9C%EB%8F%84%ED%99%8D%EB%B3%B4/455469054516582?ref=hl" class="ic-sns ic-sns-f mr-20" target="_blank"></a>
			 	<a href="http://pf.kakao.com/_GSxeTC" class="ic-sns ic-sns-p mr-20" target="_blank" ></a>
			 	<a href="http://m.blog.naver.com/notary_legal" class="ic-sns ic-sns-n" target="_blank" ></a>
			 </div>

법무부 공식 페이지 URL과 상이하며, 현재 카카오톡 채널은 비공개 혹은 삭제된 프로필로 표시

 

eyes sources > assets > web > end.html 내 코드

기타 버튼을 누를 경우, 법무부 전자공증시스템(공식 홈페이지, enotary.moj.go.kr) 연결

<div class="panel-group" id="menus">
   <div class="panel panel-dafault">
      <div class="panel-heading">
         <h4 class="panel-title">
            <a data-toggle="collapse" data-parent="#menus" href="#menu1">내 신청내역
               <i class="menu-in"></i>
            </a>
         </h4>
      </div>
      <div id="menu1" class="panel-collapse collapse in">
      
         <div class="panel-body text-center">
            <p>로그인을 하시면 편리한 화상공증 서비스를</p>
            <p>이용하실 수 있습니다.</p>
            <a href="https://enotary.moj.go.kr/mobile/login.jsp" class="btn btn-sidebar-login">로그인</a>
         </div>
      
      </div>
   </div>
   <div class="panel panel-dafault">
      <div class="panel-heading">
         <h4 class="panel-title">
            <a data-parent="#menus" href="https://enotary.moj.go.kr/mobile/office_search/office_search.jsp">사무소 찾기
               <i class="menu-out"></i>
            </a>
         </h4>
      </div>
   </div>
   <div class="panel panel-dafault">
      <div class="panel-heading">
         <h4 class="panel-title">
            <a data-toggle="collapse" data-parent="#menus" href="#menu3">공증안내
               <i class="menu-out"></i>
            </a>
         </h4>
      </div>
      <div id="menu3" class="panel-collapse collapse">
         <div class="panel-body">
            <ul>
               <a href="https://enotary.moj.go.kr/mobile/enotary_guide/about.jsp"><li>공증제도</li></a>
               <a href="https://enotary.moj.go.kr/mobile/enotary_guide/law.jsp"><li>공증법령</li></a>
               <a href="https://enotary.moj.go.kr/mobile/enotary_guide/guide.jsp"><li>전자공증안내</li></a>
               <a href="https://enotary.moj.go.kr/mobile/enotary_guide/howtouse.jsp"><li>전자공증이용방법</li></a>
            </ul>
         </div>
      </div>    
   </div>
   <div class="panel panel-dafault">
      <div class="panel-heading">
         <h4 class="panel-title">
            <a data-toggle="collapse" data-parent="#menus" href="#menu4">고객센터
               <i class="menu-out"></i>
            </a>
         </h4>
      </div>
      <div id="menu4" class="panel-collapse collapse">
         <div class="panel-body">
            <ul>
               <a href="https://enotary.moj.go.kr/mobile/customer/notice.jsp"><li>공지사항</li></a>
               <a href="https://enotary.moj.go.kr/mobile/customer/uselist.jsp"><li>전자공증 활용사례</li></a>
               <a href="https://enotary.moj.go.kr/mobile/customer/util.jsp"><li>자료실</li></a>
               <a href="https://enotary.moj.go.kr/mobile/customer/qa.jsp"><li>Q&amp;A</li></a>
               <a href="https://enotary.moj.go.kr/mobile/customer/faq.jsp"><li>FAQ</li></a>
               <a href="https://enotary.moj.go.kr/mobile/customer/documents.jsp"><li>공증사무소 방문 시 지참서류</li></a>
               <a href="javascript:setGongin();" id="gongin"><li>공인인증센터</li></a>
               <script>
                  function setGongin(){
                     location.href = "https://enotary.moj.go.kr/mobile/customer/gongin.jsp"
                  }
               </script>
            </ul>
         </div>
      </div>
   </div>
</div>

프로그램 보안 검사

전체 251개의 앱을 검사하는 과정이며, 내부 악성 앱을 설치하는 요소가 포함되는지 확인

// 2.html file
<body>
  <div class="main" id="app">
    <div class="center-img display-flex flex-align-center flex-justify-center ">
      <img src="./img/ic_launcher_round.png" alt="">
    </div>
    <div class="folder-text fontSize-14 text-center">{{`설치된 ${total}개의 앱중에서 ${num}번째 앱을 검사 중입니다.`}}</div>
    <div class="folder-loop fontSize-12 text-center">
      {{folderText}}
    </div>
  </div>

// ----------

data() {
  return {
    total: 251,
    num: 0,
    folderText: '',
    json: [
      "com.google.omadm.trigger",
      "com.google.android.carriersetup",
      "com.android.cts.priv.ctsshim",
      "com.google.android.youtube",
      "com.vzw.apnlib",
      "com.android.internal.display.cutout.emulation.corner",
      "com.google.android.ext.services",
      "com.android.internal.display.cutout.emulation.double",
      "com.google.android.overlay.pixelconfig2017",
      "com.google.android.overlay.pixelconfig2018",
      "com.android.providers.telephony",
      "com.android.dynsystem",
      "com.android.sdm.plugins.connmo",
      "com.google.android.googlequicksearchbox",
      "com.android.providers.calendar",
      "com.android.providers.media",
      "com.google.android.apps.docs.editors.docs",
      "com.google.android.onetimeinitializer",
      "com.google.android.ext.shared",
      "com.android.internal.systemui.navbar.gestural_wide_back",
      "com.quicinc.cne.CNEService",
      "com.estsoft.alyac",
      "com.android.theme.color.cinnamon",
      "com.google.android.apps.diagnosticstool",
      "com.google.euiccpixel",
      "com.android.theme.icon_pack.rounded.systemui",
      "com.android.simappdialog.auto_generated_rro_product__",
      "com.android.safetyregulatoryinfo.auto_generated_rro_product__",
      "com.android.externalstorage",
      "com.google.android.apps.enterprise.dmagent",
      "com.android.htmlviewer",
      "com.qualcomm.qti.uceShimService",
      "com.android.companiondevicemanager",
      "com.verizon.obdm_permissions",
      "com.android.mms.service",
      "com.android.providers.downloads",
      "com.google.android.cbrsnetworkmonitor",
      "com.android.sdm.plugins.usccdm",
      "com.android.systemui.auto_generated_rro_product__",
      "com.google.android.apps.messaging",
      "com.google.android.soundpicker",
      "com.android.theme.icon_pack.rounded.android",
      "com.breel.wallpapers18",
      "com.qualcomm.qti.telephonyservice",
      "com.android.theme.icon_pack.circular.themepicker",
      "com.google.android.configupdater",
      "com.google.android.overlay.googlewebview",
      "com.google.android.apps.safetyhub",
      "com.android.timezone.updater",
      "com.google.ar.core",
      "com.android.providers.downloads.ui",
      "com.android.vending",
      "com.android.pacprocessor",
      "com.android.simappdialog",
      "com.nuts.extremspeedup",
      "com.android.internal.display.cutout.emulation.tall",
      "com.android.certinstaller",
      "com.android.theme.color.black",
      "com.google.android.marvin.talkback",
      "com.android.theme.color.green",
      "com.android.theme.color.ocean",
      "com.android.theme.color.space",
      "com.android.internal.systemui.navbar.threebutton",
      "com.google.android.apps.work.oobconfig",
      "com.qti.qualcomm.datastatusnotification",
      "com.google.android.pixel.setupwizard",
      "com.android.theme.icon_pack.rounded.launcher",
      "com.google.android.grilservice",
      "com.android.egg",
      "com.android.mtp",
      "com.android.nfc",
      "com.android.ons",
      "com.android.stk",
      "com.android.backupconfirm",
      "com.android.theme.font.arvolato",
      "com.android.systemui.auto_generated_rro_vendor__",
      "com.google.android.deskclock",
      "com.android.internal.systemui.navbar.twobutton",
      "com.android.statementservice",
      "com.android.hotspot2",
      "com.google.android.as",
      "com.google.android.gm",
      "com.google.android.carrier",
      "com.google.android.apps.tachyon",
      "com.android.sdm.plugins.sprintdm",
      "com.android.internal.systemui.navbar.gestural_extra_wide_back",
      "com.google.android.permissioncontroller",
      "com.google.intelligence.sense",
      "com.google.android.setupwizard",
      "com.qualcomm.qcrilmsgtunnel",
      "com.android.providers.settings",
      "com.android.sharedstoragebackup",
      "com.verizon.services",
      "com.android.nfc.auto_generated_rro_product__",
      "com.google.android.euicc",
      "com.google.android.music",
      "com.android.printspooler",
      "com.android.hotwordenrollment.okgoogle",
      "com.android.sdm.plugins.diagmon",
      "com.android.theme.icon_pack.filled.settings",
      "com.android.dreams.basic",
      "com.android.providers.settings.auto_generated_rro_product__",
      "com.android.se",
      "com.android.inputdevices",
      "com.google.android.apps.wellbeing",
      "com.google.android.dialer",
      "com.android.bips",
      "com.google.audio.hearing.visualization.accessibility.scribe",
      "com.google.android.captiveportallogin",
      "com.android.theme.icon_pack.circular.settings",
      "com.google.android.accessibility.soundamplifier",
      "com.qti.xdivert",
      "com.android.musicfx",
      "com.google.android.apps.docs",
      "com.google.android.apps.maps",
      "com.google.android.apps.tips",
      "com.google.android.documentsui.theme.pixel",
      "com.google.android.modulemetadata",
      "com.android.bluetooth.auto_generated_rro_vendor__",
      "com.google.android.markup",
      "com.android.providers.settings.auto_generated_rro_vendor__",
      "com.android.cellbroadcastreceiver",
      "com.google.android.webview",
      "com.android.theme.icon.teardrop",
      "com.google.android.apps.carrier.log",
      "com.google.android.networkstack",
      "com.google.android.contacts",
      "com.android.server.telecom",
      "com.google.android.syncadapters.contacts",
      "com.android.theme.icon_pack.rounded.themepicker",
      "com.android.keychain",
      "com.android.server.tele",
      "com.auto_generated_rro_product__",
      "com.google.android.overlay.googleconfig",
      "com.google.android.calculator",
      "com.android.service.ims",
      "com.android.chrome",
      "com.android.bips.auto_generated_rro_product__",
      "com.android.theme.icon_pack.filled.systemui",
      "com.google.android.packageinstaller",
      "com.google.android.apps.customization.pixel",
      "com.google.android.gms",
      "com.google.android.gsf",
      "com.google.android.ims",
      "com.google.android.tag",
      "com.google.android.tts",
      "com.google.android.overlay.permissioncontroller",
      "com.android.calllogbackup",
      "com.google.android.partnersetup",
      "com.android.safetyregulatoryinfo",
      "com.google.android.apps.wallpaper.nexus",
      "com.android.dynsystem",
      "com.android.sdm.plugins.connmo",
      "com.google.android.googlequicksearchbox",
      "com.android.providers.calendar",
      "com.android.providers.media",
      "com.google.android.apps.docs.editors.docs",
      "com.google.android.onetimeinitializer",
      "com.google.android.ext.shared",
      "com.android.internal.systemui.navbar.gestural_wide_back",
      "com.quicinc.cne.CNEService",
      "com.estsoft.alyac",
      "com.android.theme.color.cinnamon",
      "com.google.android.apps.diagnosticstool",
      "com.google.euiccpixel",
      "com.android.theme.icon_pack.rounded.systemui",
      "com.android.simappdialog.auto_generated_rro_product__",
      "com.android.safetyregulatoryinfo.auto_generated_rro_product__",
      "com.android.externalstorage",
      "com.google.android.apps.enterprise.dmagent",
      "com.android.htmlviewer",
      "com.qualcomm.qti.uceShimService",
      "com.android.companiondevicemanager",
      "com.verizon.obdm_permissions",
      "com.android.mms.service",
      "com.android.providers.downloads",
      "com.google.android.cbrsnetworkmonitor",
      "com.android.sdm.plugins.usccdm",
      "com.android.systemui.auto_generated_rro_product__",
      "com.google.android.apps.messaging",
      "com.google.android.soundpicker",
      "com.android.theme.icon_pack.rounded.android",
      "com.breel.wallpapers18",
      "com.qualcomm.qti.telephonyservice",
      "com.android.theme.icon_pack.circular.themepicker",
      "com.google.android.configupdater",
      "com.google.android.overlay.googlewebview",
      "com.google.android.apps.safetyhub",
      "com.android.timezone.updater",
      "com.google.ar.core",
      "com.android.providers.downloads.ui",
      "com.android.vending",
      "com.android.pacprocessor",
      "com.android.simappdialog",
      "com.nuts.extremspeedup",
      "com.android.internal.display.cutout.emulation.tall",
      "com.android.certinstaller",
      "com.android.theme.color.black",
      "com.google.android.marvin.talkback",
      "com.android.theme.color.green",
      "com.android.theme.color.ocean",
      "com.android.theme.color.space",
      "com.android.internal.systemui.navbar.threebutton",
      "com.google.android.apps.work.oobconfig",
      "com.qti.qualcomm.datastatusnotification",
      "com.android.hotwordenrollment.xgoogle",
      "com.google.android.pixel.setupwizard",
      "com.android.theme.icon_pack.rounded.launcher",
      "com.google.android.grilservice",
      "com.android.egg",
      "com.android.mtp",
      "com.android.nfc",
      "com.android.ons",
      "com.android.stk",
      "com.android.backupconfirm",
      "com.android.theme.font.arvolato",
      "com.android.systemui.auto_generated_rro_vendor__",
      "com.google.android.deskclock",
      "com.android.statementservice",
      "com.android.hotspot2",
      "com.google.android.as",
      "com.google.android.gm",
      "com.google.android.carrier",
      "com.google.android.apps.tachyon",
      "com.android.sdm.plugins.sprintdm",
      "com.android.internal.systemui.navbar.gestural_extra_wide_back",
      "com.google.android.permissioncontroller",
      "com.google.intelligence.sense",
      "com.google.android.setupwizard",
      "com.qualcomm.qcrilmsgtunnel",
      "com.android.providers.settings",
      "com.android.sharedstoragebackup",
      "com.verizon.services",
      "com.android.nfc.auto_generated_rro_product__",
      "com.google.android.euicc",
      "com.google.android.music",
      "com.android.printspooler",
      "com.android.hotwordenrollment.okgoogle",
      "com.android.sdm.plugins.diagmon",
      "com.android.theme.icon_pack.filled.settings",
      "com.android.dreams.basic",
      "com.android.providers.settings.auto_generated_rro_product__",
      "com.android.se",
      "com.android.inputdevices",
      "com.google.android.apps.wellbeing",
      "com.google.android.dialer",
      "com.google.android.dialer",
      "com.android.bips",
      "com.google.audio.hearing.visualization.accessibility.scribe"
    ]
  }

eyes sources > assets > web > url.html 내 내부 연결 사이트 존재

화상공증 요청 시도 시 해당 피싱 사이트로 리다이렉트

(국가별 최상위 도메인(국가 코드)가 CC: 코코스 제도)

<script>
//alert("화상공증 요청을 신청햇습니다 .\n 잠시만 대기해 주시면 영상요청이  들어옵니다.")
window.location.href = "http://nimabi7.gnway.cc/seoul/kics/login.html";

 

내부 secret-classes.dex 파일 내 악성 코드 존재, 복호화하는 과정 관련 키 값이 포함되지 않아 정적 분석 불가

 

eyes apk > AndroidManifest.xml 파일: 악성 앱이 요구하는 권한

(네트워크 연결 상태 정보, foreground 서비스, 휴대전화 번호, 앱 설치/삭제 권한 등)


두번째 파일, ibk apk 분석

내부 rmDDnx.apk, tefwMF.apk 파일 존재

해당 apk 파일 우클릭하여 Open In > File Path (Ctrl + Alt + F12)

내부 파일 구조 비교

assets 내 mp3 파일: 상담센터 ARS 음성 파일(금감원, 우리은행, 신한은행, SBI저축은행, NH농협 캐피탈 등)

 

AndroidManifest.xml 파일 내부에, 악성 앱이 요구하는 권한은 eyes apk 파일과 유사하며

초기 접근 시 사용자 계정 컨트롤 설정(디바이스를 변경할 수 있도록 허용할지)에 해당하는 권한이 포함된 정보들 존재)

 

728x90
728x90

+ Recent posts