Notes / Mobile Security
모바일 통신·응답 변조와 권한 우회
요청·응답을 가로채 바꾸거나 클라이언트 측 검증 분기를 뒤집어 인증·권한을 우회하는 모바일 데이터 변조 진단의 개념과 확인 구문을 정리합니다.
목차
서버가 요청 값을 그대로 믿거나, 인가 판단을 클라이언트가 내리면, 요청/응답을 바꾸거나 검증 분기를 뒤집어 관리자 전환·인증 우회·검증 우회가 된다. 가로채기 환경이 서면 변조는 값 하나를 바꾸는 일이다.
개념
- 요청 변조: 로그인·주문 요청의 사용자 식별자·권한 파라미터를 바꿔 다른 사용자/관리자로 동작시킨다. 서버가 요청 값을 재검증하지 않으면 성립.
- 응답 변조: 서버 응답의 권한 플래그·결과 코드(
isAdmin=false,result=deny)를 클라이언트가 그대로 믿으면, 응답을true/allow로 바꿔 보호 화면이 열린다. 응답이 암호화면 키를 확보해 복호화·재암호화한다. - 클라이언트 측 검증 우회: 권한 체크·문자열 비교(
if(input==correct))가 클라이언트에서 끝나면, 후킹으로 반환을 뒤집거나 바이너리 분기를 패치해 통과시킨다. - 비HTTP(TCP) 통신: 자체 프로토콜은 일반 프록시로 안 잡히므로 투명 프록시·중계로 가로채 변조한다.
요청: user=guest → user=admin (서버 재검증 없음)
응답: {"role":"user"} → {"role":"admin"} (클라가 그대로 신뢰)
분기: if(isAdmin) → 항상 true 로 후킹/패치
공격·우회 구문
허가된 대상에서만. 가로채기 환경은 iOS 트래픽 가로채기·SSL 피닝 우회 참고.
요청·응답 변조 (프록시)
Burp 로 요청/응답 가로채기(Intercept) 후 값 수정:
권한/식별자 파라미터 변경 → 관리자 동작 시도
응답의 권한 플래그·결과 코드 변경 → 보호 화면 진입
Match&Replace 로 반복 변조 자동화
클라이언트 검증 분기 우회 (Frida)
// 권한/문자열 비교 결과를 뒤집기
Java.perform(function () {
var C = Java.use("com.example.app.AuthManager");
C.isAdmin.implementation = function () { return true; };
C.verifyPin.overload('java.lang.String').implementation = function (p) {
return true; // 문자열 비교 우회
};
});
응답 복호화 확인
응답이 암호화면: 앱 내 복호화 함수를 후킹해 평문 관찰
또는 키·IV 를 메모리/코드에서 확보해 오프라인 복호화
복호화한 평문에서 권한 플래그·민감값 확인
확인 관점
요청의 권한·식별자 값을 서버가 재검증하는가
인가 판단이 응답 플래그에만 의존하는가(클라 신뢰)
핀/비밀번호/권한 비교가 클라이언트에서 끝나는가
TCP 자체 프로토콜이 변조 방지(서명·암호화) 없이 오가는가