본문 바로가기
정보보안기사 필기/1. 정보보안 일반

정보보안기사 필기 4-1. 클라이언트 보안

by kkmin93 2022. 4. 19.
반응형

정보보안기사 필기 4-1. 클라이언트 보안

1. 악성 소프트웨어(악성코드)

 1) 악성 소프트웨어의 개념

  • 사용자가 원하지 않는 기능을 컴퓨터 프로그램에 포함시키거나 프로그램 자체의 오류로 인하여 사용자가 원하지않는 시스템 충돌, 프로그램 중단, 개인정보 수집, 네트워크 포트 개방 등의 결과로 이어질 수 있는 악의적인 목적을 가진 프로그램
  • 보안속성의 기밀성, 가용성, 무결성 등을 침해하는 컴퓨터 프로그램

2) 악성 소프트웨어의 분류

 2-1) 독립형과 기생형

  • 독립형의 악성 소프트웨어는 자체적으로 구동될 수 있는 프로그램으로 운영체제에 의해 스케줄되어 구동될 수 있다. 독립형의 악성 소프트웨어는 웜, 좀비 프로그램 등이 있다.
  • 기생형의 악성 소프트웨어는 다른 실제 응용 프로그램이나 유틸리티나 시스템 없이 독립적으로 존재할 수 없다.  기생형의 악성 소프트웨어는 바이러스, 논리폭탄, 백도어 등이 있다.

 2-2) 자기 복제 여부

  • 바이러스 성 악성 소프트웨어는 웜과 바이러스가 있으며, 자기 복제를 할 수 있다.
  • 비-바이러스 성 악성 소프트웨어는 트로이목마, 백도어 등이 있으며, 자기 복제를 할 수 없다.

 3) 바이러스(Virus)

  3-1) 기본 개념

  • 바이러스는 다른 프로그램을 변형시키도록 하여 감염시키는 프로그램이면서 동시에 자신을 변형시켜 실행 가능한 형태이기도 한 악성코드이다.
  • 자신 또는 자신의 변형을 컴퓨터 프로그램이나 매크로, 스크립트 등 실행 가능한 부분에 복제하는 명령어들의 조합
  • 감염될 시 파일 사이즈 증가, 갱신 타임스탬프의 변경, 저장장치의 공간 부족, 디스크 접근횟수 증가 등의 변화가 나타난다.
※  변형이란 원래 프로그램에 루틴을 주입해서 바이러스 프로그램의 복제를 만들어내는 것을 말한다.
  • 자기 복제를 할 수 있는 바이러스 성 악성 소프트웨어이다.

  3-2) 바이러스 종류

  • 세대별 바이러스 변화
※  원시형 바이러스 → 암호화 바이러스 → 은폐형 바이러스 → 갑옷형 바이러스 → 매크로 바이러스 
  • 매크로 바이러스 : 매크로 기능이 있는 MS사 오피스 제품군, 오토캐드, PDF 등 VBS(Visual Basic Script)를 지원하는 다양한 프로그램에서 활동하는 바이러스
※ 매크로 바이러스의 특징
 - 문서가 정상적으로 열리지 않거나 암호가 설정
 - 문서 내용에 깨진 글자나 이상한 문구가 포함되어 있음
 - 엑셀이나 워드 작업 중 VB(Visual Basci) 편집기의 디버그 모드가 실행
 - 플랫폼과 무관하게 사용되며, 대부분의 바이러스는 문서를 감염시키고 코드의 실행부분은 감염시키지 않는다.
  • 일시적(Transient) 바이러스 : 호스트의 생명주기에 의존하며 "프로그램의 동작 - 종료"와 동일한 생명주기를 갖는다.
  • 상주형(Resident) 바이러스 : 메모리에 상주하여 프로그램의 뒷 부분에 첨부되어 독립적으로 활성화·비활성화
  • 다형성(Polymorphic) 바이러스 : 안티 바이러스가 검사하기 어렵게 자신의 모습을 스스로 변형하는 바이러스
  • 자동실행(Autorun) 바이러스 : MP3, USB 같은 이동식 디스크에 복사되어 자동 실행되도록 설정된 악성코드로 "autorun.inf" 파일을 이용하거나 시스템 레지스트리에 등록되어 폴더를 숨기거나 더블클릭을 방해하는 악성행위를 한다.

  3-3) 바이러스 해결책

  • 바이러스 위협에 대한 해결책은 "예방"과 바이러스 감염에 따른 수행 능력을 갖추는 것이다.
  • 탐지(Detection) : 일단 감염되면 바이러스가 있는지 판단하고 위치를 파악하는 단계
  • 식별(Identification) : 일단 탐지되면 프로그램을 감염시킨 특정 바이러스를 식별하는 단계
  • 제거(Removal) : 바이러스를 모든 감염된 시스템에서 제거하여 더 이상 퍼지지 않도록 하는 단계
  • 안티 바이러스 필터링 방법
※ Signature Scanning 방법
 - 바이러스 내 실행 가능한 코드의 경우에는 이진 스트링으로 표현되며, 스크립트 등의 언어로 된 바이러스에는 명령어의 나열로 나타나게는데 이러한 특징을 시그니처(Signature)로 만들어 탐지하는 방법이다.
※ Behavioral Virus Scanning 방법
 - 바이러스가 수행 중에 어떤 행동을 보이는지를 추적하는 방법
 - Signature Scanning 방법에서 불가능했던 새로운 행위의 바이러스와 웜에 대해 대처할 수 있는 방법이다.

 4) 웜(Worm)

  4-1) 기본 개념

  • 웜은 자신을 복제하여 네트워크 연결을 통해서 컴퓨터에서 컴퓨터로 그 복제본을 전송하며, 전송된 웜은 복제를 시작하고 다시 확산하는 악성 소프트웨어이다.
  • 웜과 트로이목마 : 웜은 다른 시스템에 직접적인 영향을 미치지 않는다는 점에서 트로이목마와 차이가 있다.
  • 웜과 컴퓨터 바이러스 : 웜과 컴퓨터 바이러스는 자기 복제를 한다는 측면에서 공통점을 가지지만, 웜은 다른 프로그램에 기생하지 않으며 자기 자신을 복제하여 전파시키지 다른 프로그램을 감염시키지 않는다는 점에서 차이점이 있다.

  4-2) 웜 확산 모델

  • 확산은 3단계로 "서서히 시작하는 단계 → 빠른 확산 단계 → 서서히 퍼지면서 종료 단계"로 나뉜다.
  • 시간이 경과하면서, 감염된 호스트는 이미 감염된 호스트를 공격하는데 시간을 허비하기 때문에 감염 속도가 줄어들게 된다.

  4-3) 웜의 실행

  • 웜은 전파된 시스템에서 시스템의 접근 권한을 확보하고 자신을 실행시키기 위해 버퍼 오버플로우, 포맷 스트링, SQL 삽입, PHP 삽입 등 공격 가능한 시스템의 취약점을 이용한다.
  • 예로 시스템 접근 권한이 확보되면 웜을 백도어로 설치하거나, DDoS 공격에 사용될 수 있는 봇(Bot) 또는 좀비(Zombie) 프로그램을 다운로드하여 실행할 수 있고, 키로거와 같은 악성 소프트웨어를 설치할 수 있다.
  • 래빗(Rabbit)은 컴퓨터의 자원을 고갈시킬 목적으로 제한 없이 자기 자신을 복제하는 웜 또는 바이러스이다.

  4-4) 웜 해결책

  • 웜이 머신 안에 상주하게 되면, 안티 바이러스 소프트웨어는 이를 감지할 수 있으며, 만약 웜이 확산하려고 한다면 네트워크 활동이 활발해지기 때문에 네트워크 활동과 사용을 모니터링하면 웜에 대한 기본적인 방어를 할 수 있다.
  • 네트워크 기반 웜 방어
※ 진입 모니터(Ingress Monitors)
 - 엔터프라이즈 네트워크와 인터넷 사이의 경계에 위치하며, 들어오는 트래픽에 대해서 네트워크 활동과 사용을 모니터링 한다.
※ 진출 모니터(Egress Monitors)
 - 나가는 트래픽에 대해서 스캐닝의 흔적이나 기타 의심스런 행동을 모니터링 한다.

 5) 트로이목마(Trojan Horse)

  5-1) 기본 개념

  • 트로이목마는 자신의 실체를 드러내지 않으면서 마치 다른 프로그램의 한 유형인 것처럼 가장하여 활동하는 프로그램이다.
  • 자기 복제를 하지 않으며 다른 파일을 감염시키거나 변형시키지 않지만, 시스템은 공격자에게 시스템을 통제할 수 있는 권한을 부여하는 등의 영향을 미친다.
  • 트로이목마는 원격조정(백도어), 패스워드 가로채기, 키로거, 시스템 파일 파괴 등의 기능을 한다.

  5-2) 트로이목마 해결책

  • 자신이 설치하지 않은 프로그램이 동작하는지 확인한다.
  • 레지스트리를 검사하여 자동실행이 설정되어  있는 프로그램을 검색한다.
  • 무결성 점검도구를 이용하여 변화된 파일에 대한 검사를 한다.
  • 네트워크의 연결 상태 및 자신의 컴퓨터에 열려진 포트를 검사, 안티바이러스 프로그램 등의 도구를 이용하여 탐지한다.

 6) 기타 악성 소프트웨어

  6-1) 루트킷(Rootkt)

  • 컴퓨터 소프트웨어 중에서 악의적인 것들의 모음
  • 루트킷의 설치는 자동으로 이루어지거나 공격자가 루트권한이나 관리자 권한을 획득하였을 때 설치할 수 있다.
  • 한번 설치가 되면 권한을 가진 접근을 유지, 비인가 침입을 숨길 수도 있다.
  • 루트킷은 자신을 찾으려는 소프트웨어를 속일 수 있기 때문에 탐지하기가 어렵다.
  • 만약 루트킷이 커널에 상주한다면 운영체제 재설치가 유일한 방법이며, 펌웨어 루트킷의 경우 하드웨어 교체를 해야한다.

  6-2) 키로거(Keyloggers)

  • 컴퓨터에서 키보드로 입력한 정보를 남기거나 화면을 캡처하거나 작업 기록을 저장할 수 있다.
  • 부팅 시 자동 실행되도록 레지스트리(HKLM\Software\Microsoft\Windows\CurrentVersion\Run)에 등록된다.
  • 윈도우를 이용한 프로그램 사용, IE를 이용한 인터넷 접속 로그를 기록하여 실시간으로 공격자에게 전송하거나, 설정된 메일 및 메신저로 지정된 시간에 로그파일을 자동 전송하는 기능도 있다.

2. 인터넷 활용 보안

인터넷 익스플로러에 대한 보안을 구현할 때 사이트에 따라 서로 다른 보안 요구사항이 필요하게 된다.

 1) 웹브라우저 보안(임시 인터넷 파일)

  • 인터넷을 사용하면서 화면에 나타나는 웹 페이지 및 이미지, 플래시 등을 저장한 파일
  • 임시 인터넷 파일이 저장되는 이유는 같은 사이트에 접속했을때 다시 소스를 저장하는 시작을 줄이기 위해서 이다.
  • 익스플로러가 보전하는 검색기록에는 "캐시된 이미지 및 임시 인터넷 파일, 쿠키 다운로드 기록, 양식 데이터, 암호 등이 있다.

 2) 사용 가능한 영역(4가지 형태)

  • 인터넷 : 다른 세 가지 영역에 포함되지 않은 웹사이트를 위한 영역이다.(디폴트는 약간 높음)
  • 로컬 인트라넷 : 사용자의 컴퓨터와 네트워크(인트라넷)상에 있는 웹사이트를 위한 영역이다.(디폴트는 낮음)
  • 신뢰할 수 있는 사이트 : 사용자가 안전한 콘텐츠를 갖고 있다고 신뢰하는 페이지를 설정하는 웹사이트 영역이다.
  • 제한된 사이트 : 어떤 이유에서든 사용자가 신뢰할 수 없거나 보안 페이지로 설정할 수 없는 웹사이트 영역이다.

 3) 쿠키(Cookie)

  3-1) 개요

  • 1994년 넷스케이프에서 처음 사용한 기술로 사용자들이 웹사이트를 편리하게 이용할 수 있도록 하기 위한 목적으로 만들어졌다.
  • 사용자가 인터넷 웹 사이트에 방문할 때 생기는 4KB 이하의 파일을 말한다.
  • 쿠키는 텍스트 파일이므로 '실행'되지 않아 바이러스를 전파할 수 없다.

  3-2) 쿠키를 이용한 통신

  • 사용자가 웹사이트에 방문하면 웹사이트는 사용자의 컴퓨터에 ID 번호를 쿠키 파일에 넣어서 사용자의 컴퓨터에 저장한다.
  • 사용자가 웹 서버에 접속할 때 사용자 컴퓨터에 있는 쿠키를 웹 서버로 전송하는 단계로 전에 방문했던 웹사이트라면 사용자 컴퓨터에 저장된 쿠키를 통해 사용자의 여러 개인 정보를 알 수 있게 된다.

  3-3) 쿠키의 일반적 용도

  • 사이트 개인화 : 쿠키를 통해 사용자의 "성향"까지 파악할 수 있어 쿠키에 심어놓은 정보를 통해 웹사이트에 그대로 반영될 수 있다.
  • 장바구니 시스템
  • 웹 사이트 이용방식 추적 : 사용자의 웹사이트 사용 방식을 제대로 파악해 놓으면 그들이 자주 방문하는 사이트에 광고 베너를 달고, 여러 가지 관련 정보도 담아 놓을 수 있다.
  • 타깃 마케팅

  3-4) 쿠키의 구조

서버에서 "Set-Cookie 응답헤더"를 통해 쿠키를 설정하여 클라이언트로 전달하면 클라이언트는 "Cookie 요청헤더"를 이용해 지속적으로 쿠키를 전달하는 형태로 동작하며, 4개의 속성과 하나의 데이터를 가지는 구조체이다.
  • 패스(Path) : 쿠키 데이터를 생성한 웹 페이지에서만 그 데이터를 읽을 수 있지만 Path 항목을 지정해주면 해당 Path 이하에서는 그 쿠키 데이터를 공유할 수 있다.
  • 도메인 : Path가 하나의 사이트에서 쿠키 데이터를 읽고 쓰는 권한을 설정하는 것이라면, 도메인은 도메인 단위에서 쿠키 데이터를 읽고 쓰는 권한을 설정하게 된다.

  3-5) HTTP 쿠키(Cookie) 관련 보안 속성

  • httpOnly 속성 : "Set-Cookie 응답 헤더"에 설정하는 속성으로 클라이언트에서 스크립트를 통해 해당 쿠키에 접근하는 것을 차단해주는 속성이다. 세션 ID를 저장하고 있는 세션 쿠키를 탈취하는 XSS 공격에 대응
  • secure 속성 : "Set-Cookie 응답 헤더"에 설정하는 속성으로 클라이언트에서 HTTPS 통신일 경우에만 해당 쿠키를 전송하고 HTTP 통신일 경우에는 전송하지 않는 속성이다. 쿠키에 대한 기밀성을 보장하기 위한 목적으로 사용

 4) 세션(Session)

  4-1) 개요

  • 세션은 개별 클라이언트 상태정보를 서버에 저장하는 기술을 말한다.
  • 서버는 개별 클라이언트 세션을 식별하기 위해 "세션 ID"를 부여하고 세션 ID는 세션 쿠키를 이용하여 클라이언트와 서버 간에 주고받는다.
  • 클라이언트 상태정보를 서버에 저장하기 때문에 쿠키 방식에 비해 보안상 안전하다.
  • 정상적인 사용자의 세션 ID 정보를 탈취하여 정상 사용자로 위장한 접근이 가능하게 되는 HTTP 세션 하이재킹 공격이 있다.
대부분의 웹사이트에서는 쿠키와 세션을 혼용하여 보안상 중요한 웹사이트인 경우 상태정보는 세션에 저장하고, 그 밖에 상태를 유지하기 위해 필요한 정보는 쿠키에 저장하는 방식으로 운용되고 있다.

  4-2) 세션 ID 관리

  • 세션 ID는 안전한 서버에서 생성 후 사용되어야 한다.
  • 최소 128비트의 길이로 생성되어야 하며, 안전한 난수 알고리즘을 적용하여 예측이 불가능한 값이 사용되어야 한다.
  • URL Rewrite 기능을 사용하는 경우 세션 ID가 URL에 노출될 수 있으므로, 사용하지 않도록 설계한다.
  • 장기간 접속되어 있는 경우 HTTP Session Hijacking 위험이 있어 일정시간 주기적으로 세션 ID를 재할당 하도록 설계한다.

 

반응형