Mobile Security

 

Clickjacking이란?

  • 클릭재킹이란 보이지 않는 버튼으로 사용자의 클릭을 유도해 공격자가 원하는 것을 하도록 속이는 해킹 기법.
  • iframe 태그 안에 악의적인 js코드를 삽입하여 보이지 않는 레이어를 누르도록 하여 피싱 사이트로 접근하게 만든다.
  • 방어 기법으로는 X-Frame-Options 속성 중에서 DENY나 SAMEORIGN 옵션을 통해서 동일한 출처의 프레임만 표시될 수 있도록 도와준다.

Jailbreak?

  • 스마트폰 제조사에서 OS를 사용자 마음대로 변형할 수 없게해 놓은 것을 무력화 시킨 것이다. 안드로이드는 개방형이기 때문에 이 용어를 사용하지 않고 애플사 아이폰에 관해서 이 용어를 사용한다.
  • 아이폰에서는 안정적인 운용과 애프터서비스를 위해 아이폰에 일정 기능을 허용하지 않는 잠금장치를 설치했다.
  • 유닉스로 만들어진 ios의 샌드박스 제한을 풀어서 시스템의 코드를 수정하거나 변경하는 행위이다.

샌드박스란?

  • 격리된 환경에서 응용 프로그램을 실행하는 기술. 주로 악성코드를 분석할때 샌드박스로 악성코드를 돌리면 분리된 환경에서 작동하고 그것을 기록합니다.
  • 실행중인 응용 프로그램에는 가상 메미로 및 디스크 공간이 제공됩니다. 이 때 OS간의 통신은 금지됩니다. 샌드 박스 처리 된 응용 프로그램은 사용권한 없이 하드웨어 구성 요소나 하드 디스크 내용에 액세스 할 수 없습니다.

APP SandBox?

  • 맥 OS에서 사용되는 접근 제어 기술로, 커널 수준에서 강제 적용되고 시스템 사용자 데이터를 제한적으로 사용할 수 있게 하는 것입니다.
  • App Store에 유통되는 모든 앱들은 모두 앱샌드박스가 적용되어 있습니다.

SELinux란?

  • Flask라는 보안 커널을 리눅스에 이식한 커널 레벨의 보안 모듈이다.
  • 사전 정의된 access control policy가 탑재되어 있고 deny all, permit some 정책이 미리 설정되어 있어 잘못된 설정을 최소화 할 수 있다.
  • setuid bit가 켜져 있거나 루트로 실행되는 프로세스처럼 위험한 프로그램들은 샌드박스 안에서 별도의 도메인으로 격리되어 실행되므로 루트 권한 탈취에도 전체 시스템에 미치는 영향을 줄일 수 있다.
  • 데이터의 confidential과 integrety를 적용할 수 있으며 신뢰할 수 없는 입력에서 프로세스를 보호할 수 있다. SELinux는 애플리케이션이 메모리에 있는 코드를 실행 할 수 없게 통제하므로 버퍼 오버 플로 공격과 같은 것을 막는다.
  • 하지만 사람들은 SELinux를 설치하고 그것을 끄는것을 권고하기도 한다. 왜냐하면 에러 발생시 관련 지식이 없을때 원인을 알기 힘들고 자료가 많지 않아서 문제 해결이 힘들었고 보안에 대해 그리 심각하게 생각하지 않았기 때문이다.
  • 한계점은 분명히 존재하는데 주요 목표가 잘못된 설정이나 프로그램의 보안 버그로 시스템이 공격당하더라도 시스템과 데이터를 보호하고 2차 피해를 막는것이기 때문에 IDS나 Firewall과 같은것이 여전히 필요할 수 있다.

Apple의 플랫폼 보안

하드웨어 보안

  • 소프트웨어의 보안을 유지하기 위해 보안 기능이 내장된 하드웨어가 필요하다. 보안 중심 하드웨어는 공격 범위를 최소화하기 위해 제한적이며 별도로 정의된 기능을 지원하는 원칙을 따른다..
  • Boot ROM, AES엔진, Secure Enclave가 포함된다.
  • Secure Enclave는 유휴 데이터를 암호화하는데 필요한 키를 안전하게 생성하고 저장하기 위한 기반을 제공하며 Touch ID 및 Face ID의 생체 인증 데이터를 보호하고 평가합니다.
  • AES엔진은 파일을 쓰거나 읽을 때 빠른 인라인 암호화 및 복호화를 수행하여 빠르고 효율적으로 암호화 작업을 할 수 있게 합니다. 암호화 키 유출도 막아줍니다.
  • Boot ROM은 애플에서 신뢰하는 운영 체제 소프트웨어만 로드하도록 설계되어 있고 보안 시동 프로세스를 실행합니다.

시스템 보안

  • 시스템 보안은 시동 프로세스, 소프트웨어 업데이트 및 컴퓨터 시스템 리소스 보호를 포함합니다.
  • 보안 시동은 하드웨어에서 시작해 소프트웨어를 통해 신뢰 체인을 구축합니다.
  • 시동 및 런타임 보호 기능이 있어서 작동하는 중에도 integrity를 유지할 수 있게 해줍니다.

암호화 및 데이터 보호 개요

  • 보안 시동 체인, 시스템 보안, 앱 보안 기능은 신뢰하는 코드와 앱만 기기에서 실행되도록 확인합니다. 보안 인프라의 일부가 손상 된 경우에도 사용자 데이터를 보호하기 위한 추가 암호화 기술이 적용되어 있습니다.
  • 모든 경우에 키 관리 계층은 Secure Enclave의 전용 실리콘 칩에 뿌리를 두고 있으며 AES 엔진이 회선 속도의 암호화를 지원하고 있습니다.
  • 데이터 보호를 위해 FileVault라는 볼륨 암호화 기술로 데이터를 보호하고 있습니다.
  • 커널은 샌드박스 앱에 접근 권한 제어를 사용하여 앱이 접근할 수 있는 데이터를 제한하며, Data Vault라는 메커니즘을 사용하여 앱의 요청을 제한하는 대신 요청을 보내는 다른 모든 앱이 특정 앱의 데이터에 접근하는 것을 방지합니다.

앱 보안 개요

  • 앱이 보안 아키텍처에서 가장 중요한 요소 중 하나입니다. 이런 이유로 앱에 악성 코드가 없고 변조되지 않았음을 확인 할 수 있도록 계층형 보호 기능을 제공 하고 있습니다.
  • macOS에는 악성 코드를 차단하고 필요한 경우 악성 코드를 제거할 수도 있는 안티바이러스 보호 기능이 포함되어 있습니다.
  • 플랫폼 전반에 걸친 추가 제어 기능인 샌드밗느느 앱의 무단 접근으로부터 사용자 데이터를 보호하지만 샌드박스되어 있는지와 상관없이 데스크탑, 문서, 다운로드 폴더 및 기타 영역에 있는 파일에 대한 모든 앱의 접근을 사용자가 계속 제어할 수 있도록 합니다.
  • Signiture, Access control, Firewall, Packet filter, Gatekeeper과 같은 고유 기능이 있습니다.

안드로이드 보안

커널 보안

  • Linux는 안정적이고 안전한 커널이 되었습니다. 기본적인 목표는 사용자 리소스를 서로 분리하는 것입니다. 따라서 사용자 A가 사용자 B의 파일을 읽지 못하게 하고 메모리 및 CPU, 전화나 블루투스와 같은 기기를 소진을 못하게 합니다.
  • 사용자 기반 권한 모델, 프로세스 분리, 보안 IPC를 위한 확장 가능 메커니즘, 커널에서 불필요하고 앉너하지 않을 가능성이 있는 부분을 삭제하는 기능과 같은 핵심 보안 기능을 제공하고 있습니다.

앱 보안

  • 안드로이드 애플리케이션은 대다수 자바로 작성되어 있으며 Dalvik 가상 머신에서 실행됩니다.
  • 카메라 기능, GPS, 블루투스, 전화, SMS/MMS, 네트워크 데이터 연결 기능등은 보호 대상 API입니다. 이러한 리소스는 운영체제를 통해서만 액세스 할 수 있습니다.
  • 설치 시에만 권한 사용에 관한 메시지를 사용자에게 알립니다. 이는 보안과 UI연구에 따른 사용자 환경을 고려한 것으로 자주 메시지를 띄어서 확인시키면 보지도 않고 확인을 해버려서 오히려 보안을 떨어뜨리는 요소가 되기에 충분히 검토할 수 있는 설치 단계에서 한 번 메시지를 띄우고 이후에는 바꿀 수 있게 설정을 해놓습니다.
  • SIM 카드 액세스는 타사 애플리케이션에서 접근 할 수 없게 했습니다.