외로운 Nova의 작업실

정보보안기사 필기 - 12(클라이언트 보안) 본문

Certification/정보보안기사

정보보안기사 필기 - 12(클라이언트 보안)

Nova_ 2022. 11. 15. 15:57

- 악성 소프트웨어(악성 코드)

악성 소프트웨어란 컴퓨터의 보안 속성을 침해할 목적으로 작성된 소프트웨어를 지칭하는 말로 바이러스, 트로이목마, 웜등이 대표적으로 존재합니다.

 

- 바이러스

바이러스는 컴퓨터 상의 프로그램이나 실행 콘텐츠의 전송자 속에 은밀히 내장되며 자신을 완벽하게 복제할 수 있는 비법을 가진 명령 코드를 가지고 있어 자신을 복제하여 다른 파일을 감염시킵니다.

 

<세대별 분류>

  • 제1세대 원시형 바이러스 : 코드의 변형이나 변화 없이 고정된 크기를 가지며 주로 기억장소에 상주해서 부트영역이나 파일을 감염시킵니다.
  • 제2세대 암호화 바이러스 : 백신 프로그램이 진단할 수 없도록 바이러스 프로그램의 일부 또는 대부분을 암호화 시켜 저장합니다.
  • 제3세대 은폐형 바이러스 : 바이러스가 없는 것처럼 행동하여 백신 프로그램이나 사용자를 속입니다.
  • 제4세대 갑옷형 바이러스 : 여러 단계의 암호화와 다양한 기법을 동원하여 바이러스 분석을 어렵게하고 백신 프로그램 개발을 지연시킵니다.
  • 제5세대 매크로 바이러스 : 매크로 기능이 있는 MS오피스 제품군 이외에 비지오, 오토캐드 특히 Adobe사의 PDF 문서에 자바스크립트 같은 다양한 형태의 스크립트가 포함되어 파일이 열릴때 실행되어 다른 파일을 감염시킵니다. 실행파일을 다룰때보다 사용자가 주의를 덜하기때문에 피해가 더 크고 주로 전자 메일을 통해 사용자들이 문서를 열면서 감염됩니다.

- 바이러스 방지책

<안티 바이러스 방법>

탐지 : 일단 감염되면 바이러스가 있는지 판단하고 위치를 파악합니다.

식별 : 탐지 되면 프로그램을 감염시킨 특정 바이러스를 식별합니다.

제거 : 바이러스를 모든 감염된 시스템에서 제거하여 더이상 퍼지지 않도록 합니다.

 

<안티 바이러스 필터링 방법>

signature scanning 방법 : 특정 바이러스만이 가진 유일한 형태의 signature(코드)를 찾아내는 방법으로 현재까지 대부분의 안티바이러스 프로그램이 채택하고 있는 방법입니다.

behavioral virus scanning 방법 : 바이러스가 수행중에 어떤 행동을 보이는지 추적하는 방법으로 새로운 바이러스와 웜에대한 대처 능력을 가질 수 있게되었습니다.

 

- 웜(worm)

웜은 자신을 복제하여 네트워크 연결을 통해서 컴퓨터에서 컴퓨터로 그 복제본을 전송합니다. 일단 한 컴퓨터에 도착하게되면 웜은 복제를 시작하고 다시 확산하기 시작합니다. 웜은 다른 시스템에 직접적인 영향을 미치지 않는다는 점에서 트로이목마와 구분되며 다른 프로그램에 기생하지 않는다는 점에서 바이러스와 구분됩니다.

 

<웜 확산 모델>

웜의 확산은 3단계로 이루어집니다.

  1. 서서히 시작하는 단계 : 처음 웜에 감염된 호스트는 두개의 호스트를 감염시키고 천천히 감염된 호스트 수가 증가합니다.
  2. 빠른 확산단계 : 웜이 어느정도 확산이 되면 급격하게 빠른속도로 호스트들을 감염시킵니다.
  3. 서서히 퍼지면서 종료 단계 : 감염된 호스트는 이미 감염된 호스트를 공격하는데 시간을 허비하면서 감염속도가 줄어듭니다.

 

<웜의 실행>

  • 웜은 시스템의 접근 권한을 확보하고 자신을 실행시키기위해서 버퍼오버플로우, 포멧 스트링 버그, SQL삽입, PHP 삽입등 공격 가능한 시스템의 취약점을 사용합니다.
  • 접근 권한이 확보되면 나머지 코드를 실행함으로서 의도된 기능을 수행합니다. 예를 들면 웜을 백도어로 설치하거나, DDos 공격에 사용할 수 있는 좀비 프로그램을 다운로드하고 실행하거나 키로거와 같은 프로그램을 설치할 수 있습니다.

- 웜 방지책

<안티바이러스처럼 방지>

바이러스와 유사한 성격을 가지고 있어 안티바이러스 소프트웨어를 사용하여 감지합니다.

 

<네트워크 기반 웜 방어>

웜 확산이 이루어지면 네트워크 활동이 활발해지기때문에, 네트워크 활동과 사용을 모니터링하여 웜을 감지합니다. 예시로는 네트워크-기반 웜 방어가 있으며 웜 모니터링 소프트웨어이며 두가지 유형의 모니터링 소프트웨어가 필요합니다. 

  • 진입 모니터 : 회사 네트워크와 인터넷 사이의 경계에 위치하여 경계 라우터나 외부 침입차단시스템이나 독립된 수동 모니터의 진입 필터링소프트웨어의 일부입니다.
  • 진출 모니터 : 나가는 트래픽에서 스캐닝의 흔적이나 기타 의심스런 행동을 모니터링하여 웹 공격의 출처를 잡아냅니다.

- 트로이목마(trojan horse)

트로이목마는 다른 프로그램의 한 유형인 것 처럼 가장하여 활동하는 프로그램으로 안티바이러스 소프트웨어같이 유용하거나 재미있는 소프트웨어로 가장하여 설치하게 함으로써 다른 시스템으로 침투하는 악성 소프트웨어입니다. 트로이목마는 자기 복제를 하지 않으며 다른 파일을 감염시키거나 변경시키지 않습니다. 다만, 트로이목마가 포함된 프로그램이 실행되는 순간 시스템은 공격자에게 시스템을 통제할 수 있는 권한을 부여하게됩니다. 트로이목마의 또 다른 목적은 데이터파괴로 겉보기에는 유용한 활동을 하는 것처럼 보이지만 몰래 사용자 파일을 지우고 있을 수 있습니다. 대표적인 트로이목마 Back Orifice는 해커들이 백도어로 이용하기에 적합하도록 개발되었습니다. 트로이목마의 일반적인 기능은 다음과 같습니다.

  • 원격 조정
  • 패스워드 가로채기
  • 키보드 입력 가로채기
  • 시스템 파일 파괴

<스파이웨어>

스파이웨어는 트로이 목마와 비슷한 종류로 민감한 정보를 수집하여 주기적으로 원격지의 특정한 서버에 보내는 프로그램으로 대상 컴퓨터에 은밀하게 설치되는 악성 소프트웨어의 유형입니다. 수집된 데이터는 신원 도용, 스패밍, 사기 등과 같은 악의적인 활동을 위해 사용됩니다.

 

- 웹 브라우저 보안

사이트에 따라 서로 다른 보안 요구사항이 필요할때가 있습니다. 이러한 여러 유형의 사이트를 관리하기위해 보안영역을 정하고 각 영역에따라 보안 요구사항을 사용자가 정의할 수 있게합니다. 아래는 보안 영역과 그에따른 요구사항입니다.

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

- 쿠키(Cookie)

쿠키는 사용자가 인터넷 웹사이트에 방문할때 생기는 4KB 이하의 텍스트 파일을 말합니다. 사용자들이 웹사이트를 편리하게 이용 할 수 있도록 하기위한 목적으로 만들어졌습니다. 이 쿠키내용을 이용하여 클라이언트의 신분을 알 수 있게해줍니다.

 

<쿠키를 이용한 통신>

  1. 웹사이트는 사용자가 접속하면 사용자의 브라우저를 확인하는 ID번호를 쿠키 파일에 넣어서 사용자에게 전송하고 브라우저는 이를 컴퓨터에 저장합니다.
  2. 사용자가 다시 웹서버에 접속할떄 사용자 컴퓨터에 있는 쿠키를 웹서버로 전송하는 단계로 웹사이트는 받은 쿠키를 통해 사용자의 여러 개인 정보를 알 수 있습니다.
  3. 아이디와 비밀번호를 저장하여 사용한경우에는 아이디와 비밀번호를 다시 입력하지 않아도 로그인 할 수 있습니다.

<쿠키의 쓰임>

  • 사이트 개인화 : 쿠키를 통해 사용자의 성향을 파악해 사이트를 사용자 맞춤으로 반영할 수 있습니다.
  • 장바구니 시스템 : 사용자가 물건을 고르면 그 내역을 쿠키에 저장하여 서버로부터 그 내역에 대한 정보를 받아볼 수 있습니다.
  • 웹 사이트 이용방식 추적 : 사용자가 자주 방문하는 사이트에 광고 배너를 달고 여러가지 관련 정보를 담아 놓습니다. 또한 많이 방문하지 않은 사이트는 폐쇄하거나 다른 방법으로 발전시킵니다.
  • 타깃 마케팅 : 광고 대행 업체는 사용자가 광고에 접속하는지에대한 쿠키를 저장하고 수집합니다. 이렇게 수집한 사용자 정보는 광고업체에 판매해 그들의 광고를 얼마나 많은 사람들이 보고 고객이 선호하는 광고가 무엇인지 알려줍니다.

<쿠키의 구조>

쿠키는 4개의 속성과 하나의 데이터를 가지는 구조체로 서버의 응답에 Set-Cookie 헤더를 포함하는 방식으로 쿠키를 설정합니다.

Set-Cookie: name=value; expires=[date]; domain=[domain]; path=[path]; [secure]
  • expires(유효기간) : 기본적으로 쿠키는 브라우저가 종료되면 쿠키의 내용은 소멸됩니다. 하지만 유효기간을 지정하면 브라우저가 종료되어도 지정한 기간동안 쿠키 데이터를 읽고 쓸 수 있게됩니다.
  • domain(도메인) : 도메인 속성은 패스 속성을 확장한 것으로 도메인 단위에서 쿠키 데이터를 읽고 쓰는 권한을 설정해줍니다.
  • path(패쓰) : 일반적으로 쿠키는 쿠키 데이터를 생성한 웹페이지에서만 그 데이터를 읽을 수 있지만 path 항목을 지정해주면 해당 path 이하에서는 그 쿠키를 공유할 수 있게해줍니다.

 

<HTTP 쿠키 관련 보안 속성>

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

 

<쿠키에대한 오해>

  • 바이러스 전파 : 쿠키는 텍스트 파일로 실행되지 않아서 바이러스를 전파할 수 없습니다.
  • 사용자 컴퓨터 피해 입히기 : 쿠키는 텍스트 파일로 스스로 디렉터리를 읽거나 파일을 지우는 기능은 절대 수행 할 수 없습니다.
  • 다른 웹사이트에서 읽기 : 쿠키는 쿠키안에 저장된 도메인 이름을 갖고 있는 사이트에서만 유효합니다.

<쿠키 보안 취약점>

  • XSS(cross-site scripting) 공격 : 자바스크립트는 클라이언트측에서 실행되는 점을 이용한 공격으로 document.cookie 라는 명어를 통해 사이트에서 쿠키값을 변조하거 유출할 수 있습니다.
  • 스니핑(sniffing) 공격 : 쿠키 값을 암호화하지않고 전송한다면 네트워크 스니핑 공격을 통해 쿠키 값을 탈취할 수 있습니다.
  • 공용 PC에서 쿠키값 유출 : 쿠키파일은 사용자의 하드디스크에 저장되며 간단한 방법으로 접근 가능합니다. 따라서 공용 PC를 사용하여 인터넷을 하면 쿠키값이 존재하여 공격자는 쿠키정보를 쉽게 얻어낼 수 있습니다.

- 세션(session)

쿠키로 로그인 정보를 서버에게 보내주는 과정에서 공격자가 쉽게 그 정보에 접근할 수 있으므로 로그인 정보를 서버에 저장하고 그 정보에 대응되는 세션ID를 만들어 세션ID를 쿠키로 클라이언트에게 보내줌으로서 공격자가 쿠키를 탈취해도 로그인 정보를 알 수 없게 만들어줍니다. 사용자는 세션ID 쿠키를 서버에 전달하면 서버는 그에 맞는 로그인 정보로 응답하게됩니다. 하지만, 공격자가 정상적인 사용자의 세션 ID 정보를 탈취하여 정상 사용자로 위장하여 접근할 수 있는데, 이를 HTTP 세션 하이재킹이라고 합니다. 세션은 서버에 저장되기때문에 모든 정보를 저장하게되면 서버에 부하를 주기때문에 인증과 같은 보안과 밀접한 곤계에 있는 상태 정보는 세션으로 저장하고 그 외의 것은 쿠키로 통신하게됩니다.

Comments