2024년 2학기 논문분석_5주차 과제(LockPickFuzzer: ADB 기반 퍼징 기법을 활용한안드로이드 잠금 화면 메커니즘의 취약점)

2024. 11. 13. 14:13etc_study/논문 분석

LockPickFuzzer ADB 기반 퍼징 기법을 활용한 안드로이드 잠금 화면 메커니즘의.pdf
1.59MB

 

 

LockPickFuzzer: ADB 기반 퍼징 기법을 활용한 안드로이드 잠금 화면 메커니즘의 취약점

 

 

퍼징(Fuzzing)이란?

Fuzz 테스트(또는 퍼징)은 자동화 테스트로 기형/반기형적 데이터를 주입하여 소프트웨어 버그를 찾는 블랙박스 테스팅 기술이다.

 

 

ADB ( Android Debug Bridge ) 란 ?

 

[Android] adb(디버그 브릿지)란? - 설치방법,명령어

 

[Android] adb(디버그 브릿지)란? - 설치방법,명령어

안녕하세요 :) 오늘은 안드로이드 ADB에 대해 글을 써보려 해요 저도 공부하면서 쓰는 거라, 혹시 부족한 부분이나 글에 잘못된 게 있으면 알려주시면 감사하겠습니다 :) ADB(Android Debug Brige)란 ? 안

learning-e.tistory.com

 

 

안드로이드 디버깅 브릿지는 컴퓨터에 장치를 연결하고 충족하는 명령어를 입력하여 앱을 개발, 분석 혹은 앱을 설치하거나 삭제하는 등 다양한 작업을 할 수 있는 기능을 말한다.

 

간단하게 말하면, 안드로이드 장치와 통신하여 디버깅 등의 작업을 진행할 수 있는 command line tool이다.

안드로이드 SDK에도 포함되어 있으며 애플리케이션 설치, 디바이스 접속 및 관리, 파일 업 다운로드, 시스템 로그 출력, 쉘 접속 등이 가능하다.

 

 

📌논문 선정 이유

 

앱 관련 보안과 관련하여 취약점에 관심을 가지고 있었는데, 해당논문이 딱 눈에 보였다. 취약점을 공부하며 퍼징이라는 것을 많이 접하게되었는데, ADB기반으로 퍼징기법을 활용해서 안드로이드의 잠금화면과 관련한 취약점을 담고 있는 내용이라 흥미롭게 느껴져서 선정하게되었다.

 

 

📌서론

 

요약 내용

 

안드로이드 디바이스는 다양한 인증 방식을 제공하는 잠금 화면으로 사용자 데이터를 보호한다. 그러나 잠금 화면이 활성화된 상태에서도 Android Debug Bridge(ADB)를 통해 디바이스에 접근할 수 있다.

본 연구에서는 ADB의 특성을 활용하여 잠금 화면 보안 메커니즘을 우회할 수 있는 방법을 탐색하고자 한다. 이를 위해 ADB 명령어를 분석하고, 잠금 화면 보안을 무력화할 수 있는 명령어 조합을 자동으로 탐색하는 퍼징 테스트 도구인 LockPickFuzzer를 제안한다.

LockPickFuzzer의 성능을 평가하기 위해 안드로이드 14를 탑재한 갤럭시 S23과 픽셀 8을 대상으로 실험을 진행하였다. 실험 결과, 잠금 화면의 인증 정보를 탈취하거나 우회할 수 있는 두 가지 ADB 명령 조합을 발견하였다. 이 발견된 취약점에 대해 삼성 보안팀에 리포트를 제출하였고, 한 가지 ADB 명령어 조합에 대해 삼성전자에서 공식적으로 인정받았다 (SVE-2023-1344).

LockPickFuzzer는 자동으로 작동하며, 안드로이드 디바이스에서 ADB 명령어 조합으로 인한 보안 취약점을 효과적으로 탐지하는 데 기여할 것으로 기대된다.

 

 

서론 시작

 

현대 사회에서 스마트폰은 개인 업무 생활의핵심 도구로 자리 잡았으며, 이에 따라 스마트폰 데이터 보호의 중요성 또한 급증하고 있다.

사이버공격의 빈도와 정교함이 지속적으로 증가함에 따라,모바일 장치의 취약점을 악용하여 민감한 정보를 취하는 사례가 빈번해지고 있다.

 

안드로이드 디바이스는 이러한 위협으로부터 데이터를 보호하기 위해잠금 화면 기능을 제공한다. 잠금 화면은 무단 접근 방지하는 번째 방어선으로, 디바이스가 도난을당하거나 분실된 경우 중요한 개인정보와 업무 데이터를 보호하는 역할을 한다.

 

이 연구는 안드로이드 디바이스의 잠금 화면 보안을 우회할 수 있는 ADB(Android Debug Bridge) 명령어 조합을 탐색하고자 하는 목적을 가지고 있다. 잠금 화면은 다양한 인증 방식을 통해 데이터를 보호하지만, ADB와 같은 인터페이스는 여전히 디바이스 접근 경로를 제공할 수 있다. 특히, 일부 ADB 명령어 조합은 잠금 화면을 우회하거나 인증 정보를 탈취할 수 있는 취약점을 유발할 가능성이 있다.

이를 위해 연구팀은 "Critical ADB 명령어 집합"을 정의하고, 이러한 명령어 조합을 자동으로 테스트하여 보안을 무력화할 수 있는 경로를 탐색하는 퍼징 테스트 도구인 LockPickFuzzer를 개발하였다. LockPickFuzzer는 분류된 ADB 명령어 템플릿을 기반으로 테스트 케이스를 생성하고, 디바이스 정보를 활용해 초기 데이터를 구성하며, 잠금 화면 우회 또는 인증 정보 추출에 성공한 경우 최소 명령어 집합을 도출한다.

 

실험 결과, 안드로이드 14가 탑재된 갤럭시 S23과 픽셀 8에서 잠금 화면 우회 경로 두 가지를 발견했으며, 삼성 보안팀에 취약점을 리포트해 공식적으로 인정받았다 (SVE-2023-1344). 이 도구는 제조사가 잠재적 보안 취약점을 사전에 탐지하고 해결하는 데 도움을 줄 것으로 기대된다.

 

 

 

📌 본론

 

- 배경 -

 

안드로이드 잠금 화면

 

안드로이드 장치의 잠금 화면은 사용자의 개인정보 보호를 위한 중요한 보안 메커니즘으로, 초기에는 핀, 패턴, 패스워드 방식을 제공했으며, 이후 스마트 락, 지문 인식, 얼굴 인식 등으로 발전해 왔다. 그러나 잠금 화면을 우회할 수 있는 여러 취약점이 발견되었는데, 예를 들어, Schutz는 심카드의 PUK 코드를 이용한 잠금 화면 우회 방법을, Rodriguez는 구글 어시스턴트의 번역 모드를 통한 우회 방법을 제시했다. 또한, Potocky는 USB OTG와 자동 핀 시도를 통한 HID 공격을, Ertam은 딥러닝을 활용한 패턴 인식 방법을 연구했으나 범용성과 확장성에 한계가 있었다.

이러한 취약점은 스마트폰 분실 또는 도난 시 사용자 개인정보 유출, 금융 정보 도용, 중요한 데이터에 대한 무단 접근 등 심각한 보안 문제를 초래할 수 있다.

 

 

ADB (Android Debug Bridge)

 

 

 

ADB는 안드로이드 디바이스와 에뮬레이터를 관리하는 명령줄 도구로, 개발자가 애플리케이션 관리, 설정 변경, 성능 모니터링 등을 통해 디바이스 상태를 진단하고 성능을 개선하는 데 활용된다. 이 도구는 안드로이드 앱 테스트 자동화와 악성 도구 탐지에도 널리 사용되지만, 강력한 기능이 악의적 목적으로 악용될 가능성도 있다.

예를 들어, Lin 등은 화면 정보를 추출해 민감한 데이터를 수집하는 Screenmilker를, Mohamed 등은 센서 데이터를 스니핑하고 조작하는 Smashed를 개발했다. Yang 등은 로그 데이터를 이용해 계정 정보를 탈취하는 기법을, Hwang 등은 ADB를 통한 다양한 공격 유형을 정리해 보안 위협을 분석했다. 이들 연구는 ADB가 악의적으로 사용될 수 있는 가능성을 강조한다.

 

 

- 위협 모델 -

 

공격자는 도난 또는 분실된 잠금 화면이 설정된 안드로이드 디바이스에서 사용자 데이터를 탈취하고 기기를 제어하려는 목표를 가지고 있다. 이를 위해 물리적으로 디바이스에 접근할 수 있으며, ADB 사용이 가능한 상황을 가정한다.

보통 ADB를 사용하려면 USB 디버깅 모드를 활성화해야 하지만, 일부 보안 취약점을 통해 비정상적인 경로로 활성화할 수 있다. 예를 들어, Salaxy는 접근성 서비스를 악용해 USB 디버깅을 사용자 모르게 활성화하는 방법을, Tian 등은 특정 디바이스에서 AT 명령어로 USB 디버깅을 직접 활성화할 수 있는 방법을 제시했다. 또한, 공격자는 USB 디버깅 활성화를 유도하는 프로그램을 통해 사용자에게 설정을 유도할 수도 있다. 이러한 방식으로 공격자는 ADB 접근 권한을 확보할 수 있다.

 

 

 

LockPickFuzzer

 

이 장에서는 제안된 퍼징 도구 LockPickFuzzer의 실행 과정을 설명한다.

LockPickFuzzer는 데스크톱 PC에서 실행되며, USB로 연결된 안드로이드 디바이스와 ADB 인터페이스를 통해 퍼징 작업을 수행한다. 주요 과정은 아래와 같다.

 

  1. 테스트 케이스 준비: 초기 ADB 명령어 실행을 위한 테스트 케이스를 구성한다.
  2. 명령어 실행 및 데이터 수집: 무작위로 선정된 ADB 명령어를 실행하여 로그와 메모리 덤프를 수집한다.
  3. 정보 분석 및 최적화: 인증 정보 확보 또는 잠금 화면 우회가 확인되면, 명령어 집합을 최적화하여 결과 보고서를 작성한다.

 

 

 

Preprocessing

 

Fig. 6에서는 퍼징 테스트를 위한 초기 입력 데이터셋 생성 과정을 설명한다. 테스트 케이스 구성은 사전에 분류된 Critical ADB 명령어 템플릿과 테스트 디바이스의 구체적인 정보를 반영한 파라미터에 의존한다. 이를 위해 디바이스에서 데이터를 수집해 적절한 파라미터 초기값을 확보하는 과정이 필수적이다. 초기 데이터셋 생성이 완료되면, 테스트 디바이스를 초기화하고 잠금 설정을 수행한다.

 

 

➡️ 디바이스 정보 수집

 

  • 시스템 애플리케이션 정보수집
  • 시스템 프레임워크 정보수집
  • 디바이스 구성 정보 및 설정 정보수집
  • AndroidManifest.xml 분석을 통한 컴포넌트식별
  • 액티비티 및 서비스에 대한 파라미터 정보수집
  • 콘텐츠 프로바이더에 대한 파라미터 정보
  • System-effective 패키지 리스트 추출

 

 

Postprocessing

 

 

 

 

퍼징 테스트로 생성된 방대한 명령어 집합에서 실제로 잠금 화면 보안을 무력화하는 핵심 명령어를 추출하기 위해 최적화 과정이 필요하다. 이 과정에서 최종 명령어 집합 중 키 명령어를 중심으로 나머지 불필요한 명령어들을 제거한다.

최적화는 다음과 같은 단계로 진행된다.

 

  1. 명령어 집합 분할: 초기 집합을 n개의 서브 리스트로 균등하게 분할한다 (n은 2로 시작).
  2. 조합 및 테스트: 서브 리스트 중 일부를 조합하고, 여기에 키 명령어를 추가하여 testBypass 함수를 통해 보안 우회 여부를 확인한다.
  3. 결과 평가: 테스트가 성공하고 명령어 집합의 길이가 maxCommands 이하이면 최적화 과정을 종료하고 해당 집합을 반환한다.
  4. 반복 및 재분할: 실패 시 n을 증가시켜 더 작은 서브 리스트로 분할하며 반복한다.

이렇게 재귀적 접근으로, 최종적으로 보안을 무력화하는 데 필수적인 최소 명령어 집합을 식별할 수 있다.

 

 

 

- 평가 -

 

 

LockPickFuzzer Android 14 탑재한Samsung 갤럭시 S23 픽셀 8에서 테스트되었다.

실험은 Userdebug 지에서 adb 명령어를 사용할 있는 경에서 퍼징을 수행한 , 생성된 명령어 합을 User 지에서 재현하여 증하는 방식으로 진행되었다.

실험을 통해 LockPickFuzzer 갤럭시 S23 디바이스에서 화면 보안 메커니즘을 무력화시 있는 시나리 대해 각각 ADB 명령어 조합을 발견했다.

User 지에서 재현된 취약점은 삼성전자 보안팀에 보고되었으며, 삼성 취약점 번호 SVE-2023-1344를 할당받음.

 

 

 

- 논의 점 -

 


퍼징
 효율성 저하

 

초기 데이터셋 구축 시 난독화된 정보로 인해 필요한 데이터를 수집하지 못하면 관련 테스트 케이스를 수행할 수 없으며, 잘못된 데이터가 포함되면 테스트 실패율이 높아져 퍼징 성능이 저하될 수 있다. 디바이스 제조사가 코드 레벨에서 직접 정보를 수집하면 유효한 테스트 케이스를 더 많이 생성할 수 있다.

무작위 퍼징은 취약점 탐색에 효과적이나 긴 탐색 시간으로 인해 효율이 떨어질 수 있다. 이를 개선하기 위해 잠금 화면과 무관한 테스트 케이스를 사전 분류해 불필요한 테스트를 줄이면 퍼징 효율이 향상될 수 있다. 또한, 최적화 과정에서 명령어 간의 상관 관계를 분석해 더 유효한 부분 집합을 구성하면 최적화 시간을 단축할 수 있다.

 

 

위협 모델의 현실적 한계

 

이 연구는 USB 디버깅 모드가 활성화된 환경이나 개발 중인 기기에서 발생할 수 있는 보안 취약점을 사전에 탐지하고 대응할 가능성을 모색한다. 공격자가 USB 디버깅 모드를 비정상적으로 활성화할 수 있다고 가정하지만, 최신 안드로이드 기기에는 이를 방지하는 여러 보안 장치가 있다. 그러나 ADB는 개발과 디버깅에 필수적이므로 완전히 차단할 수 없으며, 비정상적인 USB 디버깅 모드 활성화 사례가 재발하지 않을 보장은 없다.

 

 

 

📌 결론

 

이 연구는 ADB를 활용해 안드로이드 잠금 화면 보안 메커니즘의 취약점을 탐색하고 우회 가능성을 평가하는 데 초점을 맞췄다. 이를 위해 연구팀은 ADB 명령어 조합을 자동으로 테스트하여 보안 취약점을 효율적으로 식별하는 LockPickFuzzer라는 퍼징 도구를 개발했다.

LockPickFuzzer를 활용한 실험에서 안드로이드 14를 사용하는 삼성 갤럭시 S23에서 잠금 화면을 우회할 수 있는 두 가지 ADB 명령어 조합을 발견했다. 이 조합들은 인증 정보를 추출하거나 인증 없이 잠금 화면을 해제할 수 있어, 현재의 보안 강화에도 불구하고 ADB가 시스템 보안에 심각한 영향을 미칠 가능성을 보여준다.

LockPickFuzzer는 안드로이드 보안 검증에 중요한 도구로 자리 잡을 가능성을 보이며, 향후 다양한 제조사의 디바이스에 적용해 추가적인 보안 우회 가능성을 탐구하고자 한다.

 

 

📌 느낀 점 & 배운 점

 

 

 

1. ADB의 양면성: ADB는 안드로이드 개발과 디버깅에 필수적인 도구지만, 잠재적으로 악용될 수 있는 강력한 기능이 많아 보안 위협이 될 수 있음을 배웠다.

특히, 비정상적인 방법으로 ADB를 활성화하거나, 특정 명령어 조합으로 잠금 화면을 우회하는 시나리오가 현실적으로 가능하다는 점이 인상 깊었다.

 

2. LockPickFuzzer의 퍼징 자동화 및 효율성: LockPickFuzzer는 ADB 명령어 조합을 자동으로 탐색하여 보안 취약점을 찾아내는 도구로, 사람이 직접 수동으로 검토하기 어려운 명령어 조합을 효과적으로 검증할 수 있다는 점에서 효율적임을 느꼈다.

특히, 불필요한 명령어를 제거하여 최적화된 테스트 케이스를 구성하는 과정에서 재귀적 접근 방식이 큰 도움이 됨을 배울 수 있었다.

 

3. 안드로이드 보안의 중요성: 잠금 화면 보안이 단순한 사용자 인증을 넘어, 사용자의 데이터와 프라이버시를 보호하는 데 필수적임을 다시 한번 깨달았다.

ADB를 통한 보안 취약점이 여전히 존재할 수 있다는 사실이 안드로이드 보안 강화의 필요성을 느끼게 했다.

 

4. 연구 결과의 실용적 가치: LockPickFuzzer는 실제로 삼성 보안팀으로부터 인정받는 성과(SVE-2023-1344)를 얻었으며, 이를 통해 연구가 단순한 이론적 접근이 아닌 실제 기기 보안 강화에도 기여할 수 있음을 확인할수 있었다.

이는 잠재적 취약점을 사전에 탐지하고 보완할 수 있는 도구의 중요성을 강조한다고 생각한다.