안드로이드 메모리 덤프 취약점 진단 인시큐어뱅크(InsecureBankv2) 앱을 실행시킨 후 ps 명령어로 pid를 찾아준다. pid처럼 보이는 숫자 4개가 연속되어있는데 첫번째 값이 인시큐어뱅크 앱의 pid 값이다. 그리고 덤프 저장을 위해 /data/data에 tmp 폴더를 생성해주었다. # ps | grep insecure # mkdir /data/data/tmp 을 사용해 hprof 확장자로 덤프를 생성해준다. # am dumpheap 18138 /data/data/tmp/insecure.hprof # exit > adb pull /data/data/tmp/insecure.hprof 그리고 strings64.exe를 사용해 내부의 문..
안드로이드 내부저장소/외부저장소 안드로이드 저장소는 내부저장소/외부저장소로 나뉘는데 여기서 외부저장소는 SD카드와 같은 이동식 저장소를 의미한다. 앱자체가 지나지케 클 경우 외부저장소에 앱을 설치하기도 하고 접근제한이 필요치 않거나 다른 앱과 공유하고 싶은 파일이 있을 경우 해당 파일을 외부저장소에 저장하기도 한다. 내부저장소는 다른 앱이 접근하지 못하지만 SD카드는 설정에 따라 외부에서도 접근할 수 있는 저장소이기 때문에 SD카드에 중요정보가 노출될 수 있는 가능성이 존재한다. SD카드 저장소는 /sdcard 에서 확인할 수 있다. 안드로이드 SD 카드 저장 취약점 진단 AndrioidManifest.xml 을 확인하면, "WRITE_EXTERNAL_STORAGE" 와 "READ_EXTERNAL_STO..
개발자 백도어 취약점 백도어는 워낙 큰 개념이라 정의하기 나름인 느낌이지만 일반적인 인증을 거치지 않고 접속하는 방법이라고 할 수 있다. 보안에서의 백도어는 서버해킹 후 원격에서 쉽게 접속하려고 포트를 열어놓는 느낌이라면 개발자 백도어는 유지보수를 하거나 할 때 시간을 단축할 목적으로 만들어놓는 경우이다. 개발자 백도어 취약점 진단 과정 침해과정 분석이 아니므로 열린 포트가 있는지 등을 확인하는 문제는 아니고 인증 부분 관련 소스를 보고 인증을 우회하거나 피할 수 있는 로직?이 있는지 확인해야 한다. 자바 코드는 아직도 보기가 힘들지만, username이 devadmin인지 확인하고 맞으면 httpPost2에 대한 응답값을 내려주고 있다. 비밀번호 없이 devadmin ID 입력만으로 로그인에 성공하는 ..
HTTP 통신과 파라미터 조작 취약점을 하나로 묶어 포스팅하려 한다. 인시큐어뱅크(InsecureBankv2)의 깃허브에 나와있는 취약점 명칭 그대로 썼는데 KISA에서 나온 가이드 기준으로 보면, '중요정보 평문 전송 취약점'이라고 할 수 있을 것 같다. HTTP 통신 및 파라미터 조작 취약점 진단 요즘 HTTP 통신을 하는 곳이 있을까 싶을정도로 HTTP 통신은 보안을 전혀 고려하지 않은 프로토콜이라는 것은 보안을 하는 사람이라면 누구나 알고있을 것이다. 평문 전송을 하기 때문에 정보 유출은 당연하고 입력값 검증을 하지 않는다는 가정하에 조작도 가능하게 된다. 먼저, 프록시 설정부터 수행해준다. 녹스 에뮬레이터 기준으로 설정>WiFi 에서 WiredSSID 를 길게 클릭하면 아래와 같이 WiredSS..
안드로이드 웹뷰 (Webview) 취약점 웹뷰는 웹페이지를 보여주는 뷰(view) 기능을 하는 안드로이드 컴포넌트 중 하나로, 자바스크립트를 지원하기 때문에 잘못 구현할 경우 웹의 XSS와 같은 취약점이 발생할 수 있다. 안드로이드 웹뷰 (Webview) 취약점 진단 디컴파일된 jar파일을 JD-GUI로 열어 webView가 사용된 곳을 확인해보자. ViewStatement 클래스의 onCreate 함수에서 webView가 사용되고있다. 이전에 인시큐어뱅크 앱의 Transfer 기능을 사용해보면서 이체 기록이 'View Statement'에 기록이 되는 것을 확인했다. 즉, Transfer 기능에 입력할 수 있는 입력값 중 스크립트 구문을 넣으면 View Statement 확인시 클라이언트 단에서 입력해..
안전하지 않은 로깅 취약점 진단 adb devices로 연결된 디바이스를 확인한 후 로 쉘에 들어간다. 그 후 logcat을 입력하면 발생하는 로그들을 주르르르륵 출력된다. 아니면 처음부터 을 수행해도 된다. 로그인 수행 시, 아래와 같이 계정정보가 평문으로 로그에 기록되는 것을 볼 수 있다. > adb shell $ logcat 계좌이체 또한 마찬가지로 계좌이체 정보가 평문으로 로그에 기록된다. DoLogin 클래스를 확인해보면, 암호화되기 전의 유저네임과 패스워드가 로그로 기록되는 부분을 볼 수 있다. Log.d의 d는 로그 레벨로 Debug를 의미하며 Log.d의 첫번째 인자는 tag이고 두번째 인자가 로그로 출력될 메시지이다. DoTransfer는..