일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 웹 프레임워크
- 호이스팅
- Writeup
- 덧셈 암호
- 무료교육
- 모듈러 연산
- 개인정보보호교육
- 포너블
- node.js
- 한국산업인력공단
- 디오판투스 알고리즘
- 개인정보보호
- 가명정보처리
- 동적타이핑
- package-lock.json
- pwnable.tw
- 확장 유클리드 알고리즘
- 백엔드
- 개인정보안전성
- 백엔드입문
- 마감임박
- package.json
- 개인정보보호위원회
- 유클리드_알고리즘
- 곱셈 암호
- arrow function
- 한국정보보호산업협회
- 한국정보보호산업협회기자단
- function scope
- 국가인적자원개발컨소시엄
- Today
- Total
목록모바일 (52)
짱짱해커가 되고 싶은 나
Web View 웹 뷰는 안드로이드에서 웹 브라우저에서 보이는 화면을 표시하거나 웹 앱 혹은 하이브리드 앱 개발에 사용한다. (하이브리드 앱은 네이티브 앱보다 개발 과정이 쉽고 기기 간 호환성을 해결하기 쉽다는 장점이 있다.) 안드로이드 내부 모듈인 웹킷 랜더링 엔진 사용 (js 지원) AndroidMainfest.xml) WebView 객체를 산언해서 사용 인시큐어뱅크 - Insecure Webview implementation AndroidMainfest.xml 현재 apk에 INTERNET 사용 권한이 설정되어 있는 것을 확인할 수 있다. MyWebViewClient WebView를 사용하는 곳을 찾아보니 다음과 같이 WebViewClient를 상속받는 MyWebViewClient 클래스를 선언하고..
콘텐츠 프로바이더 콘텐츠 프로바이더를 사용해 안드로이드는 자신의 데이터에 다른 apk가 접근하거나 부여한 권한대로 이용할 수 있도록 해준다. ex. DB, 파일 접근, IPC 역할 (다른 apk과 데이터 공유) -> 애플리케이션의 DB에 접근하는게 아니라 사용자가 원하는 항목에만 접근하도록 할 수 있음 AndroidMainfest.xml에 요소로 정의되며 Content Provider의 주소인 URI와 Content Resolver가 필요하다. (이 때 URI 형식은 content://authority/path 형식으로, content://로 시작하고 authority는 콘텐츠 프로바이더의 고유 주소, path는 데이터 위치에 대한 정보를 의미한다.) -> 취약하다면 공격자가 민감한 데이터에 접근해 조회..
에뮬레이터 탐지 및 우회 Nox 같은 에뮬레이터에서 앱을 실행 중인지 확인한다. 보통 에뮬레이터는 Fingerprint, Device, Model 등과 같은 기기 고유 값을 이용해서 에뮬레이터인지 판단한다. 우회하기 위해서는 smali 코드를 변조해주거나 frida를 통해 에뮬레이터 탐지 함수를 후킹하고 반환 값을 변조한다. 인시큐어뱅크 - Emulator Detection and Bypass 먼저 에뮬레이터와 관련된 코드가 있는지 확인했다. 코드 내에서 에뮬레이터를 탐지하는 코드는 확인하지 못했다.. 흠..
루팅(Rooting) 모바일 기기에서 구동되는 안드로이드 OS 상에서 최상의 권한 (root)을 얻음으로 해당 기기의 생산자/판매자 측에서 걸어 놓은 제약을 해제하는 행위 -> 루팅을 하면? 슈퍼 유저의 권한으로 하드웨어 성능 조작, 제조사 및 통신사 기본 apk 삭제, 시스템 권한을 이용한 디바이스 조작, 디바이스 내부 민감 정보 접근 등 가능 ps. 기본적으로 금융권 apk는 루팅된 기기에서의 앱 실행을 차단, 핀테크 기술을 제공하는 역시 루팅 허용 X 루트 노출 및 우회 취약점 안드로이드 보안상의 이유로 루트 권한을 막아 놓음 애플리케이션 실행 시 각 프로그램마다 권한 부여, 독립적으로 동작 -> 순정 안드로이드는 애플리케이션에서 할 수 있는 행위 제한 루팅 체크 주요 경로 /system/bin/s..
액티비티 액티비티는 AndroidMainfest.xml의 에 선언하며 하나의 앱은 하나 이상의 액티비티로 구성되어 있다. 이 중 하나의 액티비티를 MainActivity라고 하며 mainfest에 MainActivity로 선언한다. 각 액티비티는 독립적으로 동작하기 때문에 현재 액티비티에서 다음 액티비티를 실행이다. -> 액티비티가 취약하게 선언되어 있다면 로직을 무시하고 공격자가 강제로 특정 액티비티를 호출하거나 권한이 없는 사용자가 특정 액티비티에 접근해서 권한 없이 특정 기능을 활성화할 수 있다. 인시큐어뱅크 - Vulnerable Activity Components 3-3과 동일한 내용이다. AndroidMainfest.xml 로 선언되어 있으며 exported=true가 되어 있는 것들이 있다...
SharedPreferences 안드로이드 애플리케이션에서 해당 프로그램 내에 파일 형태로 데이터를 저장하고 삭제하기 전까지 그 내용을 유지할 수 있다. SharedPreferences는 초기 설정값, 자동 로그인 등 간단한 환경 변수를 앱의 저장 공간 아에 파일 형태로 저장한다. (별도로 삭제하지 않는 이상 재부팅되더라도 값 유지) -> 편집하기 위해서는 SharedPreferences.Editor 인터페이스에 포함되어 있는 메서드를 사용해야함 putBoolean(String key, boolean value) : boolean 값을 키 값으로 지정 putFloat() putInt putLong putString putStringSet(String key, Set values) Apply.commit(..
취약한 인증 메커니즘 정상적인 인증 절차를 우회하여 잘못된/비정상적인 인증으로 접근 권한을 취득하는 취약점 적절하지 않은 앱 퍼미션 설정 여부 서비스 권한 상승 행위에 대한 통제 여부 기능에 대한 제한 또는 우회 금지 여부 불필요하거나 사용하지 않는 액티비티 제거 여부 인텐트 사용에 대한 안정성 여부 마스터 키 취약점 대응 여부 인시큐어뱅크 - Weak Authorization mechanism AndroidMainfest.xml 1,2에서 봤듯이 exported=true 일 경우 외부 앱에서 접근이 가능하다. Mainfest를 보면 exported="true"로 설정된 클래스가 엄청 많다. 즉, adb를 통해 로그인 없이, 인증 없이 바로 해당 액티비티들을 호출할 수 있는 것이다. am start co..
Intent 4가지 컴포넌트들이 서로 호출, 메시지 및 데이터를 수신하는 역할 수행 명시적(explicit) intent : 수신 대상을 구체적으로 명시 Intent i = new Intent(FirstActivity.this, SecondActivity.class); startActivity(i); 암시적(implicit) intent : 수신 대상을 명시하지 않고 호출 Intent i = new Intent("blah"); startActivity(i); -> startActivity(intent)가 아닌 this.sendBroadcast(intent)를 사용하는 경우 암시적 intent를 모든 apk에 브로드캐스트하게 된다. 즉, 드로저에서도 intent가 도착하면 스니핑이 가능하다는 것이다. 인시..