Android-InsecureBankv2 환경 구성
모바일 앱 취약점 진단을 위해서 기존에 많이 사용 하는 InsecureBankv2 와 DIVA로테스트 진행 예정이다. 먼저는 InsecureBankv2 앱으로 해보자. InsecureBankv2 와 DIVA 란?모바일 애플리케이션 보안 학습을 위
kk-nic.tistory.com
전 강의
앱 취약점 진단 항목중에 “하드코딩된 중요 정보” 에 대해서 살펴보자.
정적분석의 대표적인 사례이다.
* 정적분석 -> 앱 실행 시키지 않고, 소스코드 분석하는 기법
분석방법 1 -> 소스코드 보유하고 있을 때, 안드로이드 스튜디오의 소스코드 올려놓고, 진단
분석방법 2 -> 소스코드 없고, 앱의 apk 파일만 있을 때, 디컴파일러(jadx)로 apk파일 디컴파일의 결과물인 소스코드로 진단 (디컴파일 된 소스코드는 100% 정확하지 않음.)
지금은 분석 방법 1 로 해보자.
진단자는 소스코드를 보유하고 있다고 가정하자.
하드코딩된 중요 정보
- 하드코드 란?
프로그램 소스 코드 내에 값을 직접적으로 입력하는 방법. 즉, 변수나 상수에 값을 직접적으로 코드에 명시하는 것을 말한다. 하드코딩은 유지보수와 유연성에 문제가 생길 수 있기 때문에, 가급적 피하는 것이 좋다.
- 중요정보(관리자 계정, 암호화키 등등)가 소스 코드 내에 노출 된 경우 취약점
이런 취약점이 나올까?
실제 상용앱 같은 경우는 개발을 하면서 많은 시행착오를 겪고, 많은 액티비티(화면)과 데이터이동을 구현을 해야한다.
개발을 하는 과정에서, 개발 편의를 위해 입력 받는 값을 소스 코드 내에 기입(코드 내 주석 등으로 노출)을 하고,
개발이 끝나 상용화 하는 과정에서 미쳐 지우지 못했을 때, 나오는 취약점이라고 볼 수 있다.
준비물
① 소스코드
② 안드로이드 스튜디오
① 소스코드
인시큐어뱅크 깃헙에서 받은 ZIP 파일 내 소스코드가 있다.
절대 경로 : C:\InsecureBankv2\Android-InsecureBankv2-master\InsecureBankv2\app\src\main\java\com\android\insecurebankv2
② 안드로이드 스튜디오
https://developer.android.com/studio?hl=ko
Android 스튜디오 및 앱 도구 다운로드 - Android 개발자 | Android Studio | Android Developers
Android Studio provides app builders with an integrated development environment (IDE) optimized for Android apps. Download Android Studio today.
developer.android.com
설치 버전 : android-studio-2024.2.1.11-windows.exe
취약점 진단
안드로이드 스튜디오를 열고 소스코드를 열자.
InsecureBankv2 폴더를 열어도 되고, 그 밑에 app 폴더를 열어도 된다. 여기선 app 폴더를 열어보자.
소스코드가 보인다.
이상태에서 진단을 시작을 하는데, 검색기능을 활용 할것이다.
햄버거 모양 클릭 -> Edit -> Find -> Find in Files
또는
CTRL + SHIFT + F
이곳에서 검색을 할 수 있다.
Directory 항목으로 두고 검색을 해보자.
"password" 문자열을 검색해보자.
password 문자열이 들어간 보든 코드들이 검색이 된다.
그중에 실제 계정과 패스워드가 들어간 주석이 발견된다. ( DoLogin.java 파일 )
계정명이 jack
패스워드가 jack@123$
"jack" 로 검색
보면 두개의 파일의 동일한 주석이 존재한다.
ChangePassword.java 과 DoLogin.java 파일 에 존재함.
또 DoLogin.java의 아래 코드를 보면?
devadmin?
만약 입력받은 username변수의 문자열이 devadmin 이라면 httppost2 객체로 HTTP POST 처리는 한다.
좀더 위로 가보니, HttpPost 객체를 두개로 만들어서 그중 하나의 객체를 예외로 두고 있다.
음.. 보니까 devadmin 이라는 문자열로 보아 개발 시 사용 되었다. 관리자 계정인 것 같다.
실제로, 로그인이 되는지 확인 해보자.
로그인이 되어, 로그인 처리 된 다음 화면으로 이동한다.
"key" 문자열 검색.
이 키는 암호화와 복호화에 사용될 비밀 키이다. 이 키는 평문을 암호화하거나 암호문을 복호화할 때 사용된다.
이렇게 중요 정보가 소스코드 내에 그대로 기입이 되어있게 되면 취약점으로 본다.
이런 식으로 소스코드를 보유 하고 있을 때는, 안드로이드 스튜디오로 소스코드를 불어와서
검색기능을 통해서 하드코드 된 취약점을 진단 할 수 있다.
'안드로이드 앱 해킹(진단) > 인시큐어뱅크' 카테고리의 다른 글
Android-InsecureBankv2 환경 구성 (0) | 2024.11.12 |
---|