목록전체 글 (89)
학사 나부랭이
ANOM이란? ANOM은 사용자에게 통신에 있어서 완벽한 보안을 제공하는 듯한 모바일 커뮤니케이팅 어플리케이션이었다. 표면 상, ANOM은 폐쇄된 네트워크 즉, ANOM이 설치되어 있는 폰들끼리만, 안전한 프록시 서버를 이용해 데이터를 주고받는 "군사용 급"의 암호화를 제공하고, 로컬 기기에 저장된 데이터를 제거하기 위한 "킬 스위치" 기능도 제공한다. 그러나 이는 FBI 및 여타 국가의 집행기관의 트로이목마이다. ANOM을 통한 암호화 통신은 해독하기 위한 FBI의 마스터키가 숨겨져 있었으며 이로 인해 디바이스 소유자를 특정할 수 있었고, 메시지나 사진 등도 염탐할 수 있었다. 원래 Phantom Secure, Sky Global, Ciphr, EncroChat 등의 비슷한 서비스들도 있었는데 이들은 ..
PE header - Section header 섹션은 실제 파일의 내용이 존재하는 부분으로, 각 섹션의 속성을 정의한 것이에요. PE 파일을 여러 섹션으로 나누었을 때 장점은, 프로그램의 안정성을 확보할 수 있다는 점인데요. 코드와 데이터가 하나의 섹션으로 되어있고, 섞여있다면, 구현이 가능하긴 하지만 복잡성은 둘째 치더라도 데이터에 값을 쓰다가 오버플로우로 인해 코드를 오염시켜 뻗어버리는 등 안정성에 문제가 생길 수 있어요. 그래서 각각 성격(특징, 액세스 권한)에 따라 나누게 되었죠. 1. 코드 - 실행, 읽기 권한 .text: 파일을 열었을 때, 실행될 코드 저장 2. 데이터 - 비실행, 읽기, 쓰기 권한 .data: 초기화된 전역 변수, static 변수 저장 .rdata: const 변수, 문..
Sandbox Architecture 1. 확장을 승인하는 특권 앱 2. 샌드박스가 시스템 콜을 승인 또는 거부 3. 자격이 조건을 만족 4. 확장이 조건을 만족 5. 몇몇 시스템 앱이 컨테이너 프로파일을 사용 6. 데몬은 고유한 프로필을 소유 7. 몇몇 시스템 앱은 고유한 프로필을 소유 8. AppleMatch.kext(Kernel Extensions)가 정규 표현식을 처리 Overview https://owasp.org/www-pdf-archive/OWASP_Bucharest_AppSec_2018_-_Breaking_the_iOS_Sandbox_-_Razvan_Deaconescu.pdf https://arxiv.org/pdf/1608.04303v1.pdf https://chromium.googleso..
애플 디바이스에 응용 프로그램이 동작하려고 할 때, 앱 스토어에 배포할 때, 인앱 결제를 할 때 인증을 받아야 하는데, 여기서 인증서를 요청해야 해요. 그러니까 실제 자신의 디바이스에 구동을 시키고 싶다면 꼭 해야 하는 절차예요. 애플만이 자신들이 만든 디바이스에 어떤 소프트웨어를 실행하게 할 수 있어요.「アップルだけが自分たちが作ったデバイスにあるソフトを実行させる事を許すのです。」 실제로 앱이 실행될 때마다 애플로부터 인증을 받았는지 요구해요. 우선 iOS에 자신이 만든 앱을 등록하는 과정은 대략적으로 아래와 같아요. 1. 개발자가 애플에게서 iOS 디바이스에 앱을 설치할 수 있는 권한을 얻어야 해요. 그러니까, 개발자는 애플에서 인증을 받은 개발자가 되어야 하는 허가제이죠. 이 인증서를 통해 애플은 개발자..
iOS는 정보보호와 안정적인 구동 환경을 위해 다방면으로 앱의 기능을 제한하죠. 백그라운드 프로세스 제약도 그중 하나예요. 왜 이런 백그라운드 프로세스에 제약을 뒀을까요? 먼저 보안을 위해서인데요. 일반 앱이 백그라운드에서 자유롭게 돌아갈 수 있다는 거는 악성 프로그램도 마찬가지로 무한으로 백그라운드 프로세싱을 즐긴다는 거죠. 그래서 허가된 조건 하에서만 백그라운드에서 작동할 수 있도록 해요. 그리고 자원을 아끼기 위해서 인데요. 무엇보다 스마트"폰"인데 백그라운드 프로세스로 인해서 전화받는 작업이 원활하지 못하면 본말전도라고 생각해서 제약을 둔 거 같아요. 그런데, 아이폰으로 카톡도 잘 되고, 음악도 잘 되는데 이건 어떻게 구현했을까요? 바로 멀티태스킹인데요, iOS4 이후부터 본격적으로 지원되었으며 ..
Sandbox - 어린이가 안전을 위해 모래통 안에서만 놀게 하는 것에서 유래 서드파티 앱은 샌드박스 처리 즉, 격리되어 있기에 자신의 폴더에 있는 데이터 외에는 접근할 수 없어요. 즉, 다른 앱에서 저장한 파일, 시스템 파일 및 자원 등을 수정 및 접근할 수 없고, 접근하려면 샌드박스 정책에 따라 접근 권한을 부여받아야 해요. 각 앱은 설치 시 랜덤으로 지정되는 파일 저장용 고유 디렉터리가 할당되고 거기가 해당 앱의 홈 디렉터리가 되어요. 샌드박스가 없다면? 앱에 모든 접근 권한을 줄 경우, 편의성과 수행의 자유도가 높지만 해당 앱이나 프레임워크에 취약점이 있을 경우 공격자가 해당 취약점을 이용해 접근, 공격자가 모든 데이터나 자원에 접근해 악용할 수 있죠. 하지만 샌드박스를 적용할 경우, 공격자는 해..
PE header - NT header 아래는 NT header 구조체 _IMAGE_NT_HEADERS이에요. 3개의 멤버가 있으며, 위는 64비트, 아래는 32비트용이죠. F8h(=16진수 F8 = 10진수 248)바이트로 상당히 큰 구조체예요. PE header - NT header - Signature 4바이트의 0x4550h("PE"00)이라는 값을 가지며, 변경할 수 없어요. PE 구조를 가진 파일이라는 것을 명시해주죠. PE header - NT header - FileHeader 파일의 대략적인 속성을 나타내요. 여기에는 다시 몇 가지의 멤버들이 있어요. 이 멤버 중 중요한 4가지 멤버들은 볼드처리 할게요. 이 값들이 정확히 설정되지 않으면 정상적인 실행이 불가능하죠. 1. Machine M..
PE header - DOS header 마이크로소프트는 PE 파일의 포맷을 만들 때, 당시 사용되던 DOS 파일에 대한 하위 호환성을 고려해서 만들었어요. 그로 인해, PE 헤더의 맨 앞에는 기존 DOS EXE header를 확장시킨 IMAGE_DOS_HEADER 구조체가 존재하죠. 이 구조체의 크기는 40h 즉, 64 바이트이고 여기서 중요한 멤버인 e_magic은 DOS signature(5A4Dh, ASCII: "MZ"), e_lfanew는 NT header의 오프셋(가변적)을 표시해요. 모든 PE 파일은 시작 부분(e_magic)에 DOS signature("MZ")가 있고, e_lfanew 값이 가리키는 위치에 NT header 구조체가 존재해야 해요. 파일에서의 PE 파일을 분석해보면, 0부..