hacktricks/mobile-pentesting/android-app-pentesting/bypass-biometric-authentication-android.md

97 lines
7.6 KiB
Markdown
Raw Normal View History

2024-04-06 18:36:54 +00:00
# Bypass Biometric Authentication (Android)
2024-02-08 03:06:37 +00:00
2022-10-26 09:06:33 +00:00
<details>
2024-02-10 21:30:13 +00:00
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
2022-10-26 09:06:33 +00:00
2024-02-10 21:30:13 +00:00
* **사이버 보안 회사**에서 일하시나요? **회사를 HackTricks에서 광고**하거나 **PEASS의 최신 버전에 액세스**하거나 **HackTricks를 PDF로 다운로드**하고 싶으신가요? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인해보세요!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견해보세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
2024-04-06 18:36:54 +00:00
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter**에서 **팔로우**하세요 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* \*\*[hacktricks repo](https://github.com/carlospolop/hacktricks)와 [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)\*\*에 PR을 제출하여 여러분의 해킹 기법을 공유하세요.
2022-10-26 09:06:33 +00:00
</details>
2024-02-10 21:30:13 +00:00
## **Method 1 - 암호 객체 사용 없이 우회하기**
2022-10-26 09:06:33 +00:00
2024-04-06 18:36:54 +00:00
여기서 주목해야 할 것은 인증 프로세스에서 중요한 _onAuthenticationSucceeded_ 콜백입니다. WithSecure의 연구원들은 \*onAuthenticationSucceeded(...)\*에서 NULL _CryptoObject_를 우회할 수 있는 [Frida 스크립트](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass.js)를 개발했습니다. 이 스크립트는 해당 메서드가 호출될 때 지문 인증을 자동으로 우회하도록 강제합니다. 아래는 Android 지문 컨텍스트에서 우회를 보여주는 간소화된 코드 스니펫입니다. 전체 애플리케이션은 [GitHub](https://github.com/St3v3nsS/InsecureBanking)에서 확인할 수 있습니다.
2022-10-26 09:06:33 +00:00
```javascript
biometricPrompt = new BiometricPrompt(this, executor, new BiometricPrompt.AuthenticationCallback() {
2024-02-10 21:30:13 +00:00
@Override
public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) {
Toast.makeText(MainActivity.this,"Success",Toast.LENGTH_LONG).show();
}
2022-10-26 09:06:33 +00:00
});
```
2024-04-06 18:36:54 +00:00
2024-02-10 21:30:13 +00:00
Frida 스크립트를 실행하는 명령어:
2024-04-06 18:36:54 +00:00
2024-02-03 14:45:32 +00:00
```bash
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js
2022-10-26 09:06:33 +00:00
```
2024-04-06 18:36:54 +00:00
2024-02-10 21:30:13 +00:00
## **Method 2 - 예외 처리 접근 방식**
2022-10-26 09:06:33 +00:00
2024-04-06 18:36:54 +00:00
다른 [Frida 스크립트](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass-via-exception-handling.js)인 WithSecure의 스크립트는 보안이 취약한 암호 객체 사용 우회에 대해 다룹니다. 이 스크립트는 지문으로 인증되지 않은 _CryptoObject_를 사용하여 _onAuthenticationSucceeded_를 호출합니다. 애플리케이션이 다른 암호 객체를 사용하려고 하면 예외가 발생합니다. 이 스크립트는 _Cipher_ 클래스에서 _javax.crypto.IllegalBlockSizeException_을 처리하고 _onAuthenticationSucceeded_를 호출하며, 애플리케이션이 사용하는 후속 객체가 새 키로 암호화되도록 준비합니다.
2022-10-26 09:06:33 +00:00
2024-02-10 21:30:13 +00:00
Frida 스크립트를 실행하는 명령어:
2024-04-06 18:36:54 +00:00
2024-02-03 14:45:32 +00:00
```bash
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass-via-exception-handling.js
2022-10-26 09:06:33 +00:00
```
2024-04-06 18:36:54 +00:00
2024-02-10 21:30:13 +00:00
지문 화면에 도달하고 `authenticate()`가 시작되면, Frida 콘솔에서 `bypass()`를 입력하여 우회를 활성화하세요:
2024-04-06 18:36:54 +00:00
2022-10-26 09:06:33 +00:00
```
2024-02-03 14:45:32 +00:00
Spawning com.generic.insecurebankingfingerprint...
[Android Emulator 5554::com.generic.insecurebankingfingerprint]-> Hooking BiometricPrompt.authenticate()...
2022-10-26 09:06:33 +00:00
Hooking BiometricPrompt.authenticate2()...
Hooking FingerprintManager.authenticate()...
2024-02-03 14:45:32 +00:00
[Android Emulator 5554::com.generic.insecurebankingfingerprint]-> bypass()
2022-10-26 09:06:33 +00:00
```
2024-04-06 18:36:54 +00:00
2024-02-10 21:30:13 +00:00
## **메소드 3 - Instrumentation Frameworks**
2022-10-26 09:06:33 +00:00
2024-02-10 21:30:13 +00:00
Xposed 또는 Frida와 같은 Instrumentation 프레임워크를 사용하여 런타임에서 애플리케이션 메소드에 훅을 걸 수 있습니다. 지문 인증에 대해서는 이러한 프레임워크를 사용하여 다음을 수행할 수 있습니다:
2024-02-03 14:45:32 +00:00
2024-02-10 21:30:13 +00:00
1. **인증 콜백 모의**: `BiometricPrompt.AuthenticationCallback``onAuthenticationSucceeded`, `onAuthenticationFailed`, 또는 `onAuthenticationError` 메소드에 훅을 걸어 지문 인증 프로세스의 결과를 제어할 수 있습니다.
2. **SSL Pinning 우회**: 이를 통해 공격자는 클라이언트와 서버 간의 트래픽을 가로채고 수정하여 인증 프로세스를 변경하거나 민감한 데이터를 탈취할 수 있습니다.
2024-02-03 14:45:32 +00:00
2024-02-10 21:30:13 +00:00
Frida의 예시 명령어:
2024-04-06 18:36:54 +00:00
2024-02-03 14:45:32 +00:00
```bash
frida -U -l script-to-bypass-authentication.js --no-pause -f com.generic.in
```
2024-04-06 18:36:54 +00:00
2024-02-10 21:30:13 +00:00
## **메소드 4 - 역공학 및 코드 수정**
2024-02-03 14:45:32 +00:00
2024-02-10 21:30:13 +00:00
`APKTool`, `dex2jar`, `JD-GUI`와 같은 역공학 도구를 사용하여 Android 애플리케이션을 디컴파일하고 소스 코드를 읽어들여 인증 메커니즘을 이해할 수 있습니다. 일반적으로 다음 단계를 포함합니다:
2024-02-03 14:45:32 +00:00
2024-02-10 21:30:13 +00:00
1. **APK 디컴파일**: APK 파일을 더 읽기 쉬운 형식(예: Java 코드)으로 변환합니다.
2. **코드 분석**: 지문 인증의 구현을 찾고 대체 메커니즘이나 적절한 유효성 검사 확인과 같은 잠재적인 취약점을 식별합니다.
3. **APK 재컴파일**: 지문 인증 우회를 위해 코드를 수정한 후, 애플리케이션을 재컴파일하고 서명하여 기기에 설치하여 테스트합니다.
2024-02-03 14:45:32 +00:00
2024-02-10 21:30:13 +00:00
## **메소드 5 - 사용자 정의 인증 도구 사용**
2024-02-03 14:45:32 +00:00
2024-02-10 21:30:13 +00:00
인증 메커니즘을 테스트하고 우회하기 위해 특수한 도구와 스크립트가 있습니다. 예를 들어:
2024-02-03 14:45:32 +00:00
2024-02-10 21:30:13 +00:00
1. **MAGISK 모듈**: MAGISK는 Android에서 기기를 루팅하고 지문을 포함한 하드웨어 수준의 정보를 수정하거나 위조할 수 있는 모듈을 추가할 수 있는 도구입니다.
2. **사용자 정의 스크립트**: 스크립트를 작성하여 Android Debug Bridge (ADB) 또는 애플리케이션의 백엔드와 직접 상호작용하여 지문 인증을 시뮬레이션하거나 우회할 수 있습니다.
2024-02-03 14:45:32 +00:00
2024-02-10 21:30:13 +00:00
## 참고 자료
2024-04-06 18:36:54 +00:00
2024-02-03 14:45:32 +00:00
* [https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/](https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/)
2022-10-26 09:06:33 +00:00
<details>
2024-02-10 21:30:13 +00:00
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 제로에서 영웅까지 AWS 해킹을 배워보세요<strong>!</strong></summary>
2022-10-26 09:06:33 +00:00
2024-02-10 21:30:13 +00:00
* **사이버 보안 회사**에서 일하시나요? **회사를 HackTricks에서 광고**하거나 **PEASS의 최신 버전에 액세스**하거나 **HackTricks를 PDF로 다운로드**하고 싶으신가요? [**구독 플랜**](https://github.com/sponsors/carlospolop)을 확인해보세요!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견해보세요. 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
2024-04-06 18:36:54 +00:00
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter**에서 **팔로우**하세요 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* \*\*[hacktricks repo](https://github.com/carlospolop/hacktricks)와 [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)\*\*에 PR을 제출하여 여러분의 해킹 기법을 공유하세요.
2022-10-26 09:06:33 +00:00
</details>