7.3 KiB
생체 인증 우회 (안드로이드)
{% hint style="success" %}
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
방법 1 – 암호화 객체 사용 없이 우회하기
여기서의 초점은 인증 과정에서 중요한 onAuthenticationSucceeded 콜백입니다. WithSecure의 연구자들은 NULL CryptoObject를 *onAuthenticationSucceeded(...)*에서 우회할 수 있는 Frida 스크립트를 개발했습니다. 이 스크립트는 메서드 호출 시 지문 인증을 자동으로 우회하도록 강제합니다. 아래는 안드로이드 지문 컨텍스트에서 우회를 보여주는 간단한 코드 조각이며, 전체 애플리케이션은 GitHub에서 확인할 수 있습니다.
biometricPrompt = new BiometricPrompt(this, executor, new BiometricPrompt.AuthenticationCallback() {
@Override
public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) {
Toast.makeText(MainActivity.this,"Success",Toast.LENGTH_LONG).show();
}
});
Frida 스크립트를 실행하는 명령:
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js
방법 2 – 예외 처리 접근법
또 다른 Frida 스크립트인 WithSecure는 안전하지 않은 암호화 객체 사용을 우회하는 방법을 다룹니다. 이 스크립트는 지문으로 인증되지 않은 CryptoObject와 함께 onAuthenticationSucceeded를 호출합니다. 애플리케이션이 다른 암호 객체를 사용하려고 하면 예외가 발생합니다. 이 스크립트는 onAuthenticationSucceeded를 호출하고 Cipher 클래스에서 javax.crypto.IllegalBlockSizeException을 처리할 준비를 하여, 애플리케이션에서 사용되는 후속 객체가 새로운 키로 암호화되도록 보장합니다.
Frida 스크립트를 실행하는 명령:
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass-via-exception-handling.js
지문 화면에 도달하고 authenticate()
가 시작되면, Frida 콘솔에 bypass()
를 입력하여 우회 기능을 활성화합니다:
Spawning com.generic.insecurebankingfingerprint...
[Android Emulator 5554::com.generic.insecurebankingfingerprint]-> Hooking BiometricPrompt.authenticate()...
Hooking BiometricPrompt.authenticate2()...
Hooking FingerprintManager.authenticate()...
[Android Emulator 5554::com.generic.insecurebankingfingerprint]-> bypass()
Method 3 – Instrumentation Frameworks
Xposed 또는 Frida와 같은 도구는 런타임에 애플리케이션 메서드에 후킹하는 데 사용될 수 있습니다. 지문 인증의 경우, 이러한 프레임워크는:
- 인증 콜백 모의:
BiometricPrompt.AuthenticationCallback
의onAuthenticationSucceeded
,onAuthenticationFailed
또는onAuthenticationError
메서드에 후킹하여 지문 인증 프로세스의 결과를 제어할 수 있습니다. - SSL 핀닝 우회: 이를 통해 공격자는 클라이언트와 서버 간의 트래픽을 가로채고 수정할 수 있으며, 인증 프로세스를 변경하거나 민감한 데이터를 탈취할 수 있습니다.
Frida의 예제 명령:
frida -U -l script-to-bypass-authentication.js --no-pause -f com.generic.in
방법 4 – 리버스 엔지니어링 및 코드 수정
APKTool
, dex2jar
, JD-GUI
와 같은 리버스 엔지니어링 도구를 사용하여 Android 애플리케이션을 디컴파일하고, 소스 코드를 읽고, 인증 메커니즘을 이해할 수 있습니다. 일반적인 단계는 다음과 같습니다:
- APK 디컴파일: APK 파일을 더 인간이 읽기 쉬운 형식(예: Java 코드)으로 변환합니다.
- 코드 분석: 지문 인증 구현을 찾아보고 잠재적인 약점(예: 대체 메커니즘 또는 부적절한 검증 검사)을 식별합니다.
- APK 재컴파일: 지문 인증을 우회하도록 코드를 수정한 후, 애플리케이션을 재컴파일하고 서명한 다음 테스트를 위해 장치에 설치합니다.
방법 5 – 사용자 정의 인증 도구 사용
인증 메커니즘을 테스트하고 우회하도록 설계된 전문 도구와 스크립트가 있습니다. 예를 들어:
- MAGISK 모듈: MAGISK는 사용자가 장치를 루팅하고 지문을 포함한 하드웨어 수준 정보를 수정하거나 스푸핑할 수 있는 모듈을 추가할 수 있는 Android 도구입니다.
- 사용자 정의 스크립트: Android Debug Bridge(ADB)와 상호 작용하거나 애플리케이션의 백엔드와 직접 상호 작용하여 지문 인증을 시뮬레이션하거나 우회하는 스크립트를 작성할 수 있습니다.
참고 문헌
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.