전체 글 42

정렬

정렬 - 데이터를 특정한 기준에 따라서 순서대로 나열하는 것 - 정렬 알고리즘으로 정렬 시 이진 탐색이 가능 - 선택 정렬, 삽입 정렬, 퀵 정렬, 계수 정렬 선택 정렬 - 맨 앞의 데이터와 나머지 데이터 비교해서 작은 것을 맨앞으로 교체 반복, 그 다음 데이터들도 같은 작업 반복 - 가장 원시적 - O(N^2) , 2중 반복문으로 탐색 시 대략 O(N^2) 삽입 정렬 - 첫 원소는 정렬되었다고 판단하고 그 다음 원소부터 검사, 정렬된 원소들과 비교해서 위치를 찾아 삽입 - 중간과정에도 정렬 되어있음 - O(N^2), 2중 반복문 - BEST CASE 에서는 O(N) 퀵 정렬 - 기준 데이터(피벗)를 정하고 그 기준보다 큰 데이터와 작은 데이터의 위치를 바꾸자 - 1. 첫번째 데이터가 피봇, 피봇 제외하..

애플리케이션 디버깅 취약점 & 런타임 조작

애플리케이션 디버깅 취약점 & 런타임 조작 안드로이드 앱을 구동한 후 런타임 디버깅을 통해 안드로이드 앱을 실행도중 조작할 수 있는 취약점 난독화가 안되어있다면 앱의 흐름을 더욱 쉽게 간파당할 수 있다. AndroidManifest.xml 파일에서 android:debuggable 속성이 “true”로 설정되어있는 경우 설치된 앱의 보호된 영약까지 접근이 가능하게 된다. (이 경우 메모리 덤프로 가능하게 되는 취약점이 발생한다.) 대부분 이러한 취약한 설정은 개발자들의 편의를 위한 설정으로 발생한다. 하지만 이러한 취약한 설정은 배포된 앱의 중대한 보안결함이 발생하므로 반드시 조치해야 한다.

중요 정보 메모리 노출 취약점

중요 정보 메모리 노출 취약점 앱에서 사용하는 중요한 정보들은 암호화되어 있으나 메모리로 올라오게 되면 평문으로 노출되는 취약점 중요한 정보가 암호화되어 있더라도 메모리에 올라가면서 복호화되는 것을 이용. 진단방법 Android Studio ->Tool -> Android -> Android Device Monitor 를 실행한다. 진단 대상 앱을 설치 후 중요 정보를 사용하는 기능을 사용한다. 앱의 프로세스를 Android Device Monitor 툴로 Heap 메모리를 덤프한다. 메모리 덤프한 결과를 분석한다. 사용자 아이디 jack 발견 가능 그 외에 암호화되지 않은 내용 평문으로 노출 확인 대응방안 메모리(변수)에 중요정보룰 저장할 때는 반드시 암호화해서 저장하도록 조치한다, AndroidMan..

취약한 비밀번호 변경 로직

취약한 비밀번호 변경 로직 인시큐어뱅크 앱의 비밀번호 변경 기능 사용시 취약한 인증으로 인해 제3자가 비밀번호 변경이 가능한 취약점. 실제 배포되는 앱에 이러한 취약점이 있다면 제3자가 대량의 사용자 비밀번호 변경을 통해 중요정보 및 민감정보를 획득할 수 있는 중대한 취약점. 진단방법 패킷을 캡처하는 환경을 세팅한다. 앱 구동 후 주요 기능을 살펴본다.  비밀번호 변경기능  사용자 정보 변경 기능  문자 인증 기능 캡처된 패킷의 인증정보 및 세션 등을 검토한다. 파라미터 변조 / 재생공격 등을 통해 캡처된 패킷에 대해 인증 및 세션을 검토한다. 클라이언트에서 1234로 비밀번호 변경 시도 시 비밀번호 변경 시 패킷 캡처 패킷 변조를 통해 비밀번호 1234 설정 시 서버에서 승인 성공 대응방안 중요정..

파라미터 조작

파라미터 조작 서버와 클라이언트 통신 과정 중 사용되는 변수들을 중간에서 변조할 수 있는 취약점 통신 과정에 사용되는 파라미터를 조작함으로써 부당이득을 취하거나 인증을 우회할 수 있음. 진단방법 안드로이드 단말기에 프록시 설정 HTTP 프록시로 외부 단말기에 의해 접속될 수 있도록 설정 안드로이드 단말기에서 앱을 실행하여 통신 과정 중 사용되는 패킷 캡처 HTTP 프록시를 사용하여 진단 틀린 패스워드를 입력했을 때 서버 응답 후 전송된 패킷 Correct Credentials 로 패킷 변조 후 패킷 전송 로그인 인증이 되어야 이동 가능한 액티비티로 이동 가능 대응방안 파라미터를 암호화하여 중요한 파라미터에 대해 조작 불가능 하도록 조치  easy_install http://www.voidspace.or..

루트 노출 및 우회 취약점

루트 노출 및 우회 취약점 안드로이드는 기본적으로 보안을 위해 루트 권한을 사용자가 획득 할 수 없도록 막아놓았다. 안드로이드에 루트 권한을 사용자가 획들할 수 있도록 한 것을 “루팅”이라고 하며 이러한 단말기를 “루팅(된) 단말기”라 한다. 안드로이드 루팅 단말기는 일반적으로 보안에 취약하며, 어플리케이션에서 허가되지 않은 동작까지 수행 가능하므로 분석에 용이하다. 진단방법 루팅 된 단말기에서 앱 실행 후 반응 확인 코드에서 “su”, “superuser” 문자열 검색 후 코드 상세 분석 (단말기 루팅여부 체크하는 과정) 루팅된 단말기에서만 실행이 가능한 프로그램 실행해서 실행되면 루팅되었다 판단 apk 파일만 있는 경우 디컴파일 통한 소스코드 추출 후 분석 리패키징 후 문자열을 제거하여 루트 우회 대..

개발자 백도어 취약점

개발자 백도어 취약점 개발 단계 시 개발자가 편의를 위해 개발자 자신만이 들어갈 수 있는 계정이나 인증 우회 방법을 말한다. 주로 개발단계 시 사용하지만 잘못된 빌드 프로세스로 배포용 어플리케이션 또는 서버에 개발백도어 코드가 삽입되면 보안에 중대한 취약점이 발생한다. 진단 방법 클라이언트 부분에서 로그인 부분의 소스코드를 상세 분석 유저 이름이 devadmin이면 /devlogin 으로 접속 패스워드에 관계없이 로그인 성공, 클라이언트단에서 인증을 우회하면 아이디가 devadmin이 아니더라도 /devlogin에 접속 시 로그인 성공 서버 부분에서 로그인 처리 부분의 소스코드를 상세 분석 코드 분석을 바탕으로 백도어 사용 후 검증 대응방안 배포용 어플리케이션 빌드 전 개발 백도어 코드 제거 서버 어플리..

애플리케이션 패칭 취약점

애플리케이션 패칭 취약점 클라이언트 어플리케이션 보안이 요구되는 현 시점에서 가장 문제가 많은 취약점 중 한가지 (exe -> 바이너리 변조와 유사하나 더 쉬움- 눈에 잘 보여서) 안드로이드의 클라이언트 코드를 변경하여 비정상적인 작동을 유도하도록 APK 파일을 변조 및 수정(리패키징) 서버 인증이 아닌 클라이언트 단의 인증을 우회함으로써 여러가지 인증 절차를 무력화 시킬 수 있음 진단 방법 APK 파일에서 자바 코드 추출  dex2jar, jd-gui 사용 난독화 적용 여부 체크  에러기반 난독화(리패키징 방지 솔루션) : apkprotect (APK 파일에서 자바 코드 추출 방지)  코드 난독화 : proguard (클래스명 변경 등)  멀티덱스 난독화 : 외부 상용 솔루션 (두개의 APK 파..

안드로이드 페이스트보드 취약점

진단방법 진단 대상 안드로이드 앱에서 취약하거나 또는 중요한 항목을 복사 adb shell su service call clipboard 2 s16 com.android.inscurebankv2 명령을 이용하여 페이스트보드 검사 user name 확인 (u0_a63) 대응방안 중요한 데이터는 가급적 복사하지 않고 직접 입력. 앱 UI 설계 시 중요한 데이터는 복사하지 못하도록 Password Text Edit View로 제작

취약한 로깅 메커니즘

취약한 로깅 메커니즘 로그(Log)는 프로그램 구동 시 프로그램의 현재 상태, 처리하는 데이터 정보를 말한다. 로그를 통해 관리자나 개발자는 중요한 정보를 제공받을 수 있으며 특히, 프로그램에 버그(취약점)가 있을 때 이를 유지보수 하는데 사용할 수 있다. 취약한 로깅 메커니즘은 이러한 로그에 노출되어서는 안되는 중요한 데이터 또는 민감한 데이터가 로그로 남겨지는 경우를 말한다. 진단방법 로그 수집기를 실행하고 앱의 여러가지 기능 사용 로그 수집기에서 단어 검색을 통한 중요 데이터 또는 민감 데이터 검색 안드로이드 스튜디오에서 제공하는 Logcat을 사용하여 진단 소스코드에서 로그 관련 코드 상세 분석 안드로이드 로그의 등급  V (Verbose) : 중요하지 않은 정보  I (Info) : 일반 정..