![[붉은외계인] Mobile - Diva Hardcoding Issues - Part 2](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVjjD8%2FbtsEuB9cegA%2FTKMULcWDQiPfIoBs4FlgXK%2Fimg.png)
Nox 에뮬레이터에, 취약한 모바일 앱인 diva를 통하여 공부를 하던 도중 상당히 재미있었던 부분을 정리할려고 한다
시작해보자
Hardcoding Issues - Part 2
Part 1은 정말 쉬웠으나, Part 2는 jadx를 통해 디컴파일한 소스를 들여다보는 과정 + 추가 작업이 필요하다
Hardcode2Activity 클래스에서는 DivaJni 클래스의 access 함수를 사용한다
이러한 access 함수는 native 키워드가 사용되었기 때문에, JNI를 통해서 라이브러리를 호출 할 때 구현될 것이다
어떤 라이브러리를 호출하는지 살펴보면 divajni 라이브러리를 호출하고 있다
라이브러리
jadx를 통해 컴파일 한 후, lib 디렉토리를 살펴보면
각 아키텍쳐마다 사용할 수 있게끔, 동적 라이브러리가 정의되어 있음을 알 수 있다
그렇다면 Nox 에뮬레이터가 구현한 OS는 어떤 아키텍쳐를 사용하고 있고,
이로 인해 어떠한 라이브러리를 사용하고 있는지를 확인하여야 할 것이다
확인방법으로는 동적 라이브러리는 메모리에 로드 되니, 해당 프로세스의 메모리를 확인하면 될 것이다
ps를 통해 diva의 PID를 알아 낸 후, 시스템/프로세스의 정보가 저장되는 proc의 디렉토리로 이동한다
그 다음, diva PID에 해당하는 디렉토리로 이동을한다
그리고 현재 프로세스가 사용하고 있는 메모리 영역에 대한 정보를 저장하는 maps 파일을 열람한다
이 때, 많은 내용이 나오기 때문에, 라이브러리 이름으로 필터를 해준다
그 결과, x86_64 디렉토리의 libdivajni.so 사용을 확인할 수 있다
해결 방법 1 - 무작정 대입
이번 쳅터의 목적은 하드코딩 코드를 찾아서, 특정 문자열을 입력하는 것이다
구글 검색을 통하여 해결 과정을 찾아보았는데, 상당히 많은 사람들이 각자만의 방식으로 풀어나가서,
보는 재미도 쏠쏠하였다
나는 그 중에서, 2가지 방법으로 해결해보고자 한다
첫 번째는 무작정 대입이다
무식한 방법이기도 하지만 strings 유틸을 이용하여, so 파일 중 ASCII 문자만 뽑은 후, 전부 대입해 보는 것이다
단순함이 복잡함을 이긴다는 말이 떠오르게 하는 방식이다
해결 방법 2 - dump
objdump 유틸을 이용하여, so 파일을 덤프해 보는 것이다
ELF 포멧에서, 상수/문자열이 저장되는 섹션인 .rodata 섹션을 덤프해본 결과,
위와 같은 문자열이 저장되어 있음을 확인하였다
결론
olsdfgad;lh 를 입력하면 성공 ~
'Security > Mobile' 카테고리의 다른 글
[붉은외계인] Mobile - OWASP UnCrackable L3 (0) | 2024.03.12 |
---|---|
[붉은외계인] Mobile - OWASP UnCrackable L2 (0) | 2024.03.05 |
[붉은외계인] Mobile - OWASP UnCrackable L1 (0) | 2024.03.04 |
[붉은외계인] Mobile - FridaLab 풀이 (1) | 2024.02.26 |
[붉은외계인] Mobile - smali 코드 분석 1 with KGB Messenger (0) | 2024.02.14 |
IT / Android
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!