Drozer Tutorial
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
버그 바운티 팁: 가입하세요 Intigriti, 해커를 위해 해커가 만든 프리미엄 버그 바운티 플랫폼! 오늘 https://go.intigriti.com/hacktricks에서 저희와 함께하고 최대 $100,000의 보상을 받기 시작하세요!
Sieve (mrwlabs에서)
이 튜토리얼의 일부는 Drozer 문서 pdf에서 발췌되었습니다.
호스트 내에 Drozer 클라이언트를 설치하세요. 최신 릴리스에서 다운로드하세요.
drozer APK를 최신 릴리스에서 다운로드하고 설치하세요. 현재는 이것입니다.
Agent는 포트 31415에서 실행되고 있으며, Drozer Client와 Agent 간의 통신을 설정하기 위해 포트 포워딩을 해야 합니다. 다음은 이를 위한 명령어입니다:
마지막으로, 애플리케이션을 실행하고 하단의 "ON"을 누릅니다.
그리고 연결합니다:
Commands
Description
Help MODULE
선택한 모듈의 도움말을 보여줍니다.
list
현재 세션에서 실행할 수 있는 모든 drozer 모듈의 목록을 보여줍니다. 이는 실행할 적절한 권한이 없는 모듈은 숨깁니다.
shell
에이전트의 컨텍스트에서 장치에서 대화형 Linux 셸을 시작합니다.
clean
Android 장치에서 drozer가 저장한 임시 파일을 제거합니다.
load
drozer 명령이 포함된 파일을 로드하고 순차적으로 실행합니다.
module
인터넷에서 추가 drozer 모듈을 찾아 설치합니다.
unset
drozer가 생성하는 모든 Linux 셸에 전달하는 이름이 있는 변수를 제거합니다.
set
drozer가 생성하는 모든 Linux 셸에 환경 변수로 전달될 값을 변수에 저장합니다.
shell
에이전트의 컨텍스트에서 장치에서 대화형 Linux 셸을 시작합니다.
run MODULE
drozer 모듈을 실행합니다.
exploit
Drozer는 장치에서 실행할 익스플로잇을 생성할 수 있습니다. drozer exploit list
payload
익스플로잇에는 페이로드가 필요합니다. drozer payload list
이름의 일부로 필터링하여 패키지의 이름을 찾습니다:
패키지의 기본 정보:
읽기 Manifest:
패키지의 공격 표면:
활동: 아마도 활동을 시작하고 이를 실행하는 것을 방지해야 하는 어떤 종류의 권한 부여를 우회할 수 있을 것입니다.
콘텐츠 제공자: 아마도 개인 데이터에 접근하거나 일부 취약점(SQL Injection 또는 Path Traversal)을 악용할 수 있을 것입니다.
서비스:
is debuggable: 자세히 알아보기
내보내기된 활동 구성 요소의 “android:exported” 값이 AndroidManifest.xml 파일에서 **“true”**로 설정되어 있습니다:
내보낸 활동 목록:
활동 시작:
어쩌면 활동을 시작하고 이를 실행하는 것을 방지해야 하는 어떤 종류의 권한 부여를 우회할 수 있습니다.
adb에서 내보낸 활동을 시작할 수도 있습니다:
패키지 이름은 com.example.demo입니다.
내보낸 활동 이름은 com.example.test.MainActivity입니다.
이 게시물은 여기에서 너무 커서 여기에서 별도의 페이지로 접근할 수 있습니다.
내보낸 서비스는 Manifest.xml 내에 선언됩니다:
코드 안에서 check를 위해 **handleMessage
** 함수를 찾아야 하며, 이 함수는 message를 받습니다:
app.service.send
에 대한 drozer 도움말을 확인하세요:
먼저 "msg.what" 안의 데이터를 보낸 다음, "msg.arg1" 및 "msg.arg2"를 보낼 것임을 유의하세요. 어떤 정보가 사용되고 있는지 및 어디에서 사용되고 있는지 코드를 확인해야 합니다.
--extra
옵션을 사용하면 "msg.replyTo"에 의해 해석되는 것을 보낼 수 있으며, --bundle-as-obj
를 사용하면 제공된 세부정보로 객체를 생성합니다.
다음 예제에서:
what == 2354
arg1 == 9234
arg2 == 1
replyTo == object(string com.mwr.example.sieve.PIN 1337)
안드로이드 기본 정보 섹션에서 Broadcast Receiver가 무엇인지 확인할 수 있습니다.
이 Broadcast Receivers를 발견한 후에는 코드를 확인해야 합니다. onReceive
함수에 특별히 주의하세요. 이 함수는 수신된 메시지를 처리합니다.
이 예제에서는 FourGoats apk 콘텐츠 제공자를 악용하여 사용자의 허가 없이 임의의 SMS를 비프리미엄 목적지로 전송할 수 있습니다.
코드를 읽어보면, "phoneNumber"와 "message" 매개변수를 콘텐츠 제공자에게 전송해야 합니다.
생산 APK는 절대 디버깅 가능해서는 안 됩니다. 이것은 실행 중인 애플리케이션에 자바 디버거를 연결하고, 런타임에서 검사하고, 중단점을 설정하고, 단계별로 진행하며, 변수 값을 수집하고 심지어 변경할 수 있음을 의미합니다. InfoSec institute는 애플리케이션이 디버깅 가능할 때 더 깊이 파고들고 런타임 코드를 주입하는 것에 대한 훌륭한 기사를 가지고 있습니다.
애플리케이션이 디버깅 가능할 때, 매니페스트에 나타납니다:
당신은 Drozer를 사용하여 모든 디버깅 가능한 애플리케이션을 찾을 수 있습니다:
Bug bounty tip: 해킹으로 만들어진 해킹을 위한 프리미엄 버그 바운티 플랫폼인 Intigriti에 가입하세요! 오늘 https://go.intigriti.com/hacktricks에서 저희와 함께하고 최대 $100,000의 보상을 받기 시작하세요!
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)