본문 바로가기

App hacking24

[안드로이드] APKStudio - apk 파일 변조 후 리패키징 사인하기 1) java에 keystore.exe가 있는 경로로 cd 후 들어가서 key store를 생성해준다. (경로 잘 못찾을 시 윈도우면 Everything이라는 앱 설치해서 파일 이름으로 전체 검색이 가능하다.) 1. keytool -genkey -v -keystore myungju.keystore -alias myungju -keyalg RSA -keysize 2048 -validity 10000 2. -keystore : 파일이름 3. -alias : alias 명 4. -keysize : 키 사이즈 5. validity : 유효 기간 6. 입력 후 비밀번호 입력 7. 이름 등 기타 등 정보를 입력 8. myungju.keystore가 생성됨 2) APKstodio를 설치후 세팅에서(Edit>Setti.. 2022. 5. 9.
[안드로이드] 안드로이드 앱 분석 - 정적분석 [정적 분석] 분석할 타켓을 실제 실행시키지 않는 상태로 분석. 정적분석은 Binary 분석과 Directory 탐색이 있다. 목적은 (1) 앱의 동작 로직을 파악하기 위함과 (2) 동적 분석을 쉽게 하기 위함 (3) 중요 정보 포함 여부 확인이다. apk 추출 방법은 (1) 백업 기능을 이용한 apk 다운으로 파일 관리> 백업> apk 백업> 해당 파일 PC로 추출 (2) playstore app경로로 다운 (3) apk 추출 app으로 추출 자바+xml > 컴파일 > 클래스 > .dex(dex tool로) > dex+resouce+xml > apk 자료형 타입 표현 타입 표현 타입 I int F float J long S short Z Boolean C char D double V void 메서드 종.. 2022. 5. 4.
[안드로이드] 앱 변조 후 rebuild 후 singing 하기 소스 수정 : xml > visual studio code java 등 apkstudio 나 jadx파일 분석 후 수정 개인적으로 아예 수정은 스말리 코드와 같은 어셈블어로 해야하는 것으로 알고있다. [사인 만들기] keytool -genkey -v -keystore normal.keystore -alias normaltic -keyalg RSA -keysize 2048 -validity 10000 서명 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore [리패키징한apk] alias_name apk에 서명을 함 java -jar signapk.jar testkey.x509.pem testkey.p.. 2022. 5. 3.
[안드로이드] apk 파일 apktool 사용, Burp 잡기, android developer site 새 노트북에 설치하려니까 헤메서 가이드 보고 했다 :) https://ndb796.tistory.com/448 간단한 Apktool 설명, 설치, 사용 방법 (안드로이드 앱 분석) Apktool은 대표적인 안드로이드 애플리케이션(Android Application) 대상의 리버스 엔지니어링 도구입니다. APK 파일을 분석하여 리소스를 뽑아낼 수 있고(디코딩), 코드를 수정하여 다시 재빌드(Rebuild) ndb796.tistory.com 파일 보는 법: activity는 화면을 표시하는 단어로 쌍으로 한 개 있으면 화면이 한 개라는 소리이다. 특히 안에 의 MAIN이 붙은 엑티비티를 첫 화면으로 인식한다. 첫 실행 엑티비티는 런처 카테고리 태그를 사용한 액티비티를 찾으면된다. 해당 태그가 있다면 액티비티.. 2022. 5. 2.
[모바일 앱 취약점] Diva tutorial 8 - Input Validation Issues (Part 2) Input Validation Issues (Part 2) 풀이이다. 목표: URL 와는 별개로 민감한 정보의 접근을 시도해보세요. 일단 시험삼아 구글 주소를 불러와본다. Url을 불러오는 게 SSRF 취약점이나 include 취약점을 연상시켰다. 일단 URL 주소와 별개로 민감한 정보에 접근해야하니까 파일에 접근 가능한지 살펴보기로 했다. 무언가 잘 모를때 가장 빠르고 쉬운 방법은 통째로 구글링하는 것이다. 소스에 쓰인 함수는 Webview라는 기능으로 웹페이지를 app에 쉽게 삽입 가능한 기능이다. 파일 다운로드/업로드 기능에도 쓰일 수 있다고 한다. 이 기능은 Webview 취약점에 속하는 것 같다. 로컬 파일에 접근하기 위해선 로컬 파일 주소를 URL으로 바꾸는 과정이 필요하다. 로컬 파일 주소 .. 2022. 3. 19.
[모바일 앱 취약점] Diva tutorial 7 - Input Validation Issues (Part 1) Input Validation Issues (Part 1)의 풀이이다. 목표를 확인해보면 유저이름을 알지 못한 채로 모든 유저의 데이터 ACCESS를 시도하는 것이다. 기본적으로 세 명의 기본 유저가 존재하고 문제는 한번의 검색에 3명의 정보가 모두 조회되어야한다. 일단 시험삼아 *를 입력하면 (*)라는 유저가 없다는 알림창을 확인할 수 있다. 소스코드를 확인하려고 했는데 잘 찾아보니 MainActivity라는 파일에 가이드라인처럼 어느 소스코드를 참고해야하는지 파일명이 나열되어있는 것을 확인했다. 위의 소스코드를 참초해 SQLInjectionActivity 파일을 참조해보면 세명의 디폴트 유저값이 저장되어 있는 것을 확인할 수 있다. 시험삼아 admin의 값을 입력해본다. 유저이름과 카드번호가 출력되는.. 2022. 3. 19.
[모바일 앱 취약점] Diva tutorial 6 - Insecure data storage (Part 4) Diva tutorial 6 - Insecure data storage (Part 4) 에 대한 풀이이다. 취약 코드와 정보 저장 공간을 찾아야하며, 앞의 것과 비슷하다. 정보를 저장한 후 소스코드를 살펴보자. 눈에 띄는 것은 파일의 경로와 .uinfo.txt이다. 별도의 암호화 함수는 없다. 경로를 찾기위해 아래 파일 위치를 칭하는 듯한 26번 라인을 복사해 검색했다. File sdir = Environment.getExternalStorageDirectory(); 이는 외부저장소 절대경로를 뜻하는 것이라는 정보를 알게되었고 실제로 쓰임이 이와 같음을 확인하였다. 기본구조 ) Environment.getExternalStorageDirectory().getAbsolutePath(); 사용방법 ) Sav.. 2022. 3. 19.
[모바일 앱 취약점] Diva tutorial 5 - Insecure data storage (Part 3) Insecure data storage(Part 3) 의 풀이이다. 앞과 같은 목표로 저장공간, 코드를 찾아내는 문제이다. 값을 입력해 저장한 후 소스코드를 살핀다. 코드를 보면 이번엔 정보가 파일로 저장되는 것을 알수있고, 역시 암호화하는 함수가 따로 지정되어있지 않아 평문으로 노출될 것이 예상된다. 애플리케이션 디렉토리로 가서 ls로 해당 파일을 찾아본다. 그럼 엔터를 누를때마다 생성된 uinfo - tmp라는 이름의 파일들을 발견할 수 있고 cat으로 확인 시 평문의 정보가 저장되어있음을 확인할 수 있다. 2022. 3. 19.
[모바일 앱 취약점] Diva tutorial 4 - Insecure data storage (Part 2) Insecure data storage (Part 2)를 살펴본다. 들어가서 목표를 확인해보면 저번과 같이 민감한 정보가 어떻게/어디서 저장되는지와 관련 취약 코드를 찾는 것이다. 소스코드를 확인해보면, 역시나 암호화하는 함수가 따로 없으며, ids2 의 데이터베이스에 myuser 테이블을 만들어서 정보가 저장되는 것을 알 수 있다. Part1에서 /data/data 디렉토리에 databases 파일이 있었기 때문에 adb로 접속해본다. datadases 폴더에 전에 없던 ids2, ids2-journal 파일이 생성된 것을 확인할 수 있다. 원래는 sqlite3 명령어를 통해서 ids2 Database에 연결이 가능한데 나는 sqlite을 사용할수없어 cat으로 파일을 살폈다. 알아보기 어렵지만 id .. 2022. 3. 19.