일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- lord of sql injection
- diva
- 2018
- NTFS
- base64
- elasticsearch
- SQL Injection
- otter
- Reflected XSS
- MFT
- Strings
- Docker
- InsecureBank
- frida
- beebox
- vulnhub
- Volatility
- 인시큐어뱅크
- igoat
- XSS
- kibana
- logstash
- foremost
- Suninatas
- 안드로이드
- ctf
- 파이썬
- ESXi
- CTF-d
- Openstack
- Today
- Total
목록모바일 (84)
Information Security
목표 : 하드 코딩된 정보를 찾아라 1234 입력 시 Access denied! 접근 거부 메시지를 확인할 수 있다. 소스코드를 보면 클래스에서만 접근 가능한 DivaJni djni를 확인할 수 있다. 소스코드를 보면 divajni 라이브러리를 Load 하는 것을 알 수 있다. lib 디렉토리를 확인하면 라이브러리 파일을 확인할 수 있다. adb pull명령어를 통해 libdivajni.so파일을 추출했다. objdump를 이용해 disassemble과정을 거치면 olsdfgad;lh 문자열을 확인할 수 있다. Access granted! 메시지를 확인할 수 있다.
목표 : PIN번호를 설정 후 해당 번호를 통해 접근이 가능한 앱을 PIN번호를 모르는 상태로 앱을 실행하지 않고 접근하기 임의의 PIN 번호를 입력을 하면 PIN 번호가 생성되는 것을 알 수 있다. GO TO PRIVATE NOTES 번튼을 클릭하면 PIN 번호를 입력하라는 화면을 보여준다. 생성된 PIN 번호를 입력 시 정보를 보여주는 것을 알 수 있다. 소스코드를 보면 jakhar.aseem.diva.NotesProvider의 exported가 true로 설정되어 있는 것을 확인할 수 있다. provider를 통해 외부에서 해당 content를 불러올 수 있다. 소스코드에서 provider의 URI의 정보를 확인할 수 있다. 명령어를 실행하면 Private Notes에 저장되어있던 정보가 출력된다.
AVD Manager 프로그램을 실행시킨다. Create 버튼을 클릭 후 AVD Name, Device, Skin, Size를 설정해준다. TEST라는 Device과 생성된 것을 알 수 있다. adb를 이용하여 해당 Device에 App을 설치했다. Device를 실행시켜 APPS을 보면 악성 앱이 설치된 것을 알 수 있다. package name으로 해당 앱을 삭제할 수 있다. LgFilter 프로그램을 실행시켜 해당 Device emulator로 설정하며 해당 Device의 로그들을 출력해준다. 악성 앱의 PID를 확인하기 위해 프로세스를 확인했다. 악성 앱 PID를 설정 하면 해당 앱 관련된 로그들만 확인할 수 있다.
WebActivity Manifest에서 Permissions 메뉴를 보면 권한을 자동으로 보여준다. 인터넷 접속 권한을 사용하는 것을 알 수 있다. 컴포넌트와 권한을 볼 수 있다. MAIN과 LAUNCHER가 App 실행 시 처음으로 동작하는 것이다. App 실행 시 onCreate 부분이 처음으로 동작하는 부분이다. super.onCreate는 미리 구현된 Activity를 사용한다는 의미다. requestWindowFeature은 Full Screen으로 앱을 실행하는 것을 의미한다. webview는 웹 페이지를 보여주는 화면이다. progressbar는 어떤 작업 진행 상황을 알려준다. setLayoutParams은 어떤 컴포넌트 Layout을 설정해준다.
목표: 앱을 실행하지 않고 Tveeter가 제공하는 PIN을 모르는 상태로 API Credential 획득하기 / 비즈니스 로직 문제이므로 코드를 볼 필요가 있다. Register Now 선택 후 1111 입력 시 에러 메시지가 발생하는 것을 알 수 있다. 뒤로 가서 Alerady Registered를 선택하면 API Credential을 확인할 수 있다. 이번 문제와 관련된 액티비티는 2개라는 것을 알 수 있다. 소스코드를 보면 boolean함수를 통해 aci2rbregnow의 결과를 chk_pin의 값으로 설정한다. isChecked는 체크박스가 선택되었는지를 확인하는 메서드이며 rbregnow는 Register Now체크박스인 것 같다. 따라서 Register Now 체크박스가 선택되었다면 chk_..
목표: 앱을 실행하지 않은 상태에서 API 자격증명 획득하기 VIEW API CREDENTIALS 버튼 클릭 시 API 정보가 노출된 것을 알 수 있다. 소스코드에서 Activity는 intent-filter로 보호된 것을 볼 수 있다. 그러나 절대 intenet-filter를 보호 메커니즘으로 사용하면 안 된다. intent-filter가 Activity와 같은 애플리케이션 컴포넌트에 쓰였을 때 해당 컴포넌트는 공개적으로 export 되기 때문에 임의로 접근할 수 있다. am = Activity Manager, start = Activity 실행, APICredsActivity를 시작하라는 명령어다. 메인 화면에서 바로 Vendor API Credentials 화면을 보여주는 것을 알 수 있다.
e877c46.apk 파일을 디컴파일 했다. e877c46.apk 파일을 jar 파일을 추출했다. Java Decompiler 프로그램을 이용해 해당 jar 파일을 소스코드를 추출했다. 해당 파일 압축을 풀고 디컴파일된 폴더에 src 파일 명으로 이동시켰다. 이클립스를 이용해 해당 파일을 Import 했다.
목표: web URL외의 정보를 입력해 민감한 정보에 접근하기 입력 값에 https://www.naver.com 입력 후 view를 클릭했다. 네이버 주소로 이동한 것을 알 수 있다. 외부 저장소에 저장되어 있는 .uinfo.txt 파일을 호출했는 데 정보가 노출되는 것을 알 수 있다. file:///data/data/jakhar.aseem.diva/shared_prefs/jakhar.aseem.diva_preferences.xml 호출 시 동일하게 내부 저장소에 저장되어 있는 정보가 노출되는 것을 알 수 있다. WebView 취약점을 이용한 사례 WebKit은 구글 크롬 웹 브라우저와 안드로이드 브라우저에 포함되어 수많은 브라우징들을 위한 엔진. android.webkit 패키지는 웹을 출력하기 위해 ..