QA Engineering/Tool & Automation

QARK(Quick Android Review Kit)

일해라폴폴 2023. 9. 8. 17:08
반응형

QARK는 Quick Android Review Kit의 약자이며 또 다른 유용한 보안 도구입니다. 소스 코드뿐만 아니라 앱의 패키지에서도 일반적인 보안 취약성을 찾는데 도움이 됩니다. 사용자에게 취약성에 대한 깊이있는 설명을 많이 제공합니다.

  • QARK는 앱의 소스 코드 또는 패키지된 APK 파일을 분석하기 위한 중요한 커뮤니티 지원(아파치 라이센스 지원) 도구입니다. 개발자는 QARK 분석을 실행하여 소스의 보안 취약성을 확인할 수 있습니다. 이 도구의 유용한 점은 에뮬레이터나 실제 디바이스를 테스트하기 위해 ADB 명령을 실행할 수 있다는 것입니다. ADB와 달리 앱이 안전한 환경에서 실행시 취약성을 확인해야 하기 때문에 디바이스를 루팅 할 필요가 없습니다. 이 파이썬 기반 도구는 윈도우, 리눅스 및 OSX에서 사용할 수 있습니다. QARK는 다음과 같은 취약점을 식별합니다.

QARK 작동 방식

여러 도구를 활용하여 Android 애플리케이션의 정적 및 동적 분석을 모두 수행합니다. 이러한 도구에는 다음이 포함됩니다.

  • Androguard: Android 앱을 분석하는 데 사용되는 Python 라이브러리
  • MobSF: Android 앱의 동적 분석에 사용되는 모바일 보안 프레임워크
  • ADB: Android 기기 또는 에뮬레이터에 연결하는 데 사용되는 Android 디버그 브리지

사용해보기

1. 설치

pip3 install qark

2. 실행

//qark --apk {apk path location} --report-type html
qark --apk /Users/qatest/Downloads/TEST_APP/v0.1.1/test-app-stg_debug_0.1.1.apk --report-type html

3. 실행을 하면, apk를 decompling 하여 실행한 폴더에 /build/qark 경로로 디컴파일 하여, 파일을 풀어 낸 뒤 스캔툴을 실행 하여 보안 취약점을 찾아 냄

...

Decompiling kotlin/collections/CollectionsKt___CollectionsJvmKt...
Decompiling kotlin/text/StringsKt__StringsJVMKt...
Decompiling kotlin/collections/CollectionsKt___CollectionsKt...
Decompiling kotlin/text/StringsKt__StringsKt...
Decompiling kotlin/collections/CollectionsKt...
Decompiling kotlin/text/StringsKt___StringsJvmKt...
Decompiling kotlin/text/StringsKt___StringsKt...
Decompiling kotlin/text/StringsKt...
java.io.EOFException: Unexpected end of ZLIB input stream
        at java.base/java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:245)
        at java.base/java.util.zip.InflaterInputStream.read(InflaterInputStream.java:159)
        at java.base/java.util.zip.ZipInputStream.read(ZipInputStream.java:196)
        at java.base/java.util.zip.ZipInputStream.closeEntry(ZipInputStream.java:143)
        at jdk.jartool/sun.tools.jar.Main.extractFile(Main.java:1463)
        at jdk.jartool/sun.tools.jar.Main.extract(Main.java:1370)
        at jdk.jartool/sun.tools.jar.Main.run(Main.java:385)
        at jdk.jartool/sun.tools.jar.Main.main(Main.java:1687)
Failed to extract fernflower jar with command 'jar xf test-app-stg_debug_0.1.1.jar'
Running scans...
Finish scans...
Writing report...
Finish writing report to /Users/test_app/micromamba/lib/python3.9/site-packages/qark/report/report.html ...
(base) Users@ test %

4. Report

  • 결과는 /Users/qa_test/micromamba/lib/python3.9/site-packages/qark/report/report.html 에 저장 되며, 스캔된 모든 소스 파일들에 대한 취약 점을 report 한다

5. 사용 후 느낀점

  • 보안취약성을 확인해서 보여주는 report 에 심각도나 전체 갯수 등에 대한 시각적 리포트가 존재 하지 않는다. 일반적으로 logging과 관련 된 취약성은 실제로 취약 하지 않는 경우가 있고 API key를 처음 부터 확인 하지 않는 경우도 있는 점을 감안할때 최초 Proto Type 이나 고도화 작업에 취약성을 확인 하기 위해서 필요 하지 않을까 싶습니다.

이 게시글은 아래 블로그를 참고 하여 직접 확인 하고 올렸습니다.
https://blog.naver.com/mashberry_/222922504472

 

앱 보안 테스트 도구

ADB (Android Debug Bridge) 이름에서 알 수 있듯이 ADB는 안드로이드 앱을 분석하기 위한 것이며...

blog.naver.com

 

반응형