게시 날짜 : August 6, 2024
위협 행위자처럼 생각하기: 시리즈
이 시리즈의 동기
애플리케이션 보안의 첫걸음을 내딛는 것은 쉽지 않을 수 있습니다. 수많은 사이버 보안 블로그와 수십 개의 오픈소스 및 무료 공격 도구가 존재합니다. 하지만 애플리케이션 개발자에게 실질적인 위협이 되는 중요한 요소들을 분석하는 데 도움이 되는 정보는 거의 없습니다. 기존 정보의 대부분은 연구 결과나 개념 증명(PoC)으로 구성되어 있습니다.
이 시리즈에서는 가장 심각한 위협을 심층적으로 살펴보고, 애플리케이션 공격을 재현하는 방법을 설명하고, 침투 테스터가 애플리케이션을 테스트할 때 사용할 기반을 제공하며, 가장 심각한 위협으로부터 보호하기 위한 권장 사항을 제시합니다. 위협 행위자를 차단하는 가장 효과적인 방법을 배우려면 먼저 그들의 행동과 목표를 이해해야 합니다. 이 시리즈에서는 iOS 애플리케이션 보안에 중점을 둡니다. 모든 운영 체제는 유사한 위협과 공격 벡터를 가지고 있습니다. 그럼에도 불구하고 iOS는 제한적인 애플리케이션 샌드박스를 가지고 있고 하드웨어 및 운영 체제 소스 코드가 다른 많은 시스템보다 더 엄격하게 보호된다는 고유한 특성을 가지고 있습니다. 이 첫 번째 기사에서는 iOS 애플리케이션 보안을 독특하게 만드는 요소에 대한 개략적인 배경 지식을 검토하고, 이 시리즈의 후반부에서 설명하는 공격을 추적하는 데 필요한 기본적인 요소인 iOS IPA 파일 형식, 애플리케이션 서명 및 애플리케이션 사이드로딩을 심층적으로 살펴봅니다.
위협 행위자의 동기
위협 행위자는 애플리케이션을 공격하는 데 다양한 동기를 가질 수 있습니다. 단순히 블로그에 글을 올리고 정보를 퍼뜨리고 싶을 수도 있죠. ;). 위협 행위자는 자신이 할 수 있다는 것을 보여주기 위해 공격할 수도 있습니다. 일반적으로 위협 행위자는 자신에게 재정적 이익을 주거나 대상에게 재정적 피해를 입히는 것을 목표로 합니다. 시작점으로, 위협 행위자는 민감한 알고리즘, 통신 프로토콜, API 또는 비즈니스 로직을 역공학하고 이해하여 애플리케이션에 로직을 다시 구현하려고 할 수 있습니다. 그러나 이러한 과정은 DRM 또는 라이선스 메커니즘을 우회하는 것으로 빠르게 확대되어 애플리케이션의 무료 배포로 이어질 수 있습니다. 리버스 엔지니어링이러한 공격에 대한 코드 수정, 애플리케이션 분석은 동일합니다. 공격 이해, 그리고 위협 행위자를 파악하면 이에 대한 방어력이 향상됩니다.
데스크톱과 모바일의 차이점 Application Security
모든 플랫폼과 운영 체제는 서로 다른 공격 벡터에 노출됩니다. Windows, Linux, Mac과 같은 데스크톱 운영 체제는 운영 체제 수준에서 보안 수준이 가장 낮습니다. 따라서 공격 도구를 개발하거나 애플리케이션을 수정하여 보안 수준을 낮추는 악용이 쉽습니다. iOS 및 Android와 같은 모바일 운영 체제에서 실행되는 애플리케이션은 일반적인 데스크톱 애플리케이션보다 샌드박스가 제한적인 경향이 있습니다. 하지만 운영 체제에 보안 기능이 내장되어 있다고 해서 해당 운영 체제에서 실행되는 애플리케이션이 항상 안전한 것은 아닙니다. safe모든 운영체제에서 실행되는 애플리케이션에 대한 공격은 여전히 존재합니다.
위협 행위자에게 iOS를 차별화하는 요소가 무엇인지 자세히 알아보겠습니다.
- iOS는 사용자에게 루트 또는 관리자 수준의 접근 권한을 전혀 제공하지 않습니다. 데스크톱 운영 체제에서는 사용자가 권한을 상향 조정할 수 있습니다.
- 많은 공격 도구는 공격 대상 소프트웨어와 동일한 기기에서 실행되어야 합니다. 모바일 기기를 대상으로 공격 도구를 개발하고 실행하는 것은 더욱 어려울 수 있습니다.
- iOS를 대상으로 하는 공격 도구는 iOS 기기 자체가 아닌 페어링된 데스크톱에서 실행되는 경우가 많아 사용 및 개발이 어렵습니다.
- Apple은 권한 상승을 적극적으로 어렵게 만들고 있습니다. Apple은 탈옥으로 이어지는 보안 취약점을 패치하고, 시간이 지남에 따라 탈옥을 약화시키고 제한해 왔습니다. 블로그 더 자세한 내역을 보려면 여기를 클릭하세요. 대부분의 기기에서 사용되는 Android 운영 체제는 기본적으로 루트 권한을 제공하지 않지만, 위협 행위자가 권한을 상승시키는 것은 어렵지 않습니다.
- iOS에는 소프트웨어 개발 디버깅 기능이 거의 없습니다. 개발은 주로 Xcode에서 진행되거나 Xcode 빌드 도구를 사용하여 이루어집니다. 대부분의 디버깅 도구는 Xcode에 종속되어 있으며 이미 컴파일된 애플리케이션에 대한 기능이 제한적입니다.
- iOS 기기에는 기본적으로 SSH나 직접 터미널 연결이 없습니다.
- 최종 사용자는 보안 패치를 포함하여 빠르게 변화하는 운영 체제, 하드웨어, 애플리케이션으로 iOS 기기를 신속하게 업데이트합니다. 이로 인해 공격 도구와 맬웨어가 손상되어 위협 행위자는 유지 관리에 더 많은 비용을 지출해야 합니다.
- iOS 기기는 가격이 더 비싸고, Apple 개발자 계정이 필요하며, 비용 절감을 위해 시뮬레이터나 에뮬레이터 기능이 제한적입니다.
iOS 바이너리 패키징
iOS IPA 파일은 애플리케이션 실행에 필요한 모든 것을 포함하는 zip 형식으로 압축되어 있습니다. IPA 파일의 압축을 해제하면 앱의 바이너리 파일에 접근할 수 있습니다. 이는 정적 분석을 통해 애플리케이션을 리버스 엔지니어링하는 첫 번째 단계입니다. 아래 예시는 Job Dispatcher 애플리케이션을 살펴보는데, 이 애플리케이션은 이 시리즈의 후반부에서 공격 대상이 될 샘플 애플리케이션입니다. 해당 애플리케이션은 다음 링크에서 다운로드할 수 있습니다. https://github.com/digitalai-opensource/job-dispatcher.
% Job\ Dispatcher.ipa 압축 해제 아카이브: Job Dispatcher.ipa 생성: 페이로드/ 생성: 페이로드/Job Dispatcher.app/ 생성: 페이로드/Job Dispatcher.app/_CodeSignature/ 확장: 페이로드/Job Dispatcher.app/_CodeSignature/CodeResources 확장: 페이로드/Job Dispatcher.app/AppIcon60x60@2x.png 확장: 페이로드/Job Dispatcher.app/Assets.car 확장: 페이로드/Job Dispatcher.app/AppIcon76x76@2x~ipad.png 확장: 페이로드/Job Dispatcher.app/Job Dispatcher 확장: 페이로드/Job Dispatcher.app/embedded.mobileprovision 확장: 페이로드/Job Dispatcher.app/Info.plist 확장: 페이로드/Job Dispatcher.app/PkgInfo
이 애플리케이션은 규모가 작으며, 대규모 애플리케이션에는 많은 바이너리 코드 파일과 수많은 에셋, 프레임워크 및 기타 애플리케이션 콘텐츠가 포함됩니다. 이 애플리케이션에는 최상위 IPA인 "Job Dispatcher"와 동일한 이름의 실행 가능 바이너리 파일 하나만 포함되어 있습니다. "file" 명령을 사용하여 이 파일이 실행 파일인지 확인할 수 있습니다.
% 파일 Job\ Dispatcher Job Dispatcher: Mach-O 64비트 실행 파일 arm64
Mach-O는 Apple 운영 체제에서 사용하는 바이너리 파일 형식이며, 모든 최신 iOS 기기는 ARM64 CPU를 사용합니다.
이제 이 시리즈의 향후 파트에서 리버스 엔지니어링하고 수정할 파일에 접근할 수 있게 되었습니다. 애플리케이션 공격이 완료되면 모든 내용을 압축하고 zip 파일의 이름을 .ipa 파일로 다시 변경하여 IPA 파일을 생성할 수 있습니다. 파일이 변경된 경우, 애플리케이션을 제대로 재인증하거나 사이드로드하여 설치해야 합니다.
수정된 iOS 애플리케이션 서명
iOS용 애플리케이션 서명은 일반적으로 애플리케이션을 빌드할 때는 Xcode GUI를 통해, 명령줄을 사용할 때는 codesign 명령줄 도구를 사용하여 수행됩니다. 이러한 도구는 컴파일 및 서명된 바이너리를 수정한 후 애플리케이션을 재서명할 때 제약이 있는데, 이는 위협 행위자의 일반적인 사용 사례입니다. 수정된 애플리케이션을 재서명하기 위해 iOS App Signer와 같은 도구는 IPA의 모든 파일을 재귀적으로 검토하여 모두 재서명할 수 있습니다. 이 방법에는 Apple 개발자 계정이 필요하며, 다른 인증서로 재서명된 애플리케이션을 탈옥된 기기에 설치할 때 Xcode에서 오류가 발생합니다. iOS 애플리케이션을 공격하려면 잠재적으로 위험한 코드를 다운로드하고 실행해야 하는 경우가 많습니다. 구매자 주의!
수정된 iOS 애플리케이션 사이드로딩
수정된 애플리케이션을 재시작하고 설치하는 또 다른 방법은 사이드로딩 도구를 사용하는 것입니다. 사이드로딩은 애플리케이션 재시작 시 보안 제한을 우회하고, 지원되는 기기 및 iOS 버전 제한을 우회하는 데 사용할 수 있습니다. iOS 애플리케이션을 사이드로딩하는 강력한 도구는 Sideloadly입니다. 소스 코드를 검토할 수 없는 사전 빌드된 애플리케이션을 다운로드하고 설치할 때는 주의하십시오.
멀리 걸릴
위협 행위자와 그들의 공격 벡터를 이해하면 더욱 안전한 애플리케이션을 구축하는 방법을 이해하는 데 도움이 됩니다. 앞으로 몇 달 동안 다양한 공격 벡터를 자세히 설명하는 일련의 기사가 이 공간에서 제공될 예정이니 기대해 주세요. 많은 경우 공격은 서로 연계되어 진행됩니다. 예를 들어, 위협 행위자는 기기를 탈옥하다 Frida의 모든 기능을 설치하고 실행하기 전에. 위협 행위자는 수정 사항을 테스트하기 위해 애플리케이션을 탈퇴하거나 사이드로딩해야 합니다. 첫 번째 공격적인 기사(곧 공개!)에서는 샘플 애플리케이션을 수정하여 인증 기능을 우회하는 방법을 보여드리겠습니다.
여기에서 확인하세요 앱에 대한 무료 위협 평가를 받으세요.