일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CTF-d
- Reflected XSS
- MFT
- elasticsearch
- vulnhub
- SQL Injection
- igoat
- XSS
- 인시큐어뱅크
- Docker
- 2018
- Openstack
- frida
- lord of sql injection
- 안드로이드
- Strings
- diva
- InsecureBank
- NTFS
- Volatility
- logstash
- Suninatas
- foremost
- beebox
- base64
- ctf
- ESXi
- 파이썬
- kibana
- otter
- Today
- Total
목록모바일 (84)
Information Security
루팅 패치 프로그램을 통해 디바이스 루팅을 진행할 때 해당 프로그램은 디바이스의 boot 이미지의 특정 설정 값을 수정하게 된다. 그리고 이러한 설정들은 시스템 속성 파일인 build.prop 파일에 반영되어 디바이스 부팅 시 참조하게 된다. Bypass Build-Tags 항목은 안드로이드 시스템 파일인 build.prop 파일의 속성 값을 검사하여 비정상 값이 존재할 경우 루팅 디바이스로 판단해 탐지하게 된다. 아래와 같은 내용을 확인 /system 디렉터리 위치에서 build.prop 파일 확인 build.prop 시스템의 속성 값을 확인 getprop 명령어로 속성 값 확인 isCheckRootingKeys() 함수는 Bypass Module 탐지 결과를 반환해 주는 역할을 한다. 시스템 속성 값..
모든 OS에는 운영체제가 어떤 프로세스를 실행시킬 때 경로를 참조할 수 있도록 PATH 환경 변수가 제공된다. 이는 리눅스 커널 기반인 안드로이드 OS도 동일하다. 셸에서 명령어 사용 시 시스템 환경 변수에 등록된 PATH를 참조해 명령어를 찾고 실행시킨다. Bypass Command Execution 항목은 이러한 특징을 이용하여 which 명령어를 사용해 PATH 변수에 등록된 디렉터리 경로에 "su" 바이너리 파일이 위치하는지 검사하고 파일 존재 시 루팅 디바이스로 판단하여 탐지하게 된다. 아래와 같이 내용 확인 PATH 환경변수에 등록된 내용 확인 Runtime.exec()는 Windows, Linux, Unix 등의 시스템 명령어를 Java를 통해 실행한 후 그 결과를 받아오는 기능을 가지고 있..
디바이스 루팅 시 사용된 응용프로그램 종류에 따라 특정 바이너리 파일들이 설치되거나, 공격자들의 악의적인 행위 및 시스템 설정 변경을 위하여 특정 명령어 파일들을 설치한다. 대표적인 명령어 파일에는 su, busybox, magisk 등이 있다. Bypass Binaries 항목은 디바이스 내의 바이너리 파일들을 검사하여 루팅 시 사용되는 명령어 파일들이 존재할 경우 루팅 디바이스로 판단하여 탐지한다. 아래와 같은 내용을 확인할 수 있다. busybox 명령어를 입력하면 아래와 같이 명령어를 확인할 수 있다. isCheckRootingBinary() 함수는 Bypass Binaries 탐지 결과를 반환해 주는 역할을 한다. 코드를 보면 rootingPath에서 시스템 디렉터리 목록을 가져오고 있으며 ro..
디바이스 루팅 시 사용된 응용프로그램 종류에 따라 내부 저장소에 특정 패키지들이 설치되거나, 공격자들이 앱 분석 및 악의적인 행위를 위하여 특정 앱을 설치한다. 대표적인 앱으로는 magisk, BusyBox, Toolkit, Dex Manager 등이 있으며, 이러한 앱들은 특정 동작 수행을 위해 관리자 권한을 획득하거나 또는 디바이스 정보를 변경하는 데 사용된다. Bypass Packages 항목은 디바이스에 설치된 앱 패키지 목록을 검사하여 루팅 시 설치되는 앱 또는 루팅 디바이스에서만 활용되는 앱들이 존재하는 확인한다. 루팅 Bypass packages 문제를 풀 것이다. 마우스로 클릭하면 아래와 같이 내용을 확인할 수 있다. Fail이 보이는 것을 알 수 있다. APK 파일을 압축푼 후에 JEB ..
실행될 수 있는 서비스는 몇 개인가? 리시버는 몇 개인가? intent-filter의 action에 대해서 조사해보자. 어떻게 동작할 것이라고 예상되는가? 암호화를 실제 진행하는 클래스는 어떤 클래스인가? 대칭키는 무엇인가? 암호화를 진행하는 서비스명은 무엇인가? 어떤 암호화 방식을 사용하는가?
Main Activity 찾기. 등록된 브로드캐스트 리시버 찾기 등록된 서비스 찾기 사용권한을 살펴보고 악성 앱의 행위 유추하기 VIBARATE = 안드로이드 단말기 진동 허용 READ_SMS = 저장된 SMS 읽을 수 있음 WRITE_SMS = SMS 내용을 쓸 수 있음 RECEIVE_SMS = 새로 수신되는 SMS을 확인할 수 있음 SEND_SMS = SMS 보낼 수 있는 권한 READ_CONTACTS = 연락처를 가져올 수 있음 WIRTE_CONTACTS = 연락처를 쓸 수 있음 WRITE_SETTINGS = 애플리케이션에서 시스템 읽기 쓰기 허용하는 권한 READ_PHONE_STATE = 휴대폰 상태 정보를 읽을 수 있음 CALL_PHONE = 전화를 할 수 있는 권한 READ_CALL_LOG =..
앱 컴포넌트 (구성요소) 앱 컴포넌트는 안드로이드 앱의 필수적인 구성요소로 각 독립된 형태로 존재하며 정해진 역할을 수행 각 구성 요소는 시스템이나 사용자가 앱에 들어올 수 있는 진입점 "인텐트"는 다른 앱 컴포넌트로부터 작업을 요청하는 데 사용할 수 있는 메시징 객체 Activity 사용자와 상호작용하기 위한 진입점 사용자 인터페이스를 포함한 화면 하나를 나타냄 이메일 앱이라면 새 이메일 목록을 표시하는 액티비티 하나, 이메일을 작성하는 액티비티 하나, 이메일을 읽는 데 쓰는 액티비티 하나 등이 존재 이메일 앱에서 허용할 경우 다른 앱에서 이와 같은 액티비티 중 하나를 시작할 수 있음 Service 백그라운드에서 앱을 계속 실행하기 위한 다목적인 진입점 사용자 인터페이스(UI)는 제공하지 않음 사용자가..
목표: 미사일 발사 코드를 알아내는 것이 아닌 애플리케이션을 crash 시키고 해당 원인을 알아내는 것이 목표이다. 임의의 값 1234 입력 시 Acess denied! 메시지를 확인할 수 있다. 소스코드를 보면 DivaJni 메소드를 참조하는 것을 알 수 있다. 소스코드를 보면 '.dotdot'라는 문자열이 하드 코딩된 것을 알 수 있다. 그리고 SIZEMAX가 20으로 설정된 것으로 보아 버퍼오버플로우가 발생할 것 같다. .dotdot 문자열을 입력하면 미사일이 발사 카운트를 보여준다. divajni.c 소스코드 하단을 보면 문자열을 체크하지 않는 strncmp 함수를 사용하는 것을 알 수 있다. A 문자를 40개 입력 시 버퍼오버플로우가 발생하는 것을 알 수 있다.