반응형

일상 576

클라우드 취약점 진단을 위한 기본 배경지식 (AWS기준)

AWS 주요 서비스 1. 스토리지 서비스  - Amazon simple Storage Service (Amazon S3)    >> 여러가지 용도로 사용 가능한 범용 스토리지 서비스   >> 키-값이 연결된 객체 형태로 구성   >> 보통 보안적 점검에서는 공개설정에서 발생하는 취약점 점검이 있음    2. 데이터베이스 서비스  - Amazon Relational Database Service(Amazon RDS)   >> 관계형 데이터 베이스   >> 사용자가 직접관리하지 않고 이용할수 있음 - Amazon DynamoDB   >> NoSQL용 서비스로 대량의 데이터를 저장, 추가 분석 서비스와 연계 가능하도록 서비스 제공    3. 서버리스 서비스  - Lambda   >> 코드를 소유하지 않아도 실..

정보보안관련 추천 서적 (입문부터 고급, 학생부터 실무자 까지)

정보보안 실무에서 근무하며, 읽었던 책/추천받은책/읽으려고 준비하던 서적을 기준으로 작성하였습니다.해당 구매 링크에서는 자세한 설명이 없으니, 도서관련 사이트에서 상세 내용 및 목차를 확인하고 해당 링크에서 구매하셔서 공부하시면 됩니다. 1. 버프스위트 활용과 웹 모의해킹  - 대상 : 초급자  - 분야 : 웹/앱 모의해킹 및 취약점 진단, 응용부분에 대한 취약점 진단  - 책 내용 : 취약점 진단에 필수적인 프로그램인 버프스위트에 대한 사용 설명으로 매번 사용하던 기능뿐 아니라 다양한 기능을 설명해줌  - 저자 : 조정원  - 출판 : 한빛미디어 - 구매 링크https://link.coupang.com/a/bCG630 버프스위트 활용과 웹 모의해킹COUPANGwww.coupang.com 2. 웹 해킹을..

안드로이드 취약점 진단(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..