[AndroGoat]-Emulator_Detection

김치찜·2026년 9월 3일

android

목록 보기
2/12
post-thumbnail

1. 문제 분석

androidmenifest.xml 파일을 살펴보다 해당 문제에 맞는 Activity를 발견하여 들어갔다.

<activity
	android:label="@string/emulator"
    android:name="owasp.sat.agoat.EmulatorDetectionActivity"/>

가장 메인이 되는 isEmulator 메서드를 boolean 으로 검증하고 있어 살펴보니

# owasp.sat.agoat.EmulatorDetectionActivity
private final boolean isEmulator() {
        String buildDetails = (Build.FINGERPRINT + Build.DEVICE + Build.MODEL + Build.BRAND + Build.PRODUCT + Build.MANUFACTURER + Build.HARDWARE).toLowerCase();
        Intrinsics.checkNotNullExpressionValue(buildDetails, "this as java.lang.String).toLowerCase()");
        return StringsKt.contains$default((CharSequence) buildDetails, (CharSequence) "generic", false, 2, (Object) null) || StringsKt.contains$default((CharSequence) buildDetails, (CharSequence) EnvironmentCompat.MEDIA_UNKNOWN, false, 2, (Object) null) || StringsKt.contains$default((CharSequence) buildDetails, (CharSequence) "emulator", false, 2, (Object) null) || StringsKt.contains$default((CharSequence) buildDetails, (CharSequence) "sdk", false, 2, (Object) null) || StringsKt.contains$default((CharSequence) buildDetails, (CharSequence) "vbox", false, 2, (Object) null) || StringsKt.contains$default((CharSequence) buildDetails, (CharSequence) "genymotion", false, 2, (Object) null) || StringsKt.contains$default((CharSequence) buildDetails, (CharSequence) "x86", false, 2, (Object) null) || StringsKt.contains$default((CharSequence) buildDetails, (CharSequence) "goldfish", false, 2, (Object) null) || StringsKt.contains$default((CharSequence) buildDetails, (CharSequence) "test-keys", false, 2, (Object) null);
    }
  • FINGERPRINT
  • DEVICE
  • MODEL
  • BRAND
  • PRODUCT
  • MANUFACTURER
  • HARDWARE

build 문자열을 합쳐 그 문자열에 generic, emulator, sdk, x86, goldfish, test-keys 이 키워드가 하나라도 들어간다면(||) True를 반환한다.

  • True -> 애뮬레이터 맞다
  • False -> 실제 기기로 판단

2. 익스플로잇

해당 메서드를 호출해서 return 값이 false가 되게 끔 익스 코드를 짜준다.

console.log("start");
Java.perform(function () {
    const EmulatorDetectionActivity = Java.use(
        "owasp.sat.agoat.EmulatorDetectionActivity"
    );
    EmulatorDetectionActivity.isEmulator.implementation = function(){
        return false;
    };
});
console.log("fin");

결과 확인

profile
I can't melt an IGLOO

0개의 댓글