[정보 보안 개론] 시스템 보안 (취약점 관리, 모바일 보안-1)

Jin_Hahha·2024년 10월 8일
0

정보 보안 개론

목록 보기
5/17
post-thumbnail

취약점 관리

패치 관리

  • 보안 설정이 아무리 완벽해도 시스템 자체에 취약점이 존재하면 시스템 운영자 수준에서 이를 막을 수 있는 방법은 없음
    • 대표적인 예시로 웜과 바이러스가 있음
  • 시스템 자체에 대한 취약점을 없애기 위해서는 응용 프로그램을 만든 제작사가 배포하는 패치 또는 서비스팩을 적용해야 함

  • 유닉스 시스템에도 내재된 취약점이 존재하지만, 윈도우의 사용률이 훨씬 높고 접근성이 좋아 공격을 더 많이 받음
    • 유닉스보다 윈도우에서 패치의 중요성이 상대적으로 더 큼
  • 윈도우의 경우 윈도우 업데이트를 통해 자동으로 보안 패치를 확인 및 적용할 수 있음

응용 프로그램별 고유 위험 관리

  • 응용 프로그램 중에는 운영체제의 파일이나 명령을 실행할 수 있는 응용 프로그램이 있음
    • MS-SQL의 xp_cmdshell
      • 데이터베이스를 통해 운영체제의 명령을 실행 및 파일 등에 접근할 수 있도록 MS-SQL에서 지원하는 '확장 저장 프러시저'
      • MS-SQL 관리자 계정(sa)에 의해 실행됨
      • 관리자 계정의 패스워드가 취약한 경우, DB 권한뿐만 아니라 운영체제에 대한 접근 권한도 노출될 수 있음
  • 응용 프로그램을 실행하기 전 운영체제에 접근할 수 있는 함수나 기능이 있는지 확인하고, 해당 기능의 적절성을 검토한 다음 사용해야 함

응용 프로그램의 정보 수집 제한

  • 응용 프로그램의 특정 기능이 운영체제의 정보를 노출시키기도 함
  • 유닉스의 경우
    • 이메일을 보낼 때 수신자가 있는 시스템의 sendmail 데몬에 해당 계정이 존재하는지 확인하는 과정이 존재
      • 일반 계정은 vrfy(verify) 명령을, 그룹은 expn(expansion) 명령을 시스템 내부에서 사용

  • 일반 사용자는 텔넷을 통해 시스템에 존재하는 계정 목록을 어느 정도 파악할 수 있음
    • vrfy를 통해 시스템에 특정 계정이 존재하는지 확인하는 방식
  • 이러한 응용 프로그램의 기능은 제한하는 것이 바람직
  • 불필요한 서비스나 악성 프로그램을 확인하여 제거하는 것은 주요 서비스나 응용 프로그램의 보안 설정만큼이나 중요

모바일 보안

모바일 운영체제 보안

  • 일반 PC의 운영체제와 기본적으로 동일
  • 취약점의 형태도 형태만 조금 다를 뿐 일반 PC 운영체제의 보안 취약점과 거의 유사

모바일 운영체제의 역사

  • 현재 모바일 운영체제 시장의 가장 큰 흐름은 애플의 iOS와 구글의 안드로이드로 나눌 수 있음(그 외에도 많은 모바일 운영체제가 존재했음)
    • 팜 OS
      • 1996년에 개발된 운영체제
      • 주소, 달력, 메모장, 할 일 목록, 계산기와 개인 정보를 숨기기 위한 간단한 보안 툴 포함
    • 윈도우 CE
      • PDA나 모바일 장치 등에 사용하기 위해 만든 운영체제
      • 1MB 이하의 메모리에서도 동작 가능하도록 설계
    • 블랙베리 OS
      • RIM이 만든 모바일 운영체제
      • 메시지와 이메일 전송 기능 및 보안에 초점을 두고 있음
    • iOS
      • 애플의 아이폰과 아이패드에 사용되는 모바일 운영체제
      • 2007년 출시된 아이폰 오리지널의 운영체제를 시작으로 계속 업데이트 되고 있음
    • 안드로이드
      • 구글과 이동 통신 관련 회사 연합체가 개발한 개방형 모바일 운영체제
      • 2007년 11월 구글 폰인 HTC Dream(T-Mobile G1)에 안드로이드 1.0이 탑재된 것이 그 시초

  • 아이폰의 첫 번째 버전인 아이폰 오리지널의 운영체제는 OS X였음
    • 맥북의 운영체제를 모바일로 바꾼 것
    • 두 손가락을 이용한 멀티터치 등의 터치 화면 조작법을 처음 적용
    • 2008년, 아이폰 SDK의 첫 베타 버전이 배포되었고 일반 개발자도 아이폰 애플리케이션을 제작할 수 있게 됨
    • 운영체제의 이름은 SDK 발표 이후에 iPhone OS로 명명되었다가, 2010년 iOS4 발표와 함께 iOS로 바뀜

  • 안드로이드는 구글과 이동 통신 관련 회사 연합체가 개발한 개방형 모바일 운영체제
    • 최초의 안드로이드 폰인 HTC-Dream, 안드로이드의 기본 틀을 설정
      • 카메라, 와이파이, 블루투스, 웹 브라우저, 알림, 음성 다이얼, 유튜브, 알람 시계, 갤러리, 인스턴트 메시징, 미디어 플레이어, 구글 앱, 안드러이드 마켓 등의 다양한 기능 탑재
    • 아이폰 오리지널의 코드네임을 따서 버전을 공개했으나, 구글이 안드로이드 버전에 디저트 이름을 붙여서 공개

iOS 보안 체계

  • iOS의 보안 모델

  • iOS는 맥 OS인 OS X의 모바일 버전으로 시작

  • 맥 OS는 Darwin UNIX에서 파생 및 발전

  • iOS의 원래 틀은 유닉스라고 생각할 수 있음

  • iOS는 보안에 대한 기본적인 통제권을 애플이 소유하고 있음

  • 완벽한 통제를 위해 위의 보안 모델을 두고 네 가지 시스템 보안 체계를 갖추고 있음

안전한 부팅 절차 확보

  • iOS가 동작하는 모바일 기기에서 모든 소프트웨어는 애플 암호화 로직의 서명된 방식에 의해 무결성이 확인된 후에만 동작
    • iOS 부팅 과정에서도 동일
    • iOS를 사용한 모바일 기기가 켜지면 칩 생산 과정에서 입력된 코드가 부트 ROM에서 실행됨
    • 해당 코드는 애플 루트 CA의 공개 키를 포함하고 있음
    • 부트 ROM으로 실행된 코드는 Low-Level Bootloader(LLB)의 무결성을 점검
      • 이상이 없으면 LLB 실행
    • LLB는 다시 iBOOT의 무결성을 확인하고 iBOOT 실행
      • iBOOT는 iOS 커널에 대한 무결성을 확인하고 iOS 커널 실행

시스템 소프트웨어 개인화

  • 애플은 보안 문제에 즉각 대응하기 위해 모든 소프트웨어를 애플의 아이튠즈를 통해 일괄 배포하고 있음
  • 소프트웨어 설치 및 업데이트를 할 때 이전 버전으로 다운그레이드하는 행위를 금지
    • 시스템 소프트웨어 개인화라는 절차를 통해 통제
    • 보안 문제가 있는 소프트웨어 버전이 해커에 의해 배포 및 설치되는 것을 막기 위함
  • 소프트웨어 개인화는 다음의 과정으로 이루어짐
    • 개인이 소프트웨어를 설치할 때 개인별 부팅 모듈의 암호 정보와 랜덤하게 생성되는 값과 ECID(단말 장치별 고유 값)을 애플의 응용 프로그램 설치 서버로 전송
    • 서버는 단말기의 고유 소프트웨어 코드를 생성 및 저장하는 형태로 모든 개인별 iOS 응용 프로그램을 식별
    • 애플은 모든 단말기에 설치된 모든 응용 프로그램에 대해서 각각 고유한 코드 값으로 버전을 관리하여 임의의 프로그램으로 변경되거나 설치되는 것을 통제

응용 프로그램에 대한 서명

  • 애플은 iOS에 설치되는 모든 앱에 대해 코드 무결성 사인을 등록하게 하고 있음
  • 코드 무결성 사인(code signature)
    • 앱에 대한 일종의 해시 값
    • 기존에 등록된 앱의 코드 무결성 사인과 다를 경우, 앱을 설치하지 못하게 함
  • 애플은 원격지 삭제 권한을 지니고 있음
    • 개인이 각각의 iOS에 설치한 애플케이션에 문제가 있을 경우 네트워크에 연결된 iOS를 강제로 삭제할 수 있음

샌드박스 활용

  • 응용 프로그램이 실행될 때 가상 머신 안에서 실행되는 것처럼 원래의 운영체제와 완전히 독립되어 실행되는 형태를 말함
  • 애플이 직접 제작한 앱에는 샌드박스를 적용하지 않고 사용자 앱인 경우에 적용
  • 사용자 앱은 기본적으로 앱 간에 데이터를 주고받을 수 없고, 시스템 파일에도 접근할 수 없음
  • 앱 간 문서, 음악, 사진 등의 전송은 시스템 API에서 그 기능을 제공할 때만 가능

멀티태스킹 금지

  • iOS는 음악을 듣는 것 외의 멀티태스킹 금지
  • iOS 단말기의 성능 문제 때문이기도 하지만 악성 코드가 iOS에서 활동하는 것을 막기 위함이기도 함
  • 사용자가 컴퓨터를 사용하고 있을 때 대부분의 바이러스는 실제 사용하는 프로그램의 백그라운드로 함께 실행됨
    • iOS는 멀티태스킹을 금지함으로써 해당 가능성을 차단

원격지에서 iOS 로그인 금지

  • iOS는 유닉스에 바탕을 두고 있음
  • SSH 서버를 실행할 수 있고 로컬 또는 원격지에서 SSH 서버에 로그인할 수도 있음
    • 그러나 원격지에서 iOS를 구동하는 단말기에 HTTP, FTP의 단순한 파일 전송 기능 이외의 명령을 입력할 수 있는 응용 프로그램은 금지

iOS의 취약점

  • 애플의 엄격한 통제에도 iOS는 완벽한 보안 체계를 갖추고 있는 것은 아님
  • 하지만 외부 서비스를 제공하기 위해 특정한 인터페이스를 제공하는 부분이 거의 없기 때문에 외부 해커가 iOS에 접근할 수 있는 방법이 매우 제한적
  • iOS 보안상 문제점은 대부분 탈옥(jailbreak)한 iOS 기기에서 발생
    • 탈옥이란?
      • 애플 휴대용 기기에 사용되는 iOS 및 iPadOS의 제한을 임의로 해제하는 행위
      • 과정이 매우 복잡하므로 인터넷에서 따로 확인하는 것을 추천
  • 애플이 공식적으로 지원하지 않는 기능을 사용하기 위해 iOS 기기를 탈옥
    • 공식으로 지원하지 않는 기능에는 iOS 내부의 시스템 파일 및 응용 프로그램 파일에 대한 접근과 외부 관리 인터페이스가 포함되어 있음
    • 탈옥한 iOS 기기로는 iOS 시스템 파일에 접근할 수 있음
    • 해당 행위를 통해 iOS가 유닉스에 기반한 기기임을 확인할 수 있음
    • 탈옥에 성공할 경우 iOS로 SSH 서버를 실행하면 로컬이나 원격지에서 로그인할 수 있음

  • 사용자가 iOS를 탈옥할 때 반드시 적용해야 할 보안 사항은 일반 PC와 마찬가지로 기본 패스워드를 변경해야 한다는 것
    • iOS에서는 root의 패스워드가 alpine으로 설정되어 있기 때문에 탈옥한 상태에서 SSH 서버 등을 실행하면 iOS에 있는 정보가 임의의 접속자에게 유출될 수 있음

0개의 댓글