본문 바로가기

프로그래밍 놀이터2037

#5 모바일 앱 보안 강화 - 안드로이드 모바일 앱 모의해킹 5.1. 시큐어 코딩 개요 -시큐어 코딩이란 개발 단계에서 보안 취약점을 사전에 제거하여 안전한 소프트웨어를 개발하는 코딩 기법으로, CENT 에서 처음 제안되어 현재는 국내외에서 다양한 표준 코딩 기법들이 발표되고 있다. -대부분의 보안 취약점은 개발자의 미숙한 코딩에서 비롯되어 발생하는 것으로, 개발 단계에서 안전하게 개발할 경우, 대부분의 보안 취약점을 예방할 수 있다.물론 프로그램 언어나, Platform적 문제나, 소프트웨어 설계상의 문제점으로 발생하는 취약점들도 있다.투자 비용 대비 가장 안전하게 소프트웨어를 개발할 수 있는 방법은 개발 단계에서 제거하는 것이다. -한국인터넷진흥원에서 발행하고 있는 시큐어 코딩 가이드는 다음과 같다. 소프트웨어 개발 보안 가이드 JAVA 시큐어 코딩 가이드 C.. 2020. 11. 23.
#4 앱 자동 분석 시스템 - 안드로이드 모바일 앱 모의해킹 4.1. 샌드드로이드 -SandDroid 는 안드로이드 앱 온라인 자동 분석 시스템으로, apk 또는 zip 파일을 업로드하면 정적 및 동적 분석을 해준다. -분석이 끝나면 분석 결과를 종합하여 위험 행위 분석과 위험 점수를 알려준다. -sanddroid.xjtu.edu.cn 을 통해 수행한다. -결과물은 샌드로이드 분석 결과, 파일의 분석 시간, 해시값(추후 다시 이력을 찾을 때 사용), 패키지 이름, pcap 파일, 로그캣 정보 등이다.pcap 파일은 네트워크 트래픽을 모두 기록하여 저장한 정보이다. 4.2. QARK 4.2.1. QARK 이란? -QARK(Quick Android Review Kit)은 데프콘 23 USA 2015 라는 이름으로 발표되면서 주목받은 오픈소스 안드로이드 앱 취약점 진단.. 2020. 11. 22.
#3 취약점 항목별 상세 실습 part 2. - 안드로이드 모바일 앱 모의해킹 3.11. 안전하지 않은 로깅 메커니즘 3.11.1. 취약점 소개 -안드로이드의 커널 공간 안에 있는 로거(Logger)라는 커널 드라이브는 main, radio, event, system 이라는 네 가지 종류의 버퍼를 관리하고 있다.또한 사용자 공간에 있는 앱들은 보안 정책에 의해 커널의 버퍼에 접근할 수 없기 때문에 “/dev” 디렉터리에 리눅스 디바이스 노드들을 제공하여 앱이 로그를 읽고 쓸 수 있도록 하고 있다. -각 버퍼에 저장되는 내용은 아래와 같다.Main : 메인 앱 로그로서 앱이나 플랫폼 내부에서 android.util.Log 클래스로 기록된 로그Event : 시스템에서 발생하는 이벤트 정보를 위한 로그Radio : 이동통신망과 관련된 이벤트 로그System : 안드로이드 플랫폼 내부의 .. 2020. 11. 21.
#3 취약점 항목별 상세 실습 part 1. - 안드로이드 모바일 앱 모의해킹 3.1. 브로드캐스트 리시버 결함 3.1.1. 취약점 소개 -악의적인 목적을 갖고 수행하는 경우에는 사용자가 받는 알림을 중간에서 가로채는 행위를 할 수 있으며, 특정한 상황에서만 발생하는 작업을 우회하여 수행하도록 조작할 수 있다. 3.1.2. 취약점 진단 과정 * ADB를 이용한 브로드캐스트 생성 -> am broadcast -a actionName -n pkgName/className —es stringExtraKey stringValue * 드로저를 이용한 브로드캐스트 생성 -dz> run app.package.attacksurface pkgName// exported 된 component 들이 결과값으로 나온다. -dz> run app.broadcast.info -a pkgName// pkgNa.. 2020. 11. 20.
#2 취약점 진단 및 분석 도구 part 2. - 안드로이드 모바일 앱 모의해킹 2.2. 드로저를 활용한 취약점 진단 2.2.1. 드로저란? -드로저(drozer)는 MWR InfoSecurity 에서 개발한 모바일 앱 취약점 진단 프레임워크인 머큐리(Mercury)의 새로운 업데이트 버전이다.윈도우와 리눅스를 지원하며 JRE, JDK, 안드로이드 SDK 가 설치되어 있어야 사용할 수 있다.안드로이드 단말에 에이전트(Agent)를 설치한 후 PC 에서 ADB 로 명령을 내리는 서버와 클라이언트 방식으로 동작한다. 드로저는 가상 디바이스뿐만 아니라 실제 디바이스에서도 테스트할 수 있고 자동 테스팅도 가능하다.안드로이드 익스플로잇과 같은 다양한 시나리오를 통해 취약점을 점검할 수 있다. 2.2.2. 드로저를 활용한 앱 패키지 정보 확인 -설치된 패키지 목록을 보여준다.dz> run ap.. 2020. 11. 19.
#2 취약점 진단 및 분석 도구 part 1. - 안드로이드 모바일 앱 모의해킹 2.1. ADB 살펴보기 -ADB 는 Android Debug Bridge.안드로이드 에뮬레이터나 PC 에 실제 연결된 장치를 제어하기 위한 안드로이드 디버깅 도구 중 하나이다. -ADB 는 클라이언트, 서버, 데몬의 세 요소를 포함하는 클라이언트-서버 프로그램이다. ADB 클라이언트는 ADB 명령을 입력하는 개발 PC 이다.ADB 서버는 안드로이드 개발 시스템의 백그라운드 프로세서로, 장치의 ADB 데몬 사이의 통신을 관리한다.ADB 데몬은 장치의 백그라운드 프로세서로 동작하는 인스턴스다. -ADB 클라이언트가 시작되면 가장 먼저 ADB 서버 프로세서가 실행 중인지 점검한다.실행 상태가 아니면 서버 프로세스를 구동하며, TCP 5037 포트에 바인드 시키고, 모든 클라이언트는 5037 포트를 통해 AD.. 2020. 11. 18.
#1 안드로이드 취약점 분석 및 환경 소개 - 안드로이드 모바일 앱 모의해킹 1.1. 안드로이드 아키텍처 이해 1.1.1. 리눅스 커널 -안드로이드 운영체제는 일부를 구조적으로 변경한 리눅스 커널 2.6으로 구현되어 있다.이 레이어는 카메라, 오디오, 무선 와이파이, 키패드 드라이브 등과 같은 다양한 드라이버로 구성되어 있다. -안드로이드는 보안, 메모리 관리, 프로세스 관리, 네트워크 스택 그리고 드라이버 모델과 같은 주요 시스템 서비스를 리눅스에 의존한다.또한 커널은 하드웨어와 소프트웨어 스택의 나머지 부분 사이에서 추상화 레이어 역할을 한다. 1.1.2. 라이브러리 -리눅스 커널 위에 있는 레이어는 안드로이드의 네이티브 라이브러리다.이 라이브러리는 C/C++ 언어로 작성되었다. -라이브러리들은 리눅스 커널 내에서 프로세스로 동작한다.라이브러리는 단지 장치에 여러 종류의 데이.. 2020. 11. 17.
[Kotlin] Coroutine 소개 https://www.slideshare.net/elizarov/introduction-to-kotlin-coroutines -Coroutine 개념은 아주 오래된 녀석이다.Simula 67 이란 언어에서 처음으로 소개된 개념이다. detach : suspension statement resume : resume coroutine execution -Coroutine 은 multithreading 이 나오면서 잠시 out 되어있었다.그러나 최근에 async code 가 많이 사용되면서 다시 주목받기 시작했다. -Thread 는 resource 측면에서 high-load 이며,single thread 만 지원하는 언어들도 있으며,mutable state 가 많고, UI operation 같이 thread .. 2020. 8. 24.
[Kotlin] Coroutine 은 어떻게 동작하는가? 코루틴은 어떻게 동작하는가? -돼욍 CommentCoroutine 이 StateMachine 형태로 동작함을 rough 하게 이해할 수 있다.StateMachine 의 상태 변화에 따라 값을 save & fetch 한다는 것을 rough 하게 이해할 수 있다.Continuation 이라는 것을 재활용해 Dispatcher 를 포함한 context 를 계속 물고 갈 수 있음을 rough 하게 이해할 수 있다. -Kotlin 의 Coroutine 은 suspend 키워드로 마킹된 함수를 CPS(Continuation Passing Style)로 변환하고, 이를 Coroutine Builder 를 통해 적절한 스레드 상에서 시나리오에 따라 동작하도록 구성된다. -suspend function 은 스레드와 스케.. 2020. 8. 23.