안드로이드 취약점 분석 툴 | (안드로이드 모의해킹) Androbugs 활용한 앱 자동화 분석 빠른 답변

당신은 주제를 찾고 있습니까 “안드로이드 취약점 분석 툴 – (안드로이드 모의해킹) AndroBugs 활용한 앱 자동화 분석“? 다음 카테고리의 웹사이트 https://you.charoenmotorcycles.com 에서 귀하의 모든 질문에 답변해 드립니다: https://you.charoenmotorcycles.com/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 보안프로젝트[boanproject] 이(가) 작성한 기사에는 조회수 581회 및 좋아요 8개 개의 좋아요가 있습니다.

Table of Contents

안드로이드 취약점 분석 툴 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 (안드로이드 모의해킹) AndroBugs 활용한 앱 자동화 분석 – 안드로이드 취약점 분석 툴 주제에 대한 세부정보를 참조하세요

보안프로젝트 ( www.boanproject.com )에서 제공하는 IT보안 강의입니다. 이번 주제는 \”(안드로이드 모의해킹) AndroBugs 활용한 앱 자동화 분석 \” 입니다.

안드로이드 취약점 분석 툴 주제에 대한 자세한 내용은 여기를 참조하세요.

[Android] 안드로이드 앱 취약점 진단 분석 도구 소개 – I-Tstory

디컴파일 툴이란? 간단히 말해 몇몇 프로그램과 apk파일을 가지고 원본 자바 코드를 복원 하는 작업을 하는 것. 난독화 등 별도 …

+ 더 읽기

Source: lucete1230-cyberpolice.tistory.com

Date Published: 12/11/2022

View: 272

안드로이드 앱 취약점 분석 툴 개발 (Tool 명 : 다자바) – 중부대학교

모바일 안드로이드의 수많은 취약점 OWASP TOP 10에 집중하기로 하였다. OWASP란. The Open Web Application Security Project로 오픈소스 웹 애플리케이션 보안프로젝이.

+ 더 읽기

Source: isweb.joongbu.ac.kr

Date Published: 4/22/2022

View: 8704

오픈소스 툴 SUPER 사용, 안드로이드 앱 (apk) 취약점 점검하기

SUPER 다운로드 및 설치 SUPER은 오픈소스 기반의 안드로이드 앱 (apk) 취약점 점검 툴이다(사실 분석툴이 더 맞는 것 같다).

+ 여기에 더 보기

Source: liveyourit.tistory.com

Date Published: 2/17/2021

View: 1576

안드로이드 취약점 진단 툴 ( Appie, Inspeckage )

안드로이드 취약점 진단 툴 ( Appie, Inspeckage ) … 은 이 도구들이 하나로 통합되고 다른 여러 복합적인 기능을 가지고 있어 매우 유용한 분석 툴.

+ 여기에 자세히 보기

Source: itsaessak.tistory.com

Date Published: 9/17/2021

View: 8865

오픈소스 APP진단 자동화 툴(android) – 해커의 개발일기

블로그에는 해킹과 취약점 내용, 개발하고 있는 부분들, 관심 있는 부분, 주식 분석 알고리즘(?) 같은 것들을 다룰 생각입니다.

+ 더 읽기

Source: bourbonkk.tistory.com

Date Published: 8/1/2022

View: 7456

모바일 앱 취약점 점검도구

안드로이드 앱(apk)과 아이폰 앱(ipa)의 실행파일을 대상으로 취약점 진단을 합니다. 일러스트. 간편한 취약점 점검. 자동 검사 및 다양한 …

+ 여기에 표시

Source: www.vfinder.co

Date Published: 12/4/2022

View: 5984

[android] 취약점 분석 툴 androbugs

[andro] 취약점 분석 툴 androbugs. CHA3M 2019. 12. 19. 18:27. androbugs … 4년전의 오래된 툴. python이 설치되어 있어야한다.

+ 여기에 자세히 보기

Source: cha3m.tistory.com

Date Published: 7/3/2022

View: 2137

Android 취약점 탐색 자동화를 위한 Jandroid 적용기

Androguard는 Andro 실행 파일을 분석하는 역할을 담당합니다. 크게 아래와 같은 기능이 있습니다. APK 파일 정보 추출; 클래스와 메서드 목록 추출 …

+ 여기에 표시

Source: engineering.linecorp.com

Date Published: 11/14/2022

View: 8850

2021 년 최고의 모바일 앱 보안 테스트 도구 10 가지 – 다른

# 1) ImmuniWeb® MobileSuite · # 2) Zed 공격 프록시 · # 3) Kiuwan · # 4) QARK · # 5) 마이크로 포커스 · # 6) Andro 디버그 브리지 · # 7) 코드화 된 보안 · # 8) 드로 저 …

+ 여기에 자세히 보기

Source: ko.myservername.com

Date Published: 9/9/2022

View: 6032

모바일 취약점 진단 / 이미지덤프(fridump) – kkamagi.story

회사에서 급하게 모바일 앱 취약점 진단을 요청하였다. … 모바일 취약점 진단 해봤냐며. … 1) 분석할 로컬 환경에 fra 툴 설치.

+ 여기에 표시

Source: kkamagistory.tistory.com

Date Published: 7/16/2021

View: 2144

주제와 관련된 이미지 안드로이드 취약점 분석 툴

주제와 관련된 더 많은 사진을 참조하십시오 (안드로이드 모의해킹) AndroBugs 활용한 앱 자동화 분석. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

(안드로이드 모의해킹) AndroBugs 활용한 앱 자동화 분석
(안드로이드 모의해킹) AndroBugs 활용한 앱 자동화 분석

주제에 대한 기사 평가 안드로이드 취약점 분석 툴

  • Author: 보안프로젝트[boanproject]
  • Views: 조회수 581회
  • Likes: 좋아요 8개
  • Date Published: 2018. 7. 15.
  • Video Url link: https://www.youtube.com/watch?v=ADw73bRa-iY

[Android] 안드로이드 앱 취약점 진단 분석 도구 소개

728×90

인시큐어 뱅크 강의 내용을 포함하고 있습니다.

취약점 진단 분석 도구 소개

안드로이드 앱 취약점 진단 분석 도구를 소개해보도록 하겠다.

정적 분석 도구 소개

ADB : Android Debug Bridge

– 안드로이드 단말기와 데스크톱 간에 통신을 할 때 필요한 도구.

apktool

– apk파일을 디컴파일 해서 소스코드 추출 (classes.dex)

– 위의 소스코드(classes.dex)를 수정할 수 있다.(patch) 이러한 코드를 다시 apk로 만드는 과정을 리패키징(patched apk file)이라함.

dex2jar

– dex file to jar

– dex(Dalvik Excutable의 약자) file을 jar(java Byte Code) file로 바꾸어 주는 역할을 함.

jd-gui

– jar file을 볼 수 있는 viewer역할

– 변수 타입과 변수 이름까지 똑같이 나오는 경우가 많음 -> 소스코드 보기 편해짐.

Eclipse ADP(Android Developer Toolkit)

– ide(통합 개발환경) 개발도구

동적 분석 도구 소개

android-Logviewer / adb -d logcat / DDMS

– 로그 확인하는 툴

– 앱 분석(크래킹)에 용이한 정보 출력

log 분석을 하는 이유?

어떤 값이 전달 되는데 그 값을 모를 때 –> 로그나 주석처리 등

Fiddler(프록시 툴)

프록시 툴임, 버프슈트(burp suite)도 가능.

위에 도구들은 검색하면 다 다운받을 수 있습니다. 혹시 필요하시다면 댓글 주시면 메일로 위에 도구들 다 .zip으로 보내드릴께요~~

안드로이드 자동 분석 툴

– QARK

– MobSF

– APPUSE

– Insoeckage

– Androbus

등등 모바일 책에 보면 많음, 책은 “안드로이드 모바일 앱 모의해킹”

위 도구들의 내용에 대해 이번 포스팅 자세히 다루지 않고 교재 실습 시 제대로 포스팅 하도록 하겠습니다.

아래는 위에 설명한 “취약점 진단 도구(정적 & 동적)”들의 대한 조금 더 자세한 설명을 다룬 것입니다.

디컴파일 툴

디컴파일 툴이란?

간단히 말해 몇몇 프로그램과 apk파일을 가지고 원본 자바 코드를 복원 하는 작업을 하는 것.

난독화 등 별도의 보안이 적용되지 않는 한 apk 분해 가능

(Jeb2 와 같은 유료 툴을 사용하면 난독화 해제 기능을 포함한 좋은 기능들이 포함되어 있음 )

종류:

jadx 아래 참고 글 확인하기

jadx를 이용한 APK 파일 분석

jadx는 APK 파일과 DEX파일을 빠르게 디컴파일 해준다. 이제까지 소개한 도구들 중에서 제일 빠른 디컴파일 속도를 내고 있다. ByteCodeViewer와 비교해서 서로 장단점이 있지만, 자바 코드만 분석을 할 때는 jadx를 추천한다.

특히 jadx의 코드 검색 기능은 다른 디컴파일 도구보다 매우 탁월하다. 검색 기능을 클릭했을 때 내부적으로 디컴파일 작업이 상세하게 이루어지면서 관련 정보들을 미리 파악하고, 사용자가 검색할 때 빠르게 탐색해준다.

처음에는 디컴파일과 인덱싱 작업으로 다소 시간이 소요될 수 있지만, “root”라는 문자를 클래스와 코드 내에서 검색을 할 때 빠르게 찾아낸다. 취약점 진단을 할 때 루팅 체크하는 것을 확인하고 이를 우회하는 것인 첫번째 작업이다.

jd-gui

bytecodeviewer 자바, 안드로이드, DEX, jars 파일 등 소스코드 리버싱 분석 도구이다. 윈도우즈 환경에서 완벽하게 동작할 수 있도록 지원을 하고 있다. 안드로이드 APK파일을 디컴파일하여 바이트코드 형태와 클래스파일을 자바파일로 변환하여 소스파일로 복원하여 같이 보여준다. 이제까지 사용한 도구들의 기능을 모두 합한것과 같은 느낌이 들정도로 기능적으로나, 업무 효율적으로나 거대한 도구이다. 분석 속도가 다른 도구에 비해 매우 빠르다.

JTAG https://m.blog.naver.com/PostView.nhn?blogId=dong880510&logNo=140156981611&targetKeyword=&targetRecommendationCode=1

ADB

ADB는 Android Debug Bridge의 약자로, Android를 위한 Debugging Tool이다. Debug Bridge는 JTAG과 유사한 개념으로, Android가 올라가는 Target Board의 Debugging에 사용된다. 연결은 USB Port를 통해 이루어지며, 보통 사용자들이 Android 기반의 Smart Device의 Rooting( 루팅 )에 사용한다. 쉽게 설명하자면, Command Mode( cmd )에서 Android 기반의 Device와 연결이 가능하며, File Transfer, Application Install, Device Status, Shell 등 여러 기능을 수행할 수 있다. https://sutamu.tistory.com/358 <--참고하기 File Transfer, Application Install, Device Status, Shell 등 여러 기능을 수행할 수 있다. 연결은 USB Port를 통해 이루어지며, 보통 사용자들이 Android 기반의 Smart Device의 Rooting( 루팅 )에 사용한다. ADB는 Android Debug Bridge의 약자로, Android를 위한 Debugging Tool이다. 알아보니, apk →zip 으로 압축 → 다시 해제 —> 이중 class.dex → class.jar로 변환 이렇게 보는 방법이 있다함

하지만 아래와 같이 하는 것이 좋음.

Apk 압축 풀기

파일을 수정하고 재빌드 할 계획이라면 apk 파일의 압축을 먼저 풀어준다. 몰랐던 사실이 있는데, .apk 파일의 확장자를 .zip 으로 이름을 변경한 후 압축을 풀어도 dex 파일이 나오긴 나온다. 다만 매니페스트를 비롯한 다른 리소스 파일이 깨져버린다. 그래서 앱을 빌드 했던 방식을 토대로 디컴파일 하는 apktool을 사용해서 풀어야 제대로된 결과를 얻을 수 있다.

반응형

오픈소스 툴 SUPER 사용, 안드로이드 앱 (apk) 취약점 점검하기

SUPER 다운로드 및 설치

SUPER은 오픈소스 기반의 안드로이드 앱 (apk) 취약점 점검 툴이다(사실 분석툴이 더 맞는 것 같다). 윈도우, 리눅스, 맥 환경에서 전부 사용 가능하며 아래 링크에서 다운받을 수 있다.

https://superanalyzer.rocks/download.html

설치파일을 실행시키면 아래와 같이 설치가 진행된다.

SUPER 사용법

설치된 폴더를 보면 아래와 같이 super-analyzer.exe 파일이 있다.

사용법은 정말 간단한데 아래 프로그램의 인자값으로 테스트할 apk 파일을 넘겨주기만 하면 된다.

super-analyzer.exe [FLAGS] [OPTIONS]

–help으로 옵션을 살펴보면 다양한 옵션을 살펴볼 수 있다. 지금 테스트로 사용하는 test.apk는 옵션 없이 실행을 시키니 -v 옵션을 사용하라는 경고가 떠서 일단 지금은 -v 옵션만 사용해보도록 한다.

-v 옵션을 넘겨주니 귀여운 안드로이드가 나온다 😀

SUPER 결과보고서 확인

결과 보고서는 results 폴더에 index.html 형태로 저장된다.

결과 보고서를 확인하면, 발견된 총 취약점 수를 확인할 수 있고 발견된 각 취약점들은 Critical / High / Medium / Low / Warnings로 분류된다.

예로 몇개만 살펴보면 다음과 같다. 아무래도 툴이다보니 100% 의지하기에는 무리가 있지만 ‘이런 부분이 있으니 취약한지 한번 분석해보는게 좋을 것 같다’ 의 느낌으로 쓰면 유용할 것 같다. 예를 들어 디바이스가 루팅됐는지 탐지하기 위한건지 아닌지 어쨌든 관련 문자열을 배열에 저장하고 있는 것 자체로는 취약점은 아니고, 이후부터는 수동으로 확인하는 작업이 필요해보인다.

아래처럼 주석에 URL이나 메일이 평문으로 저장되어 있는 경우는 LOW 취약점으로 분류해준다.

아래는 HIGH 취약점의 한 예인 ‘System command execution’인데 단순히 exec()를 실행하고 있는 것 만으로 커맨드 인젝션 취약점으로 분류가된 듯 하다. exec()에 사용자 입력값과 연관이 있는 변수가 사용되면 취약한지 분석해보는 것이 의미가 있겠으나 아래의 경우에는 그런 상황이 아니므로 따로 분석할 필요는 없다.

안드로이드 취약점 진단 툴 ( Appie, Inspeckage )

[1] Appie (Android Pentesting Protable Integrated Environment)

안드로이드 어플리케이션 취약점 진단을 진행하면서 apktool, dex2jar , dex2jar 그리고 jd-gui 도구를 통해서 어플리ㅔ이션 파일을 코드로 디컴파일하고 분석하였다.

Appie툴은 이 도구들이 하나로 통합되고 다른 여러 복합적인 기능을 가지고 있어 매우 유용한 분석 툴

참조 : https://manifestsecurity.com/appie/#Usage

[2] Inspeckage

1. 데스크탑에서 Xposed apk다운 – Nox에서 ROOT 설정 On – Nox 에뮬레이터에 앱 다운

2. Xposed.apk에서 inspeckage모듈 다운한다

3. Inspeckage에서 분석할 앱 선택

5. 통신 설정 (cmd> nox_adb forward tcp:8008 tcp:8008)

5. web -> localhost:8008 접속 – 정보확인 (*방화벽 8008포트 인바운드규칙을 통해 열어줌)

Insecurebankv2앱의 취약점들을 확인할 수 있다.

오픈소스 APP진단 자동화 툴(android)

2016년도 작성글

신랄한 툴을 소개하려한다. 안드로이드 진단을 초보적인 수준이나마 할수 있게 만들려고 근 두달간 탈모와 싸우면서 공부했다

정말 잘못잡은 방향으로 계속해서 전진해 나가고 삽질의 삽질을 하다, 결국은 얉은 수준의 보고서까지 만들 수준을 만들었는데,

지인의 소개로 알게된 ‘보안프로젝트’라는 카페에서 좋은 정보를 얻었다.

오픈소스 APP진단 자동화 툴!

첫 번째, Androbugs

이 툴은 python으로 제작되어 python 이 설치되어야 사용할 수 있다. 기본적은 캡쳐와 결과물을 보자면

1) 대충 사용법은 캡처에 나와있으니 보시구 모르는 부분은 찾아보길 바란다.

이런식으로 디컴파일링 해서 소스를 쭉쭉 읽어들어 정적분석을 해준다. 또한 OWASP MOBLIE에 맞게 취약한 부분도 찾아준다.

2)결과물

보기와 같이 critical한 부분을 보기좋게 정리도 해준다 ㅎ

-> 이런 툴이 있는 것을 너무 늦게 알았다. 하지만 삽질한 것이 후회되지는 않는다. 이유는 오픈소스인 만큼 오탐율이 상당하다.

즉, 걸러서 들어야되는데 나처럼 삽질하지 않고는 이렇게 영문으로된 결과물에 대해 증명할 방법이 없다.

하지만, 적절한 삽질을 한 사람이라면 본인의 노력 + @의 결과물을 얻게 될 것이다! ㅎㅎ헿

두 번째, MARA_Framework(이하 ‘mara’라고 칭함)

이 두번째 신랄한 툴은 python + shell script 쯤으로 이루어졌다. 내 생각에는 Androidbugs가 base가 되는 것 같다(Androidbugs의 결과물도 포함됨)

1) 사용 캡쳐

깔끔하다 사용법은 상위의 툴과 비슷하다

2)사용 캡쳐 2

위 모습처럼 어떤 행위가 이루어지는지 보여준다. 참 친절한 툴이다 한가지 팁은 진행 중에 소스에 하드코딩되어 있는 URL을

스캔할지 말지 물어보는데 대답하지 않으면 넘어가지 않는다. 난 10분 기다렸다 멍청하게

3) 결과물 캡쳐

요런식으로 디렉터리안에 결과물을 뽑아준다 정말 친절하다(2)

4) 결과물 캡쳐

권한을 확인할 수 있는 AndroidManifest.xml 파일이다 친절하게 딱 모아준다

분석해서 결과물을 보기 좋게 분리도 해준다.

취약점 항복별로 나눠도 준다. 물론, 해당되지 않는 항목의 파일에는 내용물이 아무것도 없다.

이게 아까 위에서 말한 Androbugs의 결과물이다.

-> 이런 툴이 있는 것을 너무 늦게 알았다. 하지만 삽질한 것이 후회되지는 않는다. 이유는 오픈소스인 만큼 오탐율이 상당하다.

즉, 걸러서 들어야되는데 나처럼 삽질하지 않고는 이렇게 영문으로된 결과물에 대해 증명할 방법이 없다.

하지만, 적절한 삽질을 한 사람이라면 본인의 노력 + @의 결과물을 얻게 될 것이다! ㅎㅎ헿 (2)

ㅋㅋ 좋다. 너무 말끔하고 친절하다. 하지만 이 툴만 믿고 프로젝트를 나간다면 분명 ㅈ될것이다.

하지만 적절한 툴의 사용은 분명 우리가 한것보다 한단계 높은 퀄리티의 보고서를 뽑아내 줄 것이다.

이상 툴 소개 끝.

vFinder

03

브이파인더 구성

급변하는 해킹 기술의 발달로 지속적인 신기술 동향에 주의를 기울여야 합니다. 현재 보유 중인 앱에 변동이 있을 때마다 자동검사를 통해서 쉽고 빠르게 취약점을 점검할 수 있습니다.

[android] 취약점 분석 툴 androbugs

androbugs

다운로드 주소 : https://github.com/AndroBugs/AndroBugs_Framework

4년전의 오래된 툴. python이 설치되어 있어야한다.

윈도우 exe 파일로도 제공되는 것으로 보인다. 하지만 난 linux용으로 사용해 보겠다. 사용법은 다음과 같다.

python androbugs.py -f apk이름.apk

위 명령어를 사용하면 자동으로 리포팅해준다. 결과는 /report 폴더 안에 txt 파일로 저장해준다.

Critical로 취약점이라고 판단되는 것들을 쭉 리포팅해준다. 물론 오탐이 매우 많을 것이라고 예상된다. 그래도 참고할만한 사이트들도 함께 나열해줘서 한번 봐볼만한 것 같다.

그 아래에도 쭉 Warning, Notice, Info와 같은 정보들이 보인다.

사용되고 있는 activity 정보같은 것들도 보여준다.

앱들을 대량으로 분석할때 참고용으로 사용해보는것도 좋을듯!

Android 취약점 탐색 자동화를 위한 Jandroid 적용기

안녕하세요. LINE에서 보안 업무를 담당하고 있는 박선주입니다. LINE 보안 팀에서는 릴리스될 서비스와 애플리케이션의 보안 위협을 사전에 발견하여 제품을 더 안전하게 만들기 위해 노력하고 있습니다. 서비스나 애플리케이션을 대상으로 보안 검수를 진행하다 보면, 기존에 보안 이슈가 발생했던 코드와 유사한 패턴을 사용하거나 취약한 패턴의 코드를 재사용하여 취약점이 발생하는 경우가 많습니다. 이처럼 빈번하게 발생하는 보안 이슈를 쉽고 빠르게 탐지하기 위해서 상용 솔루션을 사용하거나 자체적인 도구를 개발하고 있는데요. 이번 포스팅에서는 Android 애플리케이션에서 사용할 수 있는 자동화 취약점 탐색 도구인 Jandroid를 LINE Android 애플리케이션에 적용하여 보안 이슈를 발견한 내용을 공유하고자 합니다.

Jandroid란?

Jandroid는 F-Secure Labs에서 제작한 취약점 탐색 도구입니다. Androguard라는 오픈 소스를 기반으로 제작되었습니다. Androguard는 Android 실행 파일을 분석하는 역할을 담당합니다. 크게 아래와 같은 기능이 있습니다.

APK 파일 정보 추출

클래스와 메서드 목록 추출

상호 참조(cross reference) 분석

이 기능을 기반으로 Android 애플리케이션에서 보안상 위험한 메서드나 일련의 코드를 찾을 수 있는 취약점 패턴 매칭 기능과 패턴을 정의하는 템플릿 기능을 제공하는 것이 Jandroid입니다.

Jandroid는 취약한 코드를 어떻게 찾을까?

Jandroid는 취약한 코드 패턴을 발견하기 위해서 정적 분석 방법을 사용합니다. 정적 분석은 컴파일된 코드로 프로그램의 실행 흐름을 분석하는 방법입니다. 애플리케이션 코드에 구조적인 문제나 보안상 위험한 코드의 사용 등 취약한 코드 패턴이 존재하는지 확인할 수 있습니다. Jandroid 동작 방법을 자세히 살펴보기 위해 어떻게 취약한 코드 패턴을 찾는지 알아보겠습니다.

Jandroid는 위험한 메서드가 위치한 곳부터 Android 애플리케이션 내의 액티비티(activity)까지 코드 흐름을 살펴보면서 실제로 호출이 가능한지 탐색하는 방법으로 보안 이슈를 찾습니다. 액티비티란 Android에서 실행되는 구성 요소로, 애플리케이션 실행의 기본이 됩니다. 위험한 메서드가 액티비티의 실행으로 호출된다는 것은, 사용자가 작동시키거나 외부에서 액티비티를 트리거해서 위험한 메서드에 사용자의 데이터를 주입해 호출할 수 있다는 뜻으로 해석할 수 있습니다.

예를 들어 java.lang.ProcessBuilder 같은 커맨드를 실행할 수 있는 위험한 메서드가 액티비티가 실행되며 호출된다면, 실제로 사용자가 이를 호출할 가능성이 있는 것입니다. Jandroid에서는 이런 위험을 찾기 위해 다음과 같은 방법을 사용합니다.

그림 1. Jandroid 코드 탐색 방법 1.1

그림 1의 ProcessBuilder 메서드는 사용자가 검색하기 위해 템플릿에 명시한 메서드입니다. 템플릿에서 검색할 메서드를 가져와 애플리케이션 내 코드에서 검색한 뒤 그 결과를 저장합니다. 액티비티에서 호출 가능한 결과들인지 탐색할 때 사용자가 템플릿에 명시한 메서드를 시작점으로 사용하며, 이 시작점을 직접 호출하는 상호 참조 경로를 찾습니다.

그림 2. Jandroid 코드 탐색 방법 1.2

그림 2의 ‘Activities’는 사용자가 검색하기 위해 템플릿에 명시한 액티비티를 의미합니다. Jandroid에서 검색할 액티비티의 속성 정보를 템플릿에서 읽어 애플리케이션에서 검색한 속성과 일치하는 액티비티를 저장합니다. 그런 뒤 앞서 찾은 상호 참조 경로가 애플리케이션 내 액티비티까지 이어지는지 검사합니다. 만약 경로가 액티비티까지 도달한다면, 액티비티가 실행되면서 ProcessBuilder 메서드가 호출될 것입니다. 이렇게 상호 참조 탐색 작업을 반복하며 액티비티까지 호출될 수 있는 경로를 찾는 방법으로 잠재적인 취약점을 찾습니다.

다른 방법으로는, 앞서 그림 1에서 설명한 단일 메서드 호출뿐 아니라 일련의 코드 패턴이 액티비티에서 호출되는지도 탐색할 수 있습니다. 종종 한 메서드가 다른 메서드와 함께 호출되는 경우 보안 이슈가 발생할 수 있는데요. 예를 들어 WebView의 loadUrl 메서드와 addJavascriptInterface 메서드가 함께 호출되는 코드 패턴이 있습니다. 이 패턴에서 이어지는 코드 흐름이 액티비티까지 이어진다면, WebView에 추가된 ‘native bridge’를 공격자가 마음대로 사용할 수 있는 가능성이 있습니다.

그림 3. Jandroid 코드 탐색 방법 2

그림 3은 이런 코드 패턴을 찾기 위한 방법입니다. 여러 메서드가 호출되면서 취약점이 발생할 여지가 있는 곳에서 시작해, 사용자가 호출할 수 있는 끝 지점인 액티비티까지 호출이 가능한지 검사하는 방법으로 취약한 코드를 찾아냅니다. 예를 들어 메서드 명 addJavascriptInterface을 검색해서 그 결과로 나온 클래스 명을 저장합니다. 그런 뒤 템플릿에서 정의한 시작점인 loadUrl 메서드와 앞서 저장한 클래스 명을 결합하여 동일 클래스에서 loadUrl 메서드를 사용하고 있는지 찾습니다. 만약 loadUrl 메서드가 사용 중이라면 해당 메서드의 상호 참조를 재귀적으로 탐색합니다. 그림 2와 마찬가지로, 상호 참조로 찾은 경로가 사용자가 템플릿에 명시한 액티비티까지 호출할 수 있는지 반복해서 진행합니다.

이런 방법으로 검사를 진행하여 패턴화된 코드가 탐지되었다면, 해당 애플리케이션은 사용자가 보안 위협이 존재하는 코드까지 실행할 수 있다는 것을 의미하고, 이는 곧 취약점으로 이어질 가능성이 높습니다.

Jandroid를 선택한 이유

Android 취약점 탐지 자동화 도구로 Jandroid를 선택한 이유는 사용자가 탐지하고 싶은 취약 코드 패턴을 자유롭게 정의할 수 있기 때문입니다. 대부분의 Android 애플리케이션에서 발생하는 취약점과 로직 내 버그들은 해당 애플리케이션의 기능에 따라 달라지는 경우가 많습니다. 애플리케이션마다 발생하는 이슈가 제각각이며 같은 이슈가 빈번하게 일어나는 경우가 많습니다. 또한 다양한 애플리케이션의 취약한 코드 패턴을 찾기 위해 코드를 일일이 검수하려면 시간이 많이 소모됩니다. 그러므로 보안 검사를 진행할 애플리케이션의 특징을 파악해서, 취약한 이슈나 로직 버그가 발생했던 패턴들의 코드를 템플릿화하여 그에 맞는 결과물을 보며 검수할 수 있다면, 취약한 코드를 보다 수월하게 찾을 수 있고 검수 시간도 줄일 수 있습니다. 또한 Androguard는 컴파일된 코드를 이용해 분석을 진행하기 때문에 APK 파일만으로도 간편하게 검사가 가능하다는 장점이 있습니다.

저희는 이런 이유로 Jandroid가 LINE의 수많은 Android 애플리케이션에 적용하기에 알맞다고 생각했습니다. 참고로 F-Secure Labs에선 ZDI에서 진행하는 ‘Mobile Pwn2Own’이라는 해킹 콘테스트에서 Jandroid를 사용하여 취약한 코드를 찾은 사례 중 하나를 발표하기도 했습니다. S사의 모바일 장비에 존재하는 여러 개의 버그를 조합해 사용자의 폰을 장악한 사례였는데요. 공격에 사용된 여러 취약점 중 노트 관련 애플리케이션의 취약점(CVE-2018-10501)은 Jandroid를 사용해 손쉽게 발견할 수 있었다고 합니다.

Jandroid 사용 방법

템플릿 파일 구성

앞서 설명드렸듯이 Jandroid는 사용자가 정의한 코드의 패턴을 찾기 위해서 템플릿 파일을 사용하는데요. 이 템플릿 파일을 통해 찾고자 하는 취약한 코드의 패턴을 정의할 수 있습니다. 템플릿 파일은 /templates/android/*.template 파일로 저장하고, 불러옵니다. 해당 파일은 아래와 같이 JSON 포맷으로 구성됩니다.

{ “METADATA”: { “NAME”: “JSbridgeBrowsable” }, “MANIFESTPARAMS”: { “BASEPATH”: “manifest->application->activity OR manifest->application->activity-alias”, “SEARCHPATH”: { “intent-filter”: { “action”: { “LOOKFOR”: { “TAGVALUEMATCH”: “:name=android.intent.action.VIEW” } }, “category”: { “LOOKFOR”: { “TAGVALUEMATCH”: “:name=android.intent.category.BROWSABLE” } }, “data”: { “RETURN”: [“:host AS @host”, “:scheme AS @scheme”] } } }, “RETURN”: [“::name AS @activity_name”] }, “CODEPARAMS”: { “SEARCH”: { “SEARCHFORCALLTOMETHOD”: { “METHOD”: “Landroid/webkit/WebView;->addJavascriptInterface”, “RETURN”: “ AS @web_view” } }, “TRACE”: { “TRACEFROM”: “:@web_view[]->loadUrl(Ljava/lang/String;)V”, “TRACETO”: “:@activity_name”, “TRACELENGTHMAX”: 10, “RETURN”: “ AS @tracepath_browsablejsbridge” } }, “GRAPH”: “@tracepath_browsablejsbridge WITH :: AS attribute=nodename” }

위 코드를 간략하게 설명하겠습니다.

METADATA → NAME에 템플릿의 이름을 지정합니다. MANIFESTPARAMS 노드는 검색할 액티비티를 정의하는 곳으로, 그림 2의 ‘Activities’에 해당합니다. 내용을 살펴보면 AndroidManifest.xml 파일에서 찾고자 하는 액티비티의 범위를 정하고 있습니다. 하위 BASEPATH의 값은 AndroidManifest.xml 파일의 XML 태그 안에서 SEARCHPATH 노드와 일치하는 액티비티를 찾는다는 것을 의미합니다. SEARCHPATH 노드는 안의 태그에서 android:name이 android.intent.action.VIEW인 값을 찾고, 태그에서 android:name이 :name=android.intent.category.BROWSABLE인 값을 찾습니다. 그리고 일치하는 액티비티가 있다면 해당하는 액티비티 명을 activity_name라는 템플릿 변수로 표현하여 저장합니다. CODEPARAMS 노드는 검색할 메서드를 정의하는 곳으로, 그림 3에서 탐색할 메서드에 해당합니다. 노드 내용을 살펴보면, SEARCH 노드의 SEARCHFORCALLTOMETHOD에서는 메서드 값에 정의되어 있는 클래스와 메서드를 검색하고, 검색된 클래스들을 RETURN의 @web_view 템플릿 변수에 저장합니다. TRACE 노드는 Jandroid에서 탐색할 시작점과 끝나는 점을 정의합니다. 시작점은 TRACEFROM에서, 끝나는 점은 TRACETO에서 정의합니다. 그림 3에서 검색하고 나서 탐색을 시작할 곳과, 그림 2에서 끝나는 점의 액티비티가 이 노드에 해당하는데요. 템플릿 내용을 확인해 보면 TRACEFROM에서는 위의 SEARCH 노드에서 검색하고, web_view 템플릿 변수에 저장했던 클래스와 loadUrl 메서드를 결합하여 시작점으로 정의합니다. 끝나는 점인 TRACETO는 이전에 찾았던 activity_name 템플릿 변수의 클래스로 정의합니다. 즉 해당 템플릿은 그림 2의 코드 패턴을 정의한 것입니다.

실행하기

커맨드 라인에서 python3으로 Jandroid 도구를 실행하면, 수많은 디버그 메시지와 함께 분석 중인 메서드 등의 정보가 출력됩니다. 탐지 결과는 /output/raw/*.json에 저장되며, 커맨드 라인에서 입력한 -g 인자 옵션에 따라 /output/graph/jandroid.html에 생성된 그래프를 확인할 수 있습니다. 인자 옵션에 대한 자세한 정보는 -h 옵션으로 확인할 수 있습니다.

Jandroid> python3 src/jandroid.py -f /workspace/bin/apks/target/ -g visjs —————————- JANDROID —————————- INFO Creating template object. INFO 1 potential template(s) found. DEBUG Parsing /Jandroid/templates/android/sample.template INFO Initiating Android analysis. INFO Performing basic checks. Please wait. INFO Basic checks complete. INFO Beginning analysis… DEBUG 1 app(s) to analyse, using 2 thread(s). DEBUG Created worker process 0 DEBUG Created worker process 1 DEBUG AnalyzeAPK DEBUG Analysing without session INFO Analysing test.apk in worker thread 0. DEBUG AXML contains a RESOURCE MAP DEBUG Start of Namespace mapping: prefix 38: ‘android’ –> uri 105: ‘http://schemas.android.com/apk/res/android’ DEBUG START_TAG: manifest (line=2) DEBUG found an attribute: {http://schemas.android.com/apk/res/android}versionCode=’b’19010402” … DEBUG Parsing instructions DEBUG Parsing exceptions DEBUG Creating basic blocks in L$r8$java8methods$utility$Boolean$hashCode$IZ;->hashCode(Z)I [access_flags=public static synthetic] @ 0x18341c DEBUG Settings basic blocks childs DEBUG Creating exceptions …

실행 후에 /output/graph/jandroid.html에 생성된 그래프 결과를 확인해 보면 아래 그림 4와 같습니다. Jandroid 템플릿 파일에서 정의한 메서드를 시작점으로 삼아 호출 흐름이 끝나는 점인 액티비티까지 연결되어 있는 것을 확인할 수 있습니다. 이 그래프 연결 정보는 Jandroid 실행이 끝나면 /output/raw/.json에 저장되며, 그래프를 생성할 때 사용됩니다.

그림 4. Jandroid 결과 그래프

Jandroid의 한계와 개선 방법

Jandroid를 LINE의 Android 애플리케이션에 적용해보니, 템플릿에 정의한 취약한 코드 패턴을 잘 찾지 못하였습니다. 취약한 코드 패턴을 찾지 못한 이유를 살펴 본 결과, Jandroid에 몇 가지 한계점이 있었고 이를 개선해보았습니다.

서로 다른 클래스에서 호출되는 패턴은 탐지되지 않는 문제

Jandroid에서 서로 다른 두 개의 메서드를 호출하는 취약한 코드 패턴을 찾을 때, 두 개의 메서드가 서로 다른 클래스에서 호출되지만 결국 같은 루트(root) 경로에서 호출되고 있는 코드 패턴을 탐지하지 못하는 경우가 있었습니다. 예를 들어 아래 그림 5의 구조처럼 각각 다른 클래스에서 addJavaScriptInterface와 loadUrl 메서드가 호출되면, 호출되는 루트 경로가 같더라도 탐지하지 못했습니다.

그림 5. Jandroid에서 찾지 못하는 코드 패턴

그림 5를 보면 ‘Some Class’의 메서드가 서로 다른 Class B와 Class C의 메서드를 호출합니다. 이때 서로 다른 Class B와 Class C의 addJavaScriptInterface와 loadUrl 메서드를 호출하는 패턴을 찾으려고 할 때, 위 템플릿 파일로 정의된 경우 Jandroid에서는 다음과 같이 찾습니다.

addJavscriptInterface 메서드를 검색하여 결과로 나온 클래스(위의 예제에서는 Class B)들을 템플릿 변수에 저장합니다. 그리고 클래스가 담긴 템플릿 변수와 탐색을 시작할 loadUrl 메서드를 결합하여 시작점으로 탐색합니다. 즉 그림 5와 같은 코드 패턴인 경우, addJavascriptInterface 메서드를 사용하는 Class B를 찾았지만, 이후 시작점에서 탐색을 할 때 loadUrl 메서드가 Class B에 있다고 가정하기 때문에 실제 Class C에 있는 loadUrl 메서드는 탐지할 수 없게 됩니다. Jandroid에서는 addJavascriptInterface와 loadUrl 메서드가 같은 클래스에서 호출될 것이라고 가정하기 때문에 그림 5와 같은 코드 패턴을 탐지하지 못하는 것입니다.

개선한 방법

위 문제를 해결하기 위해 서로 다른 클래스에서 호출하는 메서드 호출 패턴을 탐지할 수 있도록 아래와 같은 방법으로 개선했습니다.

그림 6. 다른 클래스 찾기 개선 방법

저희는 찾으려는 메서드를 사용자가 입력할 수 있도록 템플릿의 TRACEFROM 값에 WITH라는 연산자를 처리하는 기능을 구현했습니다. 이 WITH 연산자는 피연산자 위치에 정의된 메서드들을 검색해서 상호 참조를 재귀 탐색합니다. 탐색 중 서로 겹치는 경로가 있다면 그 경로를 시작점으로 액티비티의 클래스와 메서드가 끝나는 점까지의 경로를 찾습니다. 그림 6과 같이 ‘addJavascriptInterface WITH loadUrl’로 TRACEFROM 값을 설정하면 두 메서드의 상호 참조 경로가 겹치는 하나의 경로를 찾아냅니다. 그리고 이 경로부터 끝나는 점인 액티비티까지 탐색을 진행합니다.

또한 Jandroid에서 메서드와 메서드 간의 경로를 탐색할 때도 여기서 구현한 방법을 동일하게 사용해서 개선할 수 있었습니다. TRACEFROM과 TRACETO가 메서드라면, 두 개의 메서드 경로를 탐색한 결과에서 겹치는 경로를 중간으로 설정하고 이 경로를 중심점으로 삼아 각각 나머지 경로를 연결해서 두 메서드의 호출 경로를 탐색하고 표현할 수 있게 구현했습니다.

일부 메서드의 상호 참조를 찾을 수 없는 문제

Jandroid는 취약한 코드 패턴을 찾기 위해서 상호 참조를 통한 탐색을 합니다. 하지만 이 탐색 방법만으로는 Android에서 모든 메서드의 상호 참조를 찾을 수 없습니다. 아래 그림과 같이 Fragment가 생성되었을 때를 예로 들어 보겠습니다.

그림 7. Fragment의 호출 과정

Fragment가 생성되면 onAttach로 시작해 onCreate, onCreateView 순서로 콜백 메서드가 호출됩니다. 이 메서드들은 애플리케이션 코드가 아니라 Android 시스템에서 호출하기 때문에, 애플리케이션 코드에서는 이런 메서드들의 상호 참조를 찾을 수 없습니다. Fragment는 Android 애플리케이션 화면 전환에 사용되는데, 화면 전환 시에는 Android 시스템이 화면 리소스에 저장되어 있는 클래스의 뷰(view) 콜백 메서드를 호출해 줍니다. 그러므로 애플리케이션 코드에서 Fragment가 사용될 때는 메서드 콜백의 상호 참조를 찾을 수 없습니다. 즉 현재 Jandroid에서 사용하는 방법인 메서드 상호 참조를 통한 탐색 방법엔 한계가 있습니다.

Jandroid에서는 이런 콜백 함수들을 찾기 위해서 특수 케이스를 추가해 놓았습니다. 상호 참조의 재귀 탐색 도중 특수 케이스에 해당하는 메서드를 찾으면 메서드 명을 바꾸는 방식으로 구현되어 있습니다. 가령 콜백으로 호출되는 onAttach를 탐색할 때에는 onCreate로 메서드 명을 바꿔줍니다. 이렇게 상호 참조가 없는 메서드를 onAttach → onCreate와 같이 바꿔서 메서드를 탐색할 수 있게 만듭니다. 하지만 특수 케이스를 사용한 방법도 동일 클래스에서 콜백으로 호출되는 메서드에 한해서만 이름을 바꿔 처리해 주는 것이기 때문에 역시 한계가 있었습니다. 예를 들어 onAttach처럼 클래스에서 제일 처음 호출되는 메서드를 탐색하는 경우엔 특수 케이스 방법으로는 찾지 못합니다. 그래서 NavController나 Fragment 등 화면을 전환하는 기능이거나 다른 Android 시스템에서 호출하는 메서드는 탐색하지 못했습니다.

개선한 방법

Android 시스템에서 호출되는 메서드는, 상호 참조를 재귀 탐색하는 방법으로는 경로를 찾을 수 없습니다. 앞서 언급한 Android의 Fragment나 NavController 등은 앱 내 화면 전환을 담당하는데요. 상호 참조로는 찾을 수 없는 코드에 의해 실행 흐름이 바뀌기 때문에 이를 탐색하기 위해서 다음과 같이 탐색 방법을 개선했습니다.

탐색을 시작하기 전에 Android 애플리케이션 내 화면 전환에 사용되는 리소스들을 추출하여 이와 관련된 Fragment 정보를 분석합니다. 그리고 애플리케이션 패키지 내 메서드에서 해당 리소스를 사용하는지 검사하고, 사용한다면 해당 메서드와 리소스, Fragment 정보를 저장합니다. 이후 패턴을 탐색하면서 onCreateView와 같은 메서드에 도달하면 해당 클래스가 저장된 Fragment 정보와 일치하는지 검사한 후, 일치한다면 저장해두었던 Fragment의 리소스를 사용하는 메서드로 경로를 찾도록 구현하였습니다. 그리고 더 나아가서 메서드 명을 바꿔서 메서드를 연결해 주는 방법인 특수 케이스를 더 추가했습니다. onCreateView => onViewCreated처럼 같은 클래스에서 서로 호출하는 관계인 메서드들의 이름을 바꿔주는 특수 케이스를 추가해서, 그동안 탐색되지 않았던 상호 참조 관계의 메서드를 탐색할 수 있게 개선했습니다.

코드 흐름을 따라가기가 어려운 문제

Jandroid의 탐지 결과 그래프는 시작점과 끝점의 클래스와 메서드 명으로 표시됩니다. 그런데 탐지 결과를 검증할 때 아래 그림 8과 같은 결과만으로는 시작점부터 끝나는 점까지 코드 흐름을 따라가기가 어렵습니다.

그림 8. 개선 전 결과 그래프

개선한 방법

탐색 시작점부터 끝나는 점까지의 경로를 전부 볼 수 있게 탐지 결과와 그래프 결과를 개선했습니다. 아래 그림 9는 경로를 전부 볼 수 있도록 개선한 후의 결과 그래프입니다.

그림 9. 개선 후 결과 그래프

LINE Android 애플리케이션에 적용한 결과

개선된 Jandroid를 이용해 LINE의 여러 Android 애플리케이션에서 취약점을 발견할 수 있었고, 이번 글에서 그중 한 가지 사례를 소개하겠습니다. 취약점을 발견하기 위해 사용한 템플릿은 다음과 같습니다.

{ “METADATA”: { “NAME”: “JSbridgeBrowsable” }, “MANIFESTPARAMS”: { “BASEPATH”: “manifest->application->activity OR manifest->application->activity-alias”, “SEARCHPATH”: { “intent-filter”: { “action”: { “LOOKFOR”: { “TAGVALUEMATCH”: “:name=android.intent.action.VIEW” } }, “category”: { “LOOKFOR”: { “TAGVALUEMATCH”: “:name=android.intent.category.BROWSABLE” } }, “data”: { “RETURN”: [“:host AS @host”, “:scheme AS @scheme”] } } }, “RETURN”: [“::name AS @activity_name”] }, “CODEPARAMS”: { “SEARCH”: { “SEARCHFORCALLTOMETHOD”: { “METHOD”: “Landroid/webkit/WebView;->addJavascriptInterface”, “RETURN”: “ AS @web_view” } }, “TRACE”: { “TRACEFROM”: “:@web_view[] WITH Landroid/webkit/WebView;->loadUrl(Ljava/lang/String;)V”, “TRACETO”: “:@activity_name”, “TRACELENGTHMAX”: 10, “RETURN”: “ AS @tracepath_browsablejsbridge” } }, “GRAPH”: “@tracepath_browsablejsbridge WITH :: AS attribute=nodename” }

loadUrl과 addJavascriptInterface를 호출하는 취약한 패턴을 명시하고 있으며, 앞서 설명드린 WITH 기능을 사용했습니다. 이 패턴으로 탐지한 결과는 다음과 같습니다.

탐지된 그래프 결과 – 그림 10

그림 10의 탐지 결과를 확인해 보면, 템플릿에서 정의한 것과 같이 액티비티부터 WebView loadUrl과 addJavascriptInterface 메서드를 호출하는 메서드까지의 경로를 확인할 수 있습니다. 위 그래프 결과를 참고해 탐색한 경로를 나열해보면 다음과 같습니다.

MainActivity→onNewIntent => AppSchemeInterpreter→maybeHandleSchemeIntent => AppSchemeInterpreter→interpret => AppSchemeInterpreter→interpretPayment => WebViewFragment→onCreateView

해당 애플리케이션 코드 경로를 토대로 분석해 보면, 실제로 intent 속성 android.intent.category.BROWSABLE를 가지고 있는 MainActivity 액티비티부터 시작해서 WebViewFragment→onCreateView 메서드까지 코드 경로 도달이 가능하고, WebViewFragment→onCreateView 메서드에서는 WebView loadUrl과 addJavascriptInterface 메서드를 호출하는 코드 패턴을 가진 것을 확인할 수 있었습니다.

아래 그림 11은 실제 LINE의 Android 애플리케이션을 디컴파일해서 본 코드 흐름입니다. Jandroid의 결과와 동일한 경로로 메서드 흐름을 따라가면, onNewIntent → maybeHandleSchemeIntent → interpret → interpretPayment → onCreateView 순서로 호출되는 것을 확인할 수 있습니다.

그림 11. 애플리케이션을 디컴파일한 코드 결과 1

위 그림 11에서 메서드가 사용하는 인자를 확인해 보면 다음과 같습니다. maybeHandleSchemeIntent에서는 onNewIntent로 받은 intent를 string으로 변환하고 interpret를 호출합니다. 그리고 호출되는 interpret에서는 intent가 Uri.parse 메서드를 호출함으로써 Uri 객체로 파싱되어 저장되며 Uri 객체의 scheme 값을 검사합니다. scheme 값이 검사할 값과 일치하다면 interpretPayment를 호출합니다. interpretPayment에서는 Uri 객체에서 url 파라미터를 파싱한 데이터로 Navigation 객체를 생성합니다. 생성한 Navigation 객체는 이후에 interpret 함수에서 navController.navigate 함수 인자로 사용되고, url 파라미터는 WebViewFragmentArgs의 onCreateView 메서드 인자로 사용됩니다.

그림 12. 애플리케이션을 디컴파일한 코드 결과 2

위 그림 12를 확인해 보면, WebViewFragmentArgs의 onCreateView에서는 addJavaScriptInterface 메서드를 호출하는 webBridge→attackWebview가 호출되는 것을 확인할 수 있고, loadUrl 메서드를 호출하는 WebViewFragmentArgs→renderWebPage가 호출되는 것을 확인할 수 있습니다. 그리고 loadUrl 메서드를 호출하는 인자를 살펴보면, WebViewFragmentArgs의 onCreateView의 메서드에서 args.getUrl() 값, 즉 이전의 interpretPayment 함수에서 보냈던 url 파라미터가 loadUrl 메서드 인자로 호출되는 것을 확인할 수 있습니다.

이를 정리하여 공격자 입장에서 공격 코드를 작성해 본다면 다음과 같습니다. 브라우저에서 intent 데이터인 scheme 값과 path, parameter를 ‘scheme://payment?url=https://attacker.com’로 설정합니다. 사용자가 이 링크에 접근하면 애플리케이션이 실행되고, JavaScript 함수가 바인딩되어 있는 WebView로 임의의 공격자 사이트인 ‘https://attacker.com’가 실행됩니다. 공격자는 이 공격자 사이트에서 사용자에게 악의적인 행위를 할 수 있습니다.

실제 해당 사례에서 사용자의 토큰을 획득할 수 있는 애플리케이션 JavaScript 함수가 존재했고, 이를 통해 공격자가 사용자를 탈취할 수 있는 위험이 있었습니다. 결과적으로 코드 패턴을 개선한 Jandroid로 검사하니 해당 Android 애플리케이션에서 화면 전환에 사용하는 경로를 탐지한 것을 확인할 수 있었고, 취약한 코드 패턴을 찾을 수 있었습니다.

마치며

지금까지 개선된 Jandroid를 LINE Android 애플리케이션에 적용해 취약점을 발견했던 방법에 대해 알아보았습니다. 이번 포스팅에서 소개한 취약점 사례뿐 아니라, 보안 검수를 통해서 발견한 사례들을 지속적으로 템플릿에 추가한다면, 더 많은 취약점을 더 빠른 시간 내에 탐지할 수 있게 됩니다.

물론 Jandroid와 같은 방식으로 취약점을 탐지하는 방법에도 단점은 있습니다. 바로 사용자가 정의한 템플릿에 한해서만 취약한 패턴을 찾는다는 점입니다. 입력이 실제 메서드까지 도달 가능한지 분석하는 ‘Taint analysis’를 하지 않기 때문에, 실제로 템플릿에 정의한 취약한 코드 패턴이 존재하더라도 사용자의 입력에 따라 코드 흐름이 달라져 원하는 행위를 할 수 없거나, 특정 조건문 때문에 취약한 코드 패턴에 도달할 수 없는 ‘false-positive’ 결과가 나오기도 합니다.

하지만 그럼에도 이러한 도구의 장단점을 고려해서 적절히 사용한다면, 실제 알고 있는 취약한 패턴을 찾기 위한 시간을 단축시킬 수 있고, 템플릿에 취약한 패턴을 정의해 자동으로 수행함으로써 점검 누락을 방지할 수도 있습니다. 궁극적으로 여러 Android 애플리케이션을 보다 수월하게 검수할 수 있기 때문에 이를 잘 활용한다면 보안 검수자에게 이점으로 다가올 것입니다. 이상으로 글을 마치겠습니다. 긴 글 읽어주셔서 감사합니다.

2021 년 최고의 모바일 앱 보안 테스트 도구 10 가지

10 best mobile app security testing tools 2021

Android 및 iOS 모바일 애플리케이션 보안 테스트 도구 개요 :

모바일 기술과 스마트 폰 장치는이 바쁜 세상에서 자주 사용되는 두 가지 인기있는 용어입니다. 전 세계 인구의 거의 90 %가 스마트 폰을 가지고 있습니다.

목적은 상대방에게 ‘전화를 걸기’위한 것이 아니라 스마트 폰에 카메라, 블루투스, GPS, Wi-FI와 같은 다양한 기능이 있으며 다양한 모바일 애플리케이션을 사용하여 여러 트랜잭션을 수행합니다.

기능, 유용성, 보안, 성능 등에 대해 모바일 장치 용으로 개발 된 소프트웨어 응용 프로그램을 테스트하는 것을 모바일 응용 프로그램 테스트라고합니다.

모바일 애플리케이션 보안 테스트에는 인증, 권한 부여, 데이터 보안, 해킹 취약성, 세션 관리 등이 포함됩니다.

모바일 앱 보안 테스트가 중요한 이유는 여러 가지가 있습니다. 그 중 일부는 – 모바일 앱에 대한 사기 공격, 모바일 앱에 대한 바이러스 또는 맬웨어 감염을 방지하고 보안 침해 등을 방지합니다.

따라서 비즈니스 관점에서 보안 테스트를 수행하는 것이 필수적이지만 대부분의 테스터는 모바일 앱이 여러 장치 및 플랫폼을 대상으로하기 때문에 어렵습니다. 따라서 테스터에는 모바일 앱이 안전한지 확인하는 모바일 앱 보안 테스트 도구가 필요합니다.

학습 내용 :

아래 목록은 전 세계적으로 사용되는 가장 인기있는 모바일 앱 보안 테스트 도구입니다.

# 1) ImmuniWeb® MobileSuite

# 2) Zed 공격 프록시

# 3) Kiuwan

# 4) QARK

# 5) 마이크로 포커스

# 6) Android 디버그 브리지

# 7) 코드화 된 보안

# 8) 드로 저

# 9) WhiteHat 보안

# 10) Synopsys

# 11) Veracode

# 12) 모바일 보안 프레임 워크 (MobSF)

최고의 모바일 애플리케이션 보안 테스트 도구에 대해 자세히 알아 보겠습니다.

# 1) ImmuniWeb® MobileSuite

ImmuniWeb® MobileSuite 통합 오퍼에서 모바일 앱과 백엔드 테스트의 고유 한 조합을 제공합니다. 모바일 앱용 모바일 OWASP Top 10과 백엔드 용 SANS Top 25 및 PCI DSS 6.5.1-10을 포괄적으로 다룹니다. 오탐 제로 SLA 및 단일 오 탐지에 대한 환불 보장을 갖춘 유연한 종량제 패키지가 함께 제공됩니다!

주요 특징들:

모바일 앱 및 백엔드 테스트.

오 탐지 SLA가 없습니다.

PCI DSS 및 GDPR 준수.

CVE, CWE 및 CVSSv3 점수.

실행 가능한 수정 지침.

SDLC 및 CI / CD 도구 통합.

WAF를 통한 원 클릭 가상 패칭.

보안 분석가에 대한 연중 무휴 액세스.

ImmuniWeb® MobileSuite는 개발자와 SME를위한 무료 온라인 모바일 스캐너를 제공하여 개인 정보 문제를 감지하고 애플리케이션 권한을 확인하며 전체적으로 실행할 수 있습니다. DAST / SAST OWASP Mobile Top 10 테스트.

=> ImmuniWeb® MobileSuite 웹 사이트 방문

# 2) Zed 공격 프록시

ZAP (Zed Attack Proxy)는 간단하고 사용하기 쉬운 방식으로 설계되었습니다. 이전에는 취약점을 찾기 위해 웹 애플리케이션에만 사용되었지만 현재는 모바일 애플리케이션 보안 테스트를 위해 모든 테스터가 널리 사용하고 있습니다.

ZAP는 악성 메시지 전송을 지원하므로 테스터가 모바일 앱의 보안을 테스트하는 것이 더 쉽습니다. 이러한 유형의 테스트는 악성 메시지를 통해 요청 또는 파일을 전송하여 가능하며 모바일 앱이 악성 메시지에 취약한 지 여부를 테스트합니다.

주요 특징들:

세계에서 가장 인기있는 오픈 소스 보안 테스트 도구입니다.

ZAP는 수백 명의 국제 자원 봉사자들이 적극적으로 관리하고 있습니다.

설치가 매우 쉽습니다.

ZAP는 20 개 언어로 제공됩니다.

지원을 제공하고 국제 자원 봉사자들의 적극적인 개발을 포함하는 국제 커뮤니티 기반 도구입니다.

또한 수동 보안 테스트를위한 훌륭한 도구입니다.

공식 사이트를 방문하십시오 : Zed 공격 프록시

#삼) Kiuwan

Kiuwan은 가장 큰 기술 범위로 모바일 앱 보안 테스트에 대한 360º 접근 방식을 제공합니다.

Kiuwan 보안 테스트에는 SDLC의 모든 단계에서 자동화 된 정적 코드 분석 및 소프트웨어 구성 분석이 포함됩니다. IDE 수준에서 통합하여 모바일 개발을위한 주요 언어 및 널리 사용되는 프레임 워크를 다룹니다.

공식 웹 사이트를 방문하십시오 : Kiuwan 코드 보안

# 4) QARK

LinkedIn은 2002 년에 설립 된 소셜 네트워킹 서비스 회사로 미국 캘리포니아에 본사를두고 있습니다. 총 직원 수는 약 10,000 명이며 2015 년 현재 매출은 30 억 달러입니다.

QARK는“Quick Android Review Kit”의 약자로 LinkedIn에서 개발했습니다. 이름 자체는 Android 플랫폼이 모바일 앱 소스 코드 및 APK 파일의 보안 허점을 식별하는 데 유용함을 나타냅니다. QARK는 정적 코드 분석 도구이며 Android 애플리케이션 관련 보안 위험에 대한 정보를 제공하고 문제에 대한 명확하고 간결한 설명을 제공합니다.

QARK는 QARK가 감지하는 취약성을 검증하는 데 도움이되는 ADB (Android Debug Bridge) 명령을 생성합니다.

주요 특징들:

QARK는 오픈 소스 도구입니다.

보안 취약성에 대한 심층 정보를 제공합니다.

QARK는 잠재적 인 취약성에 대한 보고서를 생성하고이를 해결하기 위해해야 ​​할 일에 대한 정보를 제공합니다.

Android 버전과 관련된 문제를 강조합니다.

QARK는 모바일 앱의 모든 구성 요소에서 잘못된 구성 및 보안 위협을 검색합니다.

테스트 목적으로 APK 형식으로 사용자 지정 애플리케이션을 생성하고 잠재적 인 문제를 식별합니다.

공식 사이트를 방문하십시오 : 회로

# 5) 마이크로 포커스

Micro Focus와 HPE Software가 합병하여 세계에서 가장 큰 소프트웨어 회사가되었습니다. Micro Focus는 영국 뉴 버리에 본사를두고 있으며 직원 수는 약 6,000 명입니다. 2016 년 매출은 13 억 달러였습니다. Micro Focus는 주로 보안 및 위험 관리, DevOps, 하이브리드 IT 등의 분야에서 고객에게 엔터프라이즈 솔루션을 제공하는 데 주력했습니다.

Micro Focus는 여러 장치, 플랫폼, 네트워크, 서버 등에서 엔드 투 엔드 모바일 앱 보안 테스트를 제공합니다. Fortify는 모바일 장치에 설치하기 전에 모바일 앱을 보호하는 Micro Focus의 도구입니다.

주요 특징들:

Fortify는 유연한 제공 모델을 사용하여 포괄적 인 모바일 보안 테스트를 수행합니다.

보안 테스트에는 모바일 앱에 대한 정적 코드 분석 및 예약 스캔이 포함되며 정확한 결과를 제공합니다.

식별 보안 취약점 클라이언트, 서버 및 네트워크 전체.

Fortify는 맬웨어 식별에 도움이되는 표준 검사를 허용합니다.

Fortify는 Google Android, Apple iOS, Microsoft Windows 및 Blackberry와 같은 여러 플랫폼을 지원합니다.

공식 사이트를 방문하십시오 : 마이크로 포커스

# 6) Android 디버그 브리지

Android는 Google에서 개발 한 모바일 장치 용 운영 체제입니다. Google은 1998 년에 설립 된 미국에 본사를 둔 다국적 기업입니다. 본사는 미국 캘리포니아에 있으며 직원 수는 72,000 명 이상입니다. 2017 년 Google의 수익은 258 억 달러였습니다.

Android 디버그 브리지 (ADB)는 모바일 앱의 보안을 평가하기 위해 실제 연결된 Android 기기 또는 에뮬레이터와 통신하는 명령 줄 도구입니다.

또한 여러 Android 장치 또는 에뮬레이터에 연결할 수있는 클라이언트-서버 도구로도 사용됩니다. 여기에는 ‘클라이언트'(명령을 보내는), ‘데몬'(comma.nds 실행) 및 ‘서버'(클라이언트와 데몬 간의 통신 관리)가 포함됩니다.

주요 특징들:

ADB는 Google의 Android 스튜디오 IDE와 통합 될 수 있습니다.

시스템 이벤트의 실시간 모니터링.

셸 명령을 사용하여 시스템 수준에서 작동 할 수 있습니다.

ADB는 USB, WI-FI, Bluetooth 등을 사용하여 장치와 통신합니다.

ADB는 Android SDK 패키지 자체에 포함되어 있습니다.

공식 사이트를 방문하십시오 : Android 디버그 브리지

# 7) 코드화 된 보안

Codified Security는 영국 런던에 본사를두고 2015 년에 시작되었습니다. Codified Security는 모바일 애플리케이션 보안 테스트를 수행하는 데 널리 사용되는 테스트 도구입니다. 보안 취약성을 식별 및 수정하고 모바일 앱을 안전하게 사용할 수 있도록합니다.

보안 테스트를위한 프로그래밍 방식을 따르므로 모바일 앱 보안 테스트 결과가 확장 가능하고 신뢰할 수 있습니다.

주요 특징들:

모바일 앱 코드의 보안 허점을 감지하는 자동화 된 테스트 플랫폼입니다.

Codified Security는 실시간 피드백을 제공합니다.

기계 학습 및 정적 코드 분석에 의해 지원됩니다.

모바일 앱 보안 테스트에서 정적 및 동적 테스트를 모두 지원합니다.

코드 수준보고는 모바일 앱의 클라이언트 측 코드에서 문제를 파악하는 데 도움이됩니다.

Codified Security는 iOS, Android 플랫폼 등을 지원합니다.

실제로 소스 코드를 가져 오지 않고 모바일 앱을 테스트합니다. 데이터 및 소스 코드는 Google 클라우드에서 호스팅됩니다.

파일은 APK, IPA 등과 같은 여러 형식으로 업로드 할 수 있습니다.

공식 사이트를 방문하십시오 : 코드화 된 보안

# 8) 드로 저

MWR InfoSecurity는 사이버 보안 컨설팅 회사로 2003 년에 시작되었습니다. 현재 미국, 영국, 싱가포르 및 남아프리카에 전 세계에 지사가 있습니다. 사이버 보안 서비스를 제공하는 가장 빠르게 성장하는 회사입니다. 모바일 보안, 보안 연구 등과 같은 다양한 영역에서 전 세계에 퍼져있는 모든 고객에게 솔루션을 제공합니다.

MWR InfoSecurity는 클라이언트와 협력하여 보안 프로그램을 제공합니다. Drozer는 MWR InfoSecurity에서 개발 한 모바일 앱 보안 테스트 프레임 워크입니다. 모바일 앱 및 장치의 보안 취약성을 식별하고 Android 장치, 모바일 앱 등이 사용하기에 안전한지 확인합니다.

Drozer는 복잡하고 시간이 많이 걸리는 활동을 자동화하여 Android 보안 관련 문제를 평가하는 데 시간이 덜 걸립니다.

주요 특징들:

Drozer는 오픈 소스 도구입니다.

Drozer는 보안 테스트를 위해 실제 안드로이드 장치와 에뮬레이터를 모두 지원합니다.

Android 플랫폼 만 지원합니다.

장치 자체에서 Java 지원 코드를 실행합니다.

사이버 보안의 모든 영역에서 솔루션을 제공합니다.

Drozer 지원을 확장하여 숨겨진 약점을 찾고 악용 할 수 있습니다.

Android 앱에서 위협 영역을 발견하고 상호 작용합니다.

공식 사이트를 방문하십시오 : MWR 정보 보안

# 9) WhiteHat 보안

WhiteHat Security는 2001 년에 설립 된 미국 기반 소프트웨어 회사로 미국 캘리포니아에 본사가 있습니다. 매출은 약 4,400 만 달러입니다. 인터넷 세계에서 ‘White Hat’은 윤리적 인 컴퓨터 해커 또는 컴퓨터 보안 전문가로 불립니다.

WhiteHat Security는 Gartner에서 보안 테스트 분야의 리더로 인정 받았으며 고객에게 세계적 수준의 서비스를 제공하여 상을 받았습니다. 웹 애플리케이션 보안 테스트, 모바일 앱 보안 테스트와 같은 서비스를 제공합니다. 컴퓨터 기반 교육 솔루션 등

WhiteHat Sentinel Mobile Express는 모바일 앱 보안 솔루션을 제공하는 WhiteHat Security에서 제공하는 보안 테스트 및 평가 플랫폼입니다. WhiteHat Sentinel은 정적 및 동적 기술을 사용하여 더 빠른 솔루션을 제공합니다.

주요 특징들:

클라우드 기반 보안 플랫폼입니다.

Android 및 iOS 플랫폼을 모두 지원합니다.

Sentinel 플랫폼은 프로젝트 상태를 파악하기위한 자세한 정보와보고를 제공합니다.

자동화 된 정적 및 동적 모바일 앱 테스트를 통해 다른 도구 또는 플랫폼보다 더 빠르게 허점을 감지 할 수 있습니다.

테스트는 모바일 앱을 설치하여 실제 장치에서 수행되며 테스트를 위해 에뮬레이터를 사용하지 않습니다.

보안 취약점에 대한 명확하고 간결한 설명을 제공하고 솔루션을 제공합니다.

Sentinel은 CI 서버, 버그 추적 도구 및 ALM 도구와 통합 될 수 있습니다.

공식 사이트를 방문하십시오 : WhiteHat 보안

# 10) Synopsys

Synopsys Technology는 1986 년에 설립되었으며 미국 캘리포니아에 기반을 둔 미국 기반 소프트웨어 회사입니다. 현재 직원 수는 약 11,000 명이고 2016 회계 연도 기준 매출은 약 26 억 달러입니다. 전 세계에 지사를두고 있으며 미국, 유럽, 중동 등의 여러 국가에 분산되어 있습니다.

Synopsys는 모바일 앱 보안 테스트를위한 포괄적 인 솔루션을 제공합니다. 이 솔루션은 모바일 앱의 잠재적 위험을 식별하고 모바일 앱을 안전하게 사용할 수 있도록합니다. 모바일 앱 보안과 관련된 다양한 문제가 있으므로 Synopsys는 정적 및 동적 도구를 사용하여 맞춤형 모바일 앱 보안 테스트 제품군을 개발했습니다.

주요 특징들:

여러 도구를 결합하여 모바일 앱 보안 테스트를위한 가장 포괄적 인 솔루션을 얻으십시오.

보안 결함없는 소프트웨어를 프로덕션 환경에 제공하는 데 중점을 둡니다.

Synopsys는 품질을 개선하고 비용을 줄이는 데 도움이됩니다.

서버 측 애플리케이션과 API의 보안 취약성을 제거합니다.

임베디드 소프트웨어를 사용하여 취약점을 테스트합니다.

정적 및 동적 분석 도구는 모바일 앱 보안 테스트 중에 사용됩니다.

공식 사이트를 방문하십시오 : Synopsys

# 11) Veracode

Veracode는 미국 매사추세츠에 본사를 둔 소프트웨어 회사로 2006 년에 설립되었습니다. 총 직원 수는 약 1,000 명이고 매출은 3 천만 달러입니다. 2017 년에 CA Technologies는 Veracode를 인수했습니다.

Veracode는 전 세계 고객에게 애플리케이션 보안 서비스를 제공하고 있습니다. 자동화 된 클라우드 기반 서비스를 사용하여 Veracode는 웹 및 모바일 애플리케이션 보안을위한 서비스를 제공합니다. Veracode의 MAST (Mobile Application Security Testing) 솔루션은 모바일 앱의 보안 허점을 식별하고 해결을위한 즉각적인 조치를 제안합니다.

주요 특징들:

사용하기 쉽고 정확한 보안 테스트 결과를 제공합니다.

애플리케이션을 기반으로 보안 테스트가 수행됩니다. 금융 및 의료 애플리케이션은 심층적으로 테스트되고 간단한 웹 애플리케이션은 간단한 스캔으로 테스트됩니다.

모바일 앱 사용 사례의 전체 범위를 사용하여 심층 테스트가 수행됩니다.

Veracode 정적 분석은 빠르고 정확한 코드 검토 결과를 제공합니다.

단일 플랫폼에서 정적, 동적 및 모바일 앱 동작 분석을 포함하는 여러 보안 분석을 제공합니다.

공식 사이트를 방문하십시오 : Veracode

# 12) 모바일 보안 프레임 워크 (MobSF)

MobSF (모바일 보안 프레임 워크)는 Android, iOS 및 Windows 플랫폼을위한 자동화 된 보안 테스트 프레임 워크입니다. 모바일 앱 보안 테스트를위한 정적 및 동적 분석을 수행합니다.

대부분의 모바일 앱은 보안 허점이있을 수있는 웹 서비스를 사용하고 있습니다. MobSF는 웹 서비스의 보안 관련 문제를 해결합니다.

주요 특징들:

모바일 앱 보안 테스트를위한 오픈 소스 도구입니다.

MobSF를 이용하여 모바일 앱 테스트 환경을 쉽게 설정할 수 있습니다.

MobSF는 로컬 환경에서 호스팅되므로 민감한 데이터가 클라우드와 상호 작용하지 않습니다.

세 가지 플랫폼 (Android, iOS, Windows) 모두에서 모바일 앱에 대한 더 빠른 보안 분석.

MobSF는 바이너리 및 압축 소스 코드를 모두 지원합니다.

API Fuzzer를 이용한 Web API 보안 테스트를 지원합니다.

개발자는 개발 단계에서 보안 취약성을 식별 할 수 있습니다.

공식 사이트를 방문하십시오 : 모바일 보안 프레임 워크

결론

이 기사를 통해 시장에서 사용 가능한 다양한 모바일 앱 보안 테스트 도구에 대해 배웠습니다.

추천 읽기 = >> 최고의 동적 애플리케이션 보안 테스트 도구

테스터는 각 모바일 애플리케이션의 특성과 요구 사항에 따라 최고의 보안 테스트 도구를 사용하는 것이 항상 중요합니다.

다음 기사에서는 모바일 테스트 도구 (Android 및 iOS 자동화 도구) .

이미지덤프(fridump)

회사에서 급하게 모바일 앱 취약점 진단을 요청하였다. 현업/개발부서에서 갑자기 서비스 오픈을 한다고 하니.. 보안팀 입장에서 안할 수도 없는 노릇이다. 사수가 조심스레 물어본다. 모바일 취약점 진단 해봤냐며..(안해봤다) 우선 최대한 해보라고 하고 별다른 방법도 없고, 원래 현 직장에서의 업무가 웹/모바일 취약점 진단이니깐.. 당연히 진행하겠다고 했다.

우선 구글링 & 유튜브 총동원.

내가 아는 건 우선 nox player 밖에 없는 상황이다. (모바일 앱 단순 실행 테스트)

분석 환경 구축

– frida를 통한 모바일 취약점이 많이 나오길래 찾아보니 frida 환경을 구축하고 모바일 앱 서비스와 서버-클라이언트 통신을 통해 분석을 하는 모양이다.

1. nox 환경 세팅

nox player 다운로드 및 실행 (2021년 2월 3일 기준 7.0.0.9 버전)

nox player 설치/실행 후에 디바이스 연결 확인 및 터미널 접속 시도 (자동으로 디바이스 및 애뮬레이터에 연결되지 않는 경우 수동으로 연결한다)

터미널 최초 접근 후 su 명령어로 권한 상승(nox앱에서 루팅 설정 사전에 필요)

nox player가 실행되어 있으면 보통은 아래와 같이 데몬 시작 및 터미널 접속이 자동으로 된다.

nox player에 apk파일을 통해 앱 설치하기 (분석 apk파일이 주어지는 경우)

– apk파일을 화면에 드래그

설치 확인

또는 nox_adb.exe 명령어를 통해 설치도 가능하다.

– Code(Apk) 위치

어떤 App이 설치되면 device 내부의 특정 dir에 apk, libs, oat 파일 등이 저장됩니다. Oreo부터 폴더명은 package의 이름에 random hashcode의 조합으로 생성됩니다. 참고(codechacha.com/ko/android-data-storage/)

– 내부저장소 캐시 데이터 위치

/data/data

참고(flystone.tistory.com/146)

2. frida 환경 구축

– 아래 블로그에 친절하게 설명이 되어있다.

Frida는 리버싱 과정에서 DBI( Dynamic Binary Instrumentation -동적 분석 )를 가능하게 해주는 도구입니다.

Frida는 패키지와 서버로 이루어져 있는데 분석하는 장치에는 패키지를 설치하고 분석의 대상이 되는 모바일이나 에뮬레이터에는 서버를 삽입하여 구동하게 됩니다.

출처 : m.blog.naver.com/PostView.nhn?blogId=wsi5555&logNo=221251489689&proxyReferer=https:%2F%2Fwww.google.com%2F

1) 분석할 로컬 환경에 frida 툴 설치

pip install frida

pip install frida-tools

버전을 명시하지 않아도 설치됨

2) frida-server 다운로드 (분석대상이 되는 애뮬레이터에서 구동하기 위한 목적)

github.com/frida/frida/releases

nox 애뮬레이터에서 frida-server를 실행하기 위하여 ‘frida-server’ 파일을 adb(android debug bridge) 도구를 통해 nox 애뮬레이터 디바이스로 push

(nox 애뮬레이터가 실행되어 있어야 하고 push할 위치도 미리 확인한다-> /data/local/tmp)

설치된 nox 경로아래 명령어를 편하게 사용하기 위해 환경변수에 등록하였다.

환경변수 설정(nox\bin)

터미널 접속 및 push할 경로 확인

> nox_adb.exe shell

애뮬레이터 내 /data/local/tmp 경로 확인

> nox_adb.exe push [push할 파일 경로] [목적지 경로]

(목적지 경로는 파일명까지 적어줘야 전송이 됨)

* 64비트 파일은 실행이 안되어 x86을 다시 받아서 push

chmod 755 [frida-server 파일]

./frida-server-버전-android-x86 &

frida-server 실행 여부 확인 (ps 명령어는 -ef 옵션이 먹히지 않는다. ps명령어만으로 확인)

frida-server가 실행되면 로컬 분석 환경에서 ‘frida-ps -U’ 명령어를 통해 분석대상의 프로세스 목록을 확인함으로써 정상통신 여부를 확인한다.

frida-ps -U

2-1. nox 프록시 설정 (nox player 내 안드로이드의 wifi 설정에서 프록시 설정을 한다)

* 사전에 burpsuite 프록시 설정을 해둔다. ex)127.0.0.1:8080

위와 같이 하면 프록시 연결이 되지 않는다. IP는 호스트 PC(Windows)의 IP를 입력한다.

프록시 설정이 정상적으로 되었다면 http://burp에 접속이 될 것이다. 인증서를 다운받도록 하자.

다운받은 인증서 파일(cacert.der)는 포맷 문제로 직접 설치가 불가능하며, 이름 바꾸기를 통해 확장자를 .crt로 변경한다.

변경한 인증서 파일을 안드로이드 내에 설정 – 보안 – SD 카드에서 설치 화면으로 들어가 설치를 진행한다. (SD카드에서 불러와 설치 진행) 또한, 인증서 설치 시 PIN, 패스워드 등 잠금설정을 해야 사용이 가능한다.

인증서 파일을 찾아 선택하면 아래와 같은 화면이 뜬다. 이름을 Burp로 하고 자격증명 사용은 Wi-Fi를 선택하자.

PIN 설정까지 하면 설치가 완료되고, 앱 실행을 해보면 BurpSuite를 통해 요청이 Intercept 되는지 확인하자.

(nox에서는 앱을 실행하고, BurpSuite에서는 Intercept is on으로 활성화를 시킨다.

3. apk 추출 (wkdrmsh.tistory.com/11)

apk extractor 다운로드

추출할 앱을 선택만 하면 추출완료

apk 파일 추출 이후에 애뮬레이터 상의 파일관리자를 통해 복사하거나 터미널 상의 경로에서 복사한다.

1) 파일관리자를 통한 복사

/storage/emulated/0/ExtractedApks 경로에 앱 확인

2) 터미널을 통한 복사

복사한 apk 파일을 로컬로 다운로드(pull)

> nox_adb.exe pull [apk파일 경로] [다운로드 받을 경로]

4. apktool 설치 및 다운로드 (ibotpeaches.github.io/Apktool/install/)

– apk 압축실행파일 – 안드로이드 앱 설치도면, 리소스 파일 등 가상환경에서 실행하는 형태

– 이 파일들을 분석하기 쉽게 하기 위해 역으로 디코딩, 디컴파일한다라고 이해.

– 이 앱을 위변조하는 목적으로 진단할때 사용(간단하게 위변조가 가능하므로)

– 여러 오픈소스 도구에서도 이 툴을 가지고 와서 활용

– 현재 2.5.0 업데이트되어 발표.

– 안드로이드 버전이 업데이트 되면서 sdk 등 정보들에 대한 업데이트 디코딩 과정에서 변화된 내용을 원활하게 바꿀수있도록 업데이트 되었다.

4-1. apk파일(바이너리파일) 디코딩

jar파일로 다운로드 – >자바환경에서 실행

> java -jar apktool_2.5.0.jar 입력 및 옵션 확인

-d : 디코딩

-b : 빌드

등등 옵션 확인 (java 명령어가 설치되어 있지 않다면, jre 다운로드 및 설치)

> java -jar apktool_2.5.0.jar d [apk파일]

–> 디코딩 진행

.dex – 자바 원본 파일이 스말리 파일 -> 덱스파일이 스말리 코드형태로 디코딩이 되는 것?? 관련 라이브러리와 파일들이 압축이 해제 되는 과정이다. (그냥 apk 파일을 디코딩 과정없이 단순 압축해제하면 덱스파일만 나오고 이 안에 원본 파일과 관련된 smail 코드는 디코딩안됨)

smali 코드나 AndroidManifest.xml 등 디코딩 된 파일 확인

smali 코드들은 텍스트 형식으로 저장이 됨

텍스트 변경 등을 통해 앱 위변조 확인이 가능.

* Smail 코드란? (참고 : bugday.tistory.com/46)

An assembler/disassembler for Android’s dex format의 약자, DEX 바이너리를 사람이 읽을 수 있도록 표현한 언어

Dalvik 바이트 코드를 위한 어셈블리 언어 (dalvik에서 사용하는 dex 형식의 어셈블러)

안드로이드 리버싱 엔지니어링할 때 사용

분석가입장에서보면 smali코드를 해석해 프로그램의 실행원리를 파악 가능

smali는 재컴파일이 가능하기 때문에, 코드를 수정하고 재컴파일 함으로써 프로그램 자체 수정이가능(apk파일을 java로 변환해서 자바를 보면서 + 파일 수정은 smali레벨에서 함) ->자바와의 차이

쉽게 말하자면 DEX 파일은 기계어(바이너리)로 되어 있는데 사람이 보고 이해하기 힘드니까 쉽게 읽을 수 있도록 smali code로 표현한다.

쉽게 읽을 수 있도록 smali code로 표현한다. 안드로이드 리버싱을 할 때 꼭 알아야한다. 왜냐하면 코드 패치를 하려면 무조건 smali code를 수정한 후 리패키징해야하기 때문이다. 보통 jadx나 jeb로 자바 코드를 분석한 후 smali code를 수정한다.

디코딩을 한 후에는 해당 앱의 smali 코드 위치를 찾자!

5. Drozer Framework 설치 (서버 – 에이젼트 방식)

github.com/FSecureLABS/drozer/releases/tag/2.4.4

<모바일 전자정부 서비스 관리 지침, 모바일 대민서비스 보안취약점 점검 가이드 참고>

1. 반복 설치 시 오류 발생

2. 앱 설치 전후 비정상적인 파일 및 디렉토리 설치 여부

모바일 앱 취약점 진단 체크리스트 중에 위변조 파일 비교하는 항목이 있다.

ls 명령어로 파일 개수 확인하여 최초설치/재설치 후 비교

삭제 후 디렉터리 확인

3. 불필요하거나 과도한 권한 설정

apk 파일 디코딩 후 생성된 폴더에서 AndroidManifest.xml 파일 확인

리눅스 bash shell에서 확인 윈도우 터미널에서 확인

4. 앱 삭제 후 안전성

앱 설치 전/후로 앱 설치 디렉터리의 파일 목록을 확인한다.

/data/data/애플리케이션이름

-> 삭제 후 해당 디렉터리에 파일이 남아있지 않을 경우 정상

# ls -alr

<진단기준>

• 앱 설치 전후로, 아래와 같을 경우 취약한 것으로 판단한다.

– Android 플랫폼의 경우, /data/data 디렉토리 내부에 잔존 파일이 있을 경우 취약한 것으로

판단한다.

– iOS 플랫폼의 경우, /var/mobile/Applications/이하의 디렉토리 내부에 잔존 파일이 있을 경우

취약한 것으로 판단한다.

• 앱 설치 전 및 삭제 후에 전체 시스템 내부 파일 목록을 작성 및 비교하여 변경 사항이 있을

경우 취약한 것으로 판단한다.

5. 기능의 정상동작

① 앱 설치 후 실행하여, 앱의 각 페이지 및 포함된 기능들을 동작시켜본다.

② 수행 도중 기능 정상 동작 여부를 확인하여 설계서에 따라 모바일 앱의 메뉴가 정확하게

동작하는지 확인한다. 단, 페이지가 많은 앱의 경우 시간이 많이 소요될 수 있다.

※ 기능 오동작 또는 미동작(로그인, SMS, GPS 등), 오탈자, 잘못된 링크 등을 점검한다.

제2장 기능 보안취약점 진단방법 | 23

제2장

기능 보안취약점 진단 방법

라. 취약점 진단기준

• 기능 오동작, 미동작, 오탈자, 잘못된 링크 등이 발견될 경우 취약한 것으로 판단한다.

6. 임의기능 등 악성행위 기능 존재

가. 설명

• 모바일 앱에는 명시적으로 제공하는 기능 외에 백그라운드(background)에서 구동되는 악성

기능이 존재할 수 있다.

나. 보안대책

• 알 수 없는 포트가 LISTEN 상태로 열려있는 경우 해당 포트를 통한 통신이 악의적인 것인지를

검토하고 포트 백도어 여부를 확인 후 보안취약점이 확인되면 해당 기능에 대하여 수정한다.

• 생성되는 프로세스가 악의적인지 여부와 프로세스의 권한이 적절하게 설정되었는지를

확인하여 보안취약점이 확인되면 해당 기능에 대하여 수정한다.

※ 생성되는 프로세스가 악의적인지 여부의 판단기준은 생성된 프로세스 중에서 원래 정의되지 않은

프로세스가 있는지 여부를 기준으로 함

진단방법

점검도구 : adb, paros, autoproxy(android) / putty, paros(ios)

앱 설치 및 실행을 통해 앱의 모든 기능(예:로그인, SMS. 전송 등) 및 기능 요구 권한 (AndroidManifest.xml 파일 내 Permission 등) 점검

점검 대상 앱의 실제 사용되는 앱의 권한과 manifest 파일에서 부여하는 권한을 비교하여 사용되지 않는

권한이 부여되어 있는지를 점검한다. 불필요한 권한이 부여되어 있을 경우에는 악성 앱, 바이러스에

의해 권한이 악용 될 수 있다.

프록시 툴(paros, BurpSuite 등)을 이용하여 불필요한 패킷 전송 여부를 확인

점검 앱을 실행하여 각 기능들을 실행하면서 프록시 툴 도구에 전송되는 데이터를 살펴보고, 중요

개인정보 등을 유출 시키는지 여부를 점검한다.

netstat -anto

-> 리스닝 포트 점검

ls -alR 패키지명 (불필요한 파일 생성 여부 확인)

진단기준

명시적인 기능 외 백그라운드로 실행되는 의심스러운 행위가 있을 경우 취약한 것으로

판단한다.

• 분석 대상 앱이 불필요한 패킷을 외부로 전송하거나 악의적인 파일, 프로세스 등을 생성 할

경우 이는 모바일 기기에 잠재적인 위협을 가져올 수 있는 행위로 의심하여 취약한 것으로

판단한다.

7. 정보 외부 유출

• 허가된 주소(IP, URL 등) 이외의 주소로 정보 전송이 가능하면 안된다.

나. 보안대책

• 전송되는 정보가 허가된 주소 이외의 다른 주소로 전송시 해당하는 정보를 확인하고 외부로

정보가 유출된다고 판별할 경우 삭제 또는 수정한다.

진단방법

앱을 설치한 후, 실행하여 로그인 기능을 수행한다.

② 프록시 툴(BurpSuite 등) 및 패킷분석 도구(WireShark 등)를 통해 전송되는 정보를 캡쳐한 후

허가된 주소로 패킷이 전송되는지 확인한다.

※ 전송되는 정보가 허가된 주소로 전송되는지 확인을 위해서는 앱 서버 또는 업데이트 서버 주소를

확인하며, 프록시 툴 및 패킷분석 도구를 사용하여 연결된 IP 및 URL을 쉽게 확인할 수 있음

진단기준

전송되는 정보가 허가된 주소 이외의 다른 주소로 전송 될 경우에는 취약한 것으로 판단한다

8. 자원고갈

정상기능 오동작 또는 취약점을 통해 과도한 트래픽을 유발시키거나 배터리를 고갈 시키지

않아야 한다.

나. 보안대책

• 배터리·트래픽 점검 앱을 통하여 비정상적으로 많은 배터리 및 트래픽 소모량을

발생시키는지를 확인 후 수정한다.

※ 배터리 및 트래픽 소모 발생량에 대한 판단기준은 자체적으로 기준을 수립하여 판단한다

진단방법 – 배터리사용량 앱

앱을 설치한 후 실행을 통해 사용되는 모든 기능 및 권한(SMS, GPS 등)을 확인한다.

② 배터리 사용량 앱12(예, Battery Doctor 앱) 및 트래픽 사용량 앱13(예, Network Traffic Detail 앱)

을 통해 각각 배터리 사용량 및 트래픽 사용량을 확인한다.

9. 루팅 및 탈옥 기기에서의 정상 동작

설명

• 루팅(Android 기반 플랫폼), 탈옥(iOS 기반 플랫폼) 된 기기에서 앱 설치, 실행 및 정상 동작이

이루어져서는 안된다.

나. 보안대책

• 다양한 신종 루트킷 및 루팅·탈옥을 탐지할 수 있도록 각종 패턴을 최신 버전으로 유지해야

하며, 앱 개발시 해당 기능을 탐지할 수 있는 모듈을 삽입하여 개발한다.

• 모바일 보안공통기반의 “단말 및 앱 위·변조 방지” 기능을 사용하여 플랫폼 변조(루팅·탈옥)

여부를 검사하여 위·변조된 단말 접근을 차단한다.

nox 루팅 설정(Root 켜기)

루팅 설정 nox 재실행 nox 루팅 설정 및 재실행하여 앱 실행 시 중지화면

dex2jar 도구를 이용하여 apk 파일을 jar 파일로 변경

jar 파일 내 컨텐츠 검색 (su, super, sbin 등)

jar 명령어를 사용 검색 명령어

jd-gui 프로그램을 통해 검색

<루팅 탐지 참고 URL>

philosopher-chan.tistory.com/366

dazemonkey.tistory.com/47

m.blog.naver.com/6yujin6/221760527076

playfmrussia.ru/ko/chrome/chto-dayut-rut-prava-na-androide-chto-takoe-rut-i-zachem-on-nuzhen.html

chanztudio.tistory.com/70

bugday.tistory.com/50

rokefoke.tistory.com/10

10. ID값의 변경

ID 값의 변경

ls -alR /data/data/앱경로

-> uid / gid 확인 후 해당 값을 제외하여 추출

ls -alR /data/data/앱경로 | awk -F’ ‘ ‘{print $2} | grep -Ev ‘uid’

ls -alR /data/data/앱경로 | awk -F’ ‘ ‘{print $3} | grep -Ev ‘gid’

11. 동일키로 서명된 서로 다른 앱 간의 UID 공유

12. 인텐트 권한의 올바른 설정

13. 인증 정보 생성 강도 적절성

14. 중요정보의 평문 저장 및 전송

15. 중요정보 저장 및 전송 시 취약한 암호알고리즘 적용

16. 기타 중요 정보의 평문 저장 및 전송

17. 기타 중요 정보 저장 및 전송 시 취약한 알고리즘 적용

18. 파일 다운로드 시 외부주소 및 파일 무결성 우회

19. 개인정보 및 개인위치정보 수집 및 활용에 대한 동의

20. 난독화

소스코드 난독화 여부 확인 (참고 : appguard.toast.com/blog/3)

dex2jar download하여 apk 또는 dex 파일을 jar로 변환

>d2j-dex2jar.bat -f [apk파일명] -o [변환할 jar파일명]

apk to jar

또는 apk 파일을 zip으로 확장자 변경 후 압축해제하여 classes.dex를 jar로 변환

1) apk 파일 압축해제 및 classes.dex 파일 확인

2) classes.dex 파일 jar파일로 디컴파일 (dex to jar)

>d2j-dex2jar.bat -f [dex파일명] -o [변환할 jar파일명]

결과는 동일

20-1. 앱위변조

참고 : zifmfmphantom.tistory.com/100

1) apktool을 이용하여 apk 파일 디컴파일

2) apk 파일을 디코딩하여 생성된 해당 앱의 폴더에서 파일 변조 수행

ex) /res/Values/strings.xml -> app_name 수정

/res/drawable 내의 실행 아이콘 이미지, 또는 메인 이미지 파일을 다른 이미지로 변경

3) apktool을 이용해 리패키징을 수행

> java -jar apktool_2.5.0.jar b [소스경로] -o [리패키징할 apk파일명]

4) 서명프로그램(keytool, jarsigner 등)을 이용해 빌드된 apk 파일에 대하여 서명(코드사인)

* keytool 키 생성 프로그램, jarsigner 서명 프로그램

keytool 참고 : www.lesstif.com/java/java-keytool-keystore-20775436.html

5) 서명된 apk 파일을 모바일 기기에 설치하여 정상적으로 실행되는지 확인

위변조한 앱 설치 불가 메세지

apk파일 드래그앤드랍으로 설치 시 중간에 멈춤

<앱 위변조> – 참고

m.blog.naver.com/PostView.nhn?blogId=largosoft&logNo=220489563462&proxyReferer=https:%2F%2Fwww.google.com%2F

<참고 URL >

guslabview.tistory.com/321

h3ck.tistory.com/25

parkho79.tistory.com/57

mugs.tistory.com/4

liveyourit.tistory.com/152

codechacha.com/ko/android-data-storage/

github.com/frida/frida/releases

m.blog.naver.com/PostView.nhn?blogId=searphiel9&logNo=221366347325&proxyReferer=https:%2F%2Fwww.google.com%2F( Android ADB 가지고 놀기)

키워드에 대한 정보 안드로이드 취약점 분석 툴

다음은 Bing에서 안드로이드 취약점 분석 툴 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 (안드로이드 모의해킹) AndroBugs 활용한 앱 자동화 분석

  • 모의해킹
  • 해킹
  • 보안
  • 안드로이드
  • 모바일모의해킹
  • 보안프로젝트
  • www.boanproject.com

(안드로이드 #모의해킹) #AndroBugs #활용한 #앱 #자동화 #분석


YouTube에서 안드로이드 취약점 분석 툴 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 (안드로이드 모의해킹) AndroBugs 활용한 앱 자동화 분석 | 안드로이드 취약점 분석 툴, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  쉴만 한 물가 | [묵상] '쉴만한 물가로 인도하시는도다' 피아노 Piano/He Leads Me Beside Quiet Waters 답을 믿으세요

Leave a Comment