반응형

전체 글 574

안드로이드 취약점 진단(4) - 콘텐츠 프로바이더 취약점

안드로이드 앱에서 다른 애플리케이션에서 자신의 데이터에 접근하는 것을 금지하고 있다. 그러나 콘텐츠 프로바이더를 이용하여 자신의 데이터에 다른 애플리케이션이 접근하거나 부여한 권한대로 이용하도록 할 수 도 있다. 콘텐츠 프로바이더는 다른 애플리케이션의 데이버베이스나 파일에 접근 할 수 있는 인터페이스를 제공하며, 주로 프로세스 간 통신(IPC: Inter-Process Communication)으로 다른 애플리케이션과 데이터를 공유한다. 콘텐츠 프로바이더에 접근하기 위해서는 프로바이더 URI와 콘텐츠 리졸버가 필요하다. 타 앱에서 콘텐츠 리졸버를 사용해서 공격 타켓 대상에 대한 콘텐츠 프로바이더 URI로 접근한다. Content Provider 주소는 "content://aurh/path" 형태로 나타난..

안드로이드 취약점 진단(3) - 액티비티 컴포넌트 취약점

액티비티란 애플리케이션 실행 시 나타나는 화면이라고 생각하면 좋다. 안드로이드 모바일 앱은 " 메인 액티비티" 가 존재하고 메인 액티비티는 애플리케이션 시작 시 나타는 화면이다. 새로운 액티비티가 나오게되면 이전 실행되었던 액티비티는 잠시 멈추고 새로운 액티비티가 실행된다. 그리고 뒤로가기 실행 시 세컨 액티비티는 사라지고 메인 액티비티가 나오게된다. 해당 취약점은 권한이 없는 사용자가 특정 액티비티에 접근하여 권한 없이 특정 기능을 활성화 할 수 있는 취약점을 말한다. -- 취약점 진단 방법 -- 1. androidmanifest.xml 확인 - 내 선언되어 있는 액티비를 확인 - android:name 속성은 액티비티 이름, 속성 값은 "com.android.insecurebankv2.ChangePa..

안드로이드 취약점 진단(2) - 취약한 인증 메커니즘(activity 취약점)

취약한 인증 메커니즘 취약점은 정상적인 절차를 우회하여 잘못된 인증으로 접근 권한을 취득하는 취약점을 말한다. 일반적으로 아래와 같은 취약점을 말한다. - 적절하지 않은 앱 퍼미션 설정 여부 - 서비스 권한 상승 행위에 대한 통제 여부 - 기능에 대한 제한 또는 우회 금지 여부 - 불필요하거나 사용하지 않는 액티비티 제거 여부 - 인텐트 사용에 대한 안정성 여부 - 마스터 키 취약점 대응 여부 -- 취약점 진단 방법 -- 1. androidmanifest.xml 내부 선언 확인 2. adb를 사용하여 액티비티 호출 - adb shell am start [앱 주소]/[호출 패키지 주소] 명령어 : adb shell am start com.android.insecurebankv2/com.android.ins..

안드로이드 취약점 진단(1) - 브로드캐스트 리시버 취약점

브로드캐스트 리시버(Broadcast Receiver)는 안드로이드 디바이스에서 이벤트가 발생하면 브로드캐스트 리시버 신호를 보내게 되는데, 이 신호를 받아 처리하는 역할을 수행한다. 신호를 받는 경우 애플리케이션에 정의해 놓은 작업을 수행한다. => 이 작업은 브로드캐스트 리시버를 상속받은 메서드에서 처리한다. AndroidManifest.xml의 , 항목에 선언된다. -- 취약점 진단 방법 -- 1. Manifest 확인 - 브로드캐스트 리시버 이름 : theBroadcast - 신호를 받으면 MybroadcastReceiver에 설정된 작업을 수행 - exported : true => 그렇기 때문에 외부 애플리케이션으로 부터 intent를 받을수 있다. 2. MybroadcastReceiver sm..

드로저(drozer) 사용법 - 취약점 분석(1)

==인시큐어 뱅크라는 앱을 통한 테스트 수행== 입력 명령어 : run app.package.attacksurface >> 결과 : 노출된 취약점을 표시해줌 >> 사용하는 명령어는 액티비티 노출, 브로드캐스트 취약점, 컨텐츠 프로바이더, 서비스 노출 취약점을 찾아준다. 입력 명령어 : run app.activity.info -a com.android.insecurebankv2 >> 결과 : 입력한 패키지에 대한 activity 목록 출력 입력 명령어 : run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.ChangePassword >> 결과 : 입력한 액티비티를 실행 >> 위 결과는 실제로 비밀번호..

드로저(drozer) 사용법 - 앱 패키지 정보 확인

입력 명령어 : run app.package.list >> 결과 : 디바이스에 설치된 모든 앱의 패키지명을 출력 입력 명령어 : run app.package.list -f >> 결과 : 입력한 단어가 포함되어 있는 패키지 명을 출력 입력 명령어 : run app.package.info -a com.mwr.dz >> 결과 : 입력한 패키지에 대한 기본적인 정보를 출력 ** 추가적인 쓸만한 명령어 명령어 : run app.package.info -p android.permission.INTERNET >> 결과 : 앱에서 허용하고 있는 퍼미션 중 "android.permission.INTERNET" 있는 리스트 출력 명령어 : run package.manifest >> 입력한 앱에 대한 manafest.xml..

모바일 앱 취약점 진단 드로저(drozer) 설치 및 세팅 방법

드로저는 안드로이드 가상 디바이스 또는 단말기에 에이전트를 설치하고 PC에서 ADB로 명령을 내리는 서버와 클라이언트 방식으로 동작한다. 1. 다운로드 - PC에 드로저 다운로드 - 단말기에 apk 삽입 https://github.com/WithSecureLabs/drozer/releases/tag/2.4.4 Release 2.4.4 · WithSecureLabs/drozer [Build Process] AppVeyor updated to deploy Windows installer [Build Process] Fixed versioning of whl, deb and rpm packages [Bug Fixes] Several bug fixes github.com https://labs.withsecur..

nox를 활용한 frida attach 시 발생하는 오류 해결 방안

안드로이드 모바일 앱 분석를 위해 nox를 사용하여 frida 후킹 시 발생하는 오류 해결 방안 사용하는 frida attach 코드는 아래와 같음 import frida, sys import argparse def on_message(message, data): if message['type'] == 'send': print(message['payload']) elif message['type'] == 'error': print(message['stack']) def get_message_from_js(message, data): print(message['payload']) def get_script(script_name): with open("./"+script_name, 'r') as f: scr..

안드로이드 필수 구성 요소

안드로이드는 액티비티(Activity), 서비스(Service), 콘텐츠 프로바이더(Content Provider), 브로드캐스트 리시버(BroadCast Reciver)라는 네 가지 주요 기능으로 구성되어 있다. 1. 액티비티(Activity) 액티비티는 사용자에게 보어주는 디바이스의 인터페이스다. 화면은 메뉴를 클릭하거나 버튼을 클릭하는 등과 같은 특정한 액션에 의해 전화되는데, 각 화면이 모두 액티비티라고 할 수 있다. 안드로이드 환경에서 액티비티는 대체로 하나의 화면에서 표시된다. 예를 들어 메인 화면(Main Activity)에서 하나의 버턴을 클릭하면 다음 페이지(Second Activity)로 접근할 수 있으며, 그 다음에 다른 액션에 의해 다른 엑티비티들이 실행되어 사용자 화면에 나타난다...

Server-side Template Injection(SSTI) template 별 점검 방법

Template 별 점검 방법 * Smarty (unsecured) - PHP - 기본 Injection 확인 구문 >> {5*5} //연산 결과 : 25 >> a{*comment*}b //주석 결과 : ab - PHP 코드를 사용하는 구문 {php}$d="bHM=";system(base64_decode(str_pad(strtr($d,'-_','+/'), strlen($d)%4,'=',STR_PAD_RIGHT)));{/php} >> ls 명령어를 base64로 인코딩하여 명령어 실행 - Smarty 문법 구문 >> {include file = '/etc/passwd'} >> {include_php file='/etc/passwd'} * Twig(> {{5*5}} // 연산 결과 : 25 >> {{5*"5..