안전하지 않은 저장소와 통신
일반적인 결함
안전하지 않은 저장소와 통신은(는) CoddyKit의 무료 Ethical Hacking Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Ethical Hacking Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Ethical Hacking Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
두 가지 대표적인 결함
가장 흔한 모바일 취약점 중 두 가지는 안전하지 않은 데이터 저장과 안전하지 않은 통신입니다. 이 문제들은 OWASP Mobile Top 10에 포함됩니다.
두 문제 모두 개발자가 기기를 지나치게 신뢰하고 데이터를 제대로 보호하지 않아서 발생합니다.
앱이 데이터를 저장하는 위치
앱은 /data/data/<package>/에 데이터를 보관합니다.
- SharedPreferences: XML 키-값 파일
- SQLite 데이터베이스
- 내부 파일과 외부 파일
침투 테스터는 각 위치를 검사하여 평문으로 저장된 비밀 정보를 찾습니다.
/data/data/com.app/shared_prefs/prefs.xml평문 비밀 정보
자주 발생하는 결함은 SharedPreferences나 데이터베이스에 비밀번호, 토큰 또는 PII를 평문으로 저장하는 것입니다.
루팅된 기기에서, 백업을 통해 또는 Objection을 사용하여 공격자가 이를 직접 읽을 수 있습니다. 민감한 데이터는 암호화하거나 보안 하드웨어에 보관해야 합니다.
<string name="auth_token">eyJhbGci...plaintext...</string>외부 저장소의 위험
외부 저장소(SD 카드 영역)에 기록된 데이터는 이전 Android 버전에서 누구나 읽을 수 있으며 저장소 권한이 있는 모든 앱에서 접근할 수 있습니다.
민감한 파일을 이곳에 저장하면 다른 앱에 노출됩니다. 디스크에 기록되는 로그도 이와 관련된 정보 유출입니다.
비밀 정보를 저장하는 올바른 방법
안전한 방법으로는 Android Keystore(키가 하드웨어에 저장되고 앱에 노출되지 않음)와 EncryptedSharedPreferences가 있습니다.
Keystore는 키를 노출하지 않고 암호화 작업을 수행할 수 있으므로 코드에 하드코딩한 키보다 훨씬 안전합니다.
안전하지 않은 통신
안전하지 않은 통신은 데이터가 적절히 보호되지 않은 채 전송되는 것을 의미합니다. 가장 심각한 경우는 평문 HTTP로, 네트워크상의 누구나 트래픽을 읽거나 수정할 수 있습니다.
모든 민감한 트래픽에는 HTTPS/TLS를 사용해야 합니다.
http://api.app.com/login # cleartext, credentials exposed트래픽 가로채기
트래픽을 검사하려면 기기를 Burp Suite 같은 가로채기 프록시를 거치도록 라우팅하십시오. HTTPS를 읽을 수 있도록 기기에 Burp의 CA 인증서를 설치합니다.
이를 통해 API 엔드포인트, 매개변수 및 전송 중인 민감한 데이터를 확인할 수 있습니다.
인증서 고정
잘 설계된 앱은 인증서 고정을 사용하여 자체 인증서가 아닌 모든 인증서를 거부하고 기본적인 프록시를 차단합니다.
앞서 배운 것처럼 Frida의 SSL 고정 우회는 이를 비활성화하므로 실제 API 보안을 계속 가로채고 평가할 수 있습니다.
취약한 TLS와 검증
HTTPS를 사용하더라도 모든 인증서를 신뢰하거나, 만료된 인증서를 허용하거나, 호스트 이름 검증을 비활성화하는 등의 결함이 있을 수 있습니다. 이러한 설정은 개발을 쉽게 하려고 추가되는 경우가 많습니다.
이로 인해 TLS가 적용되어 있어도 공격자가 중간자 공격을 수행할 수 있습니다.
백업과 로그
두 가지 정보 유출 사례가 더 있습니다.
android:allowBackup="true"는 기기에 접근할 수 있는 누구나adb backup을 통해 앱 데이터를 추출할 수 있게 합니다.- 상세한 logcat 출력에 토큰이나 PII가 표시될 수 있습니다.
운영 환경에서는 둘 다 비활성화하거나 민감한 정보를 제거해야 합니다.
adb backup -f data.ab com.app클립보드와 스크린샷
자주 간과되는 두 가지 정보 유출 사례가 있습니다. 민감한 데이터를 클립보드에 복사하는 것(이전 Android에서는 다른 앱이 읽을 수 있음)과 앱이 백그라운드로 전환될 때 시스템이 스크린샷을 찍는 것입니다.
뱅킹 앱은 FLAG_SECURE 창 플래그를 사용하여 이를 완화합니다. 이 플래그는 스크린샷과 작업 전환기 미리 보기를 차단합니다.
빠른 확인
Android에서 암호화 키를 보관하기에 가장 안전한 위치를 떠올려 보십시오.
정리
이제 안전하지 않은 저장 방식과 통신을 이해하셨습니다.
- 앱은 SharedPreferences, 데이터베이스, 외부 저장소 및 로그에 평문 비밀 정보를 남깁니다.
- 비밀 정보는 Android Keystore 또는 EncryptedSharedPreferences에 저장합니다.
- 안전하지 않은 통신은 평문 HTTP부터 취약한 TLS 검증까지 다양하며, Burp로 가로챌 수 있습니다.
- Frida로 인증서 고정을 무력화하고, allowBackup을 비활성화하며 로그에서 민감한 정보를 제거합니다.
모바일 앱 침투 테스트 과정을 완료하셨습니다.
자주 묻는 질문
“안전하지 않은 저장소와 통신” 강의는 무료인가요?
네 — “안전하지 않은 저장소와 통신” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Ethical Hacking Academy 강의 전체를 잠금 해제할 수 있습니다. Ethical Hacking Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“안전하지 않은 저장소와 통신”에서 뭘 배우나요?
일반적인 결함 브라우저에서 직접 실행하는 실습 코드로 Ethical Hacking Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Ethical Hacking Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Ethical Hacking Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“안전하지 않은 저장소와 통신” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Ethical Hacking Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Ethical Hacking Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Android 앱 구조
- APK 정적 분석
- Frida를 활용한 동적 분석
- 안전하지 않은 저장소와 통신