목록AOS (64)
Self-Improvement
■ 사용자 정보 목록화 이슈시스템의 어떠한 인증 체계에 취약점이 존재하여 공격자가 시스템에 존재하는 사용자 계정 목록을 흭득할 수 있는 취약점을 말한다. 사용자 계정은 로그인 시 잘못된 인증 시도를 하더라도 계정의 존재 여부가 알려지는 것은 위험하다. 전의 취약점 실습과 같은 환경에서 진행을 하며 로그인 화면에서 ID:test, Password:1234로 로그인을 하는 과정에서의 출력되는 시스템 메시지를 확인해본다.response패킷을 확인해보니 ”User Does not Exist“인 존재하지 않는 아이디라고 메시지가 출력 되어지는 취약점이 존재하게 된다. 또한 이번에는 존재하는 계정인 ID:jack으로 하며 Password는 틀리게 1234로 다시 로그인을 해본다.response패킷을 확인해보니 이번..
■ 인자 전달값 조작안드로이드 애플리케이션에서 요청하는 값을 중간에서 가로챈 후 매개변수값을 변조하여 전송하는 행위로 본래의 요청값이 변조된 값으로 수정되고 민감한 정보가 포함된 요청이라면 정보 유출의 위험성이 존재하게 되는 취약점이다. 안전하지 않은 HTTP 취약점과 같이 BurpSuite에서 프록시를 설정하고 핸드폰에서 프록시를 설정하여 request, response 패킷을 확인을 해본다.InsecureBankv2 애플리케이션을 통해 Transfer 계좌이체를 진행하는 과정에서 계좌 정보를 얻어오기를 하였다. response 패킷을 확인해보니 to:5555555555 from:999999999의 데이터를 받아오고 있었다. 이를 중간에서 from의 값을 abd로 변경한뒤에 Forward 버튼을 눌러 ..
■ 안전하지 않은 HTTP 통신HTTP로 계정 아이디, 비빌번호, 개인 정보, 거래 정보 등의 데이터 전송시 평문으로 보내게 되어 노출이 되어지는 취약점이 존재한다. 공격자는 스니핑, 스푸핑 공격을 할 수 있으며 중요 정보는 SSL/TLS 통신을 적용하여 암호화된 데이터로 안전하게 전송해야 한다. BurpSuite을 통해 프록시 설정을 진행한다. 설정 시 본인의 IP와 포트번호를 지정하여 설정해준다. 다음엔 핸드폰의 Wifi 고급 설정에서 BurpSuite에서 설정한 IP와 포트번호를 적어준다. 이제 InsecureBankv2 애플리케이션에서 jack, Jack@123$으로 로그인을 하는 과정의 패킷을 확인하여 평문으로 노출이 되어진느지 암호화가 되어지는지 확인을 해본다.request패킷을 확인해보니 P..
■ 안드로이드 백업 취약점안드로이드 시스템에서는 기본적으로 설치된 애플리케이션의 데이터를 백업하고 복구를 제공한다. 백업에는 클라우드 백업과, 백업 데이터를 사용자 PC에 저장할 수 있게 해주는 전체 백업을 지원한다. 클라우드 백업은 안드로이드 시스템에서 동기화 주기를 설정함으로써 자동으로 애플리케이션 데이터나 설정 등을 구글 클라우드와 동기화하도록 설정한다. 사용자는 직접 데이터를 관리하지 않지만 구글 클라우드에서 비교적 안전하게 관리해주기에 외부로부터의 유출이 적다는 장점이 있다. 하지만 전체 백업의 경우에는 저장된 파일이 외부로 유출될 가능성이 있으므로 보안에 취약하다. 전체 백업은 AndroidManifest.xml 파일에서 설정을 할 수있다. AndroidManifest.xml에서 allowBa..
■ 애플리케이션 디버깅 취약점애플리케이션 디버깅 취약점은 안드로이드 디버깅 모드의 설정 여부에 따라 발생이 되며 기본적으로 디버깅 모드는 애플리케이션이 제작되는 과정에서 주로 사용이 되어진다. 완성된 애플리케이션을 배포할 때는 기본적으로 AndroidManifest.xml파일에 false로 지정되어 있어 디버깅이 불가능하도록 설정되지만 개발자들이 개발 중에 편의상 디버깅 옵션을 true로 지정하여 취약점이 발생할 수 있다. 먼저 drozer로 손쉽게 디버깅 모드의 여부를 확인할 수 있다..dz> run app.package.attacksurface com.android.insecurebankv2 맨아래의 “is debuggable“으로 보아 디버깅 모드가 true로 되어있는걸로 추측이 되어진다.adb을 ..
■ 취약한 웹 뷰 구현웹 뷰는 안드로이드 개발 시 주로 웹 브라우저에서 보이는 화면을 표시하거나 웹 애플리케이션 혹은 하이브리드 애플리케이션을 개발할 때 사용된다. 웹 뷰는 안드로이드 내부 모듈인 웹킷 렌더링 엔진을 사용해 자바스크립트를 지원하여 UI 또는 패킷에서 자바스크립트 코드가 강제적으로 실행되게 함으로써 다른 사용자의 중요 정보를 탈취하는 취약점으로 크로스 사이트 스크립팅 공격과 유사하다. 먼저 WebView가 쓰여지는 부분을 찾아서 확인을 한다.ViewStatement.java ViewStatementr 화면에서 Webview를 사용하고 있음으로 Transfer에서 간단한 스크립트 구문을 삽입하여 전송을 해본다. ViewStatement 화면에서 확인해보니 스크립트 구문이 필터링 없이 서버에 ..
■ 안전하지 않은 콘텐츠 프로바이더 취약점콘텐츠 프로바이더를 이용하면 자신의 데이터에 다른 애플리케이션이 접근하거나 부여한 권한대로 이용하도록 할 수 있다. 또한 다른 애플리케이션의 데이터베이스나 파일에 접근 할 수 있는 인터페이스를 제공하며 주로 프로세스 간 통신으로 다른 애플리케이션과 데이터를 공유한다. 콘텐츠 프로바이더는 AndroidManifest.xml 파일에 로 선언이 되어진다.먼저 콘텐츠 프로바이더에 접근하기 위해서는 콘텐츠 프로바이더의 주소인 URI와 콘텐츠 리졸버가 필요하다. 콘텐츠 리졸버는 다른 애플리케이션의 콘텐츠 프로바이더에 접근할 수 있게 해주며 이때 콘텐츠 프로바이더의 주소인 URI가 필요하게 되어진다. drozer을 통해 외부로 노출되어있는 콘텐츠 프로바이더를 확인해본다.dz>..
■ 로컬 암호화 취약점안드로이드 애플리케이션은 실행되는 도중에 특정 정보들을 저장해야 할 때가 있다. 개인 정보와 같이 민감한 정보를 저장해야 할 경우에는 어떠한 방법으로 저장해야 할 것인지 고민해 보며 만약 평문으로 저장하면 정보가 공격자에게 노출이 될 것이다. drozer로 InsecureBankv2의 데이터 디렉터리 경로를 확인해본다.dz> run app.package.info –a com.android.insecurebankv2 데이터 디렉터리 경로는 “/data/user/0/com.android.insecurebankv2”을 확인할 수 있다.adb 도구를 이용하여 데이터 디렉터리 경로의 간단한 값을 저장하기위한 shared_prefs 폴더에 존재하는 파일들을 모두 확인을 한다. SharedPre..
■ 액티비티 컴포넌트 취약점안드로이드 액티비티는 애플리케이션을 구성하는 가장 기본적인 구성 단위 중 하나로 안드로이드 애플리케이션과 사용자 간의 상호 작용에 필요한 기능에 제공한다. 액티비티는 AndroidManifest.xml에 로 선언이 되어진다.dz> run app.package.attacksurface com.android.insecurebankv2 drozer로 Insecurebankv2 애플리케이션의 취약점을 확인해보니 외부에 노출된 5가지의 activity가 존재하며 더 자세한 5개의 activity을 확인해본다.dz> run app.activity.info –a com.android.insecurebankv2 5가지의 activity가 출력이 되어진걸 확인해보니 이중에서 ChangePass..
■ 브로드캐스트 리시버 취약점안드로이드 시스템의 중요한 요소 중 하나로 안드로이드 디바이스에서 이벤트가 발생하면 브로드캐스트 신호를 보내게 되는데 이 신호를 받아 처리하는 역할을 수행한다. 브로드캐스트 리시버를 호출할 때 발생하는 브로드캐스트가 정상이면 부팅 완료, 문자 메시지 송/수신, 배터리 상태 등을 나타내는 시스템 이벤트이지만 악의적인 목적을 갖고 수행하는 경우에는 사용자가 받는 알림 등을 중간에서 가로채는 행위를 할 수 있으며 특정한 상황에서만 발생하는 작업을 우회하여 수행하도록 조작할 수 있다. drozer 도구로 InsecureBankv2 애플리케이션의 브로드캐스트 리시버의 취약점이 존재하는지 확인한다.dz> run app.package.attacksurface 확인해보니 1개의 브로드캐스트..