아메바시큐리티

Section 13. 클라이언트 보안 본문

정보보안기사(필기)

Section 13. 클라이언트 보안

am2ba 2021. 2. 26. 02:55

악성 소프트웨어

- 악성행위 : 의도적으로 사용자가 원하지 않는 기능을 컴퓨터 프로그램에 포함시키거나, 프로그램 자체의 오류로 인해 사용자가 원하지 않는 시스템 충돌, 프로그램 중단, 개인정보 수집, 등 결과를 일으키는 것.

- 프로그램이 실행되면서 기밀성, 가용성, 무결성 등의 보안속성을 침해할 경우 해당 프로그램은 유해한 프로그램으로 간주.

- 의도적으로 컴퓨터 보안속성을 침해할 목적으로 작성된 프로그램 = 악성 프로그램

 

구분 바이러스 트로이목마
자기 복제 있음 없음 매우 강함
형태 파일이나 부트섹터 등 감염 대상 필요 유틸리티로 위장하거나 유틸리티 코드 형태로 삽입 독자적으로 존재
전파 경로 사용자가 감염된 파일을 옮김 사용자가 내려 받음 네트워크를 통해 슷로 전파
주요 증상 해당 컴퓨터의 시스템 및 파일 손상 PC 성능 저하, 좀비 PC 네트워크 성능 저하 

 

악성 소프트웨어 분류

독립형과 기생형

- 호스트 프로그램을 필요로하는 기생형과, 필요로 하지 않는 독립형

- 기생형은 다른 응용프로그램이나 유틸리티나 시스템 프로그램 없이 독립적으로 존재할 수 없음. 바이러스, 논리폭탄, 백도어와 같은 것.

- 독립형의 경우, 운영체제에 의해 스케줄되어 구동 가능. 웜과 좀비프로그램이 속함

 

자기 복제 여부에 따른 분류

- 자기 복제가 가능하면 바이러스성 악성코드, 불가능하면 비-바이러스성 악성코드.

- 웜은 자기복제를 하는 측면에서 바이러스와 공통점을 갖지만, 자체 실행코드를 이용하여 네트워크를 통하여 복제하고 다른 프로그램을 감염시키지 않음.

- 바이러스는 정상적인 프로그램이나 데이터를 파괴할 목적으로 시스템 부트, 메모리 등에 기생하다가 다른 프로그램을 감염

 

바이러스

- 다른 프로그램을 변형시키토록 하여 infect시키는 프로그램. 자신을 변형시켜 실행 가능한 형태이기도 함.

- 변형이란 프로그램에 루틴을 주입해서 바이러스 프로그램의 복제를 만들어내느 걸 말하는데 이것이 다른 contents를 감염시킴.

- 자신을 완벽하게 복제할 수 있는 비법을 가진 명령 코드를 가지고 있음.

 

세대별 분류

1세대 Primitive Virus

- 실력이 뛰어나지 않은 프로그래머가 만들어 구조가 단순하거 분석이 상대적으로 쉬움

- 코드의 변형이나 변화 없이 고정된 크기를 가지며, 주로 메모리에 상주해서 부트 영역이나 파일을 감염

 

2세대 Encryption Virus

- 백신 프로그램이 진단할 수 없도록 바이러스 프로그램의 일부 또는 대부분을 암호화시켜 저장. 실행 시작점 부분에 위치하는 암호해독 데이터는 일정1

 

3세대 Stealth Virus

- 기억장소에 존재하면서 감염된 파일의 길이가 증가하지 않은 것 처럼 보이게 하며, 백신 프로그램이 감염된 부분을 ㅇ릭으려고 할 때 감염되기 전의 내용을 보여줘 바이러스가 없는 것처럼 속이는 바이러스

 

4세대 Armour Virus

- 백신 프로그램 제작자에게 화살을 돌려 숨기기보다, 여러 단계의 암호화와 다양한 기법을 동원하여 분석을 어렵하게 백신 프로그램 개발을 지연시키는 형태의 바이러스

 

5세대 Macro Virus

- 매크로 기능이 있는 MS사 office 제품군 외에 비이조, 오토캐드 등  VBS를 지원하는 다양한 프로그램에서 활동하고 있는 가장 높은 비중을 차지하고 있는 바이러스

 

Macro Virus

- 플랫폼과 무관하게 사용 가능

- 문서를 감염시키고 코드의 실행 부분은 감염시키지 않음

- 쉽게 퍼지는 특성이 있음. (ex 전자메일)

- 문서에 포함되어 있기 때문에 주의를 덜하는 편. 

- ms office의 매크로 외에도, pdf에 자바스크립트를 통해 감염 가능

 

바이러스 방지책

1. 안티 바이러스 방법

- 바이러스 위협에 대한 해결책은 예방

- 예방을 통해 바이러스 공격의 성공률을 줄일수 있지만, 일반적으로 예방으로 목적을 달성하는 것을 불가능. But, 아래의 능력을 갖추는 것.

1) Detection : 감염되면 바이러스가 있는지 판단하고 위치를 파악

2) Identification : 탐지되면 프로그램을 감염시킨 바이러스를 식별

3) Removal : 바이러스를 모든 감염된 시스템에서 제거하여 퍼지지않도록 조치

 

2. Antivirus Filtering Method

- viru signature 방법보다 behavioral virus scanning 방법 주로 사용

 

1) Signature scanning (static)

- 특정 바이러스만이 가진 유일한 형태의 signature를 찾아내는 방법. 

- executable code의 경우에는 이진 스트링으로 표현, 스크립트 등의 언어에서는 명령어의 나열로 표현.

- 대부분의 안티 바이러스 프로그램이 채택하고 있는 방법

- 기존에 알려진 바이러스를 식별할 때 유용하지만 새로운 바이러스인 경우 해당 사항 없음. 

 

2) Behavioral virus scanning (dynamic)

- 바이러스가 수행중에 어떤 행동을 보이는지 추적하는 방법

- 새로운 바이러스와 웜에 대한 대처능력을 가질 수 있음

- 샌드박스를 이용해서 바이러스를 실행하고, 해당 바이러스를 분석하는 방법

 

3. Virus 예방

- 신뢰성 있는 업체의 상업용 소프트웨어 사용

- 안전하다고 생각되는 첨부파일만 열기

- 바이러스 스캐너를 이용하여 정기적으로 검사. 또한 바이러스 스캐너 주기적 업데이트

- Windows Script Host, Active X, VBScript, JavaScript 비활성화

- 현업의 업무에 심하게 방해하지 않는 수준에서 대응 하는 보안정책을 수립. (가장 훌륭한 보호 대책)

 

Worm

- 자신을 복제하여 네트워크 연결을 통해서 컴퓨터에서 컴퓨터로 그 복제본을 전송

- 확산과 더불어 보통 원하지 않는 기능을 수행(악성 행위)

- 전자메일 바이러스는 시스템에서 시스템으로 자신을 확산하기 때문에 웜의 성격을 어느정도 가짐

- 다른 시스템에 직접적으로 영향을 미치지 않는 다는 점에서 트로이목마와 구분되며, 기생하지 않기 때문에 바이러스와도 구분이 가능하다.

 

웜 확산 모델

- 확산은 총 3단계로 이루어진다. 

1) 서서히 시작하는 단계

2) 빠른 확산 단계

3) 서서히 퍼지면서 종료 단계

- 처음으로 감염된 호스트는 각각 2개의 호스트를 감염시킨다. 즉, 지수적으로 증가한다.

- 시간이 증가하면서 이미 감염된 호스트를 공격하는 경우가 많아짐에 따라, 서서히 퍼지면서 종료단계가 발생한다.

 

웜의 실행

- 전파된 시스템에서 시스템의 접근 권한을 확보하고 자신을 실행시키기 위해 Buffer OverFlow, Format String, SQL Injection, PHP Injection 등 공격 가능한 시스템 취약점을 이용

- 시스템의 취약점을 이용하여 관리자 몰래 시스템 접근 권한 확보에 필요한 코드를 실행 후, 접근 권한이 확보되면 나머지 코드를 실행함으로써, 의도된 기능을 수행

- 시스템 접근권한이 확보되면 웜을 백도어로 설치하거나, DDoS 공격에 사용될 수 있는 봇 또는 좀비 프로그램을 다운하거나, 키 로거 등을 설치할 수 있음.

 

 

웜 대응책

- 바이러스와 웜에 대한 대처 기술은 매우 유사함. 

- 웜의 확산이 이루어지면 네트워크 활동량이 증가하기 때문에, 모니터링하면서 기본적인 방어형태를 갖출 수 있음.

 

네트워크 기반의 웜 방어

- 웜 모니터링 소프트웨어

- 한 개 또는 상호 연결된 LAN 집합체로 구성도니 사이트의 엔터프라이즈 네트워크에서 2가지 유형의 모니터링 소프트웨어가 요구

1) Ingress monitors

- 엔터 프라이즈 네트워크와 인터넷 사이의 경계에 위치. 경계 라우터나 외부 침입차단 시스템이나 독립된 수동 모니터의 진입 필터링 소프트웨어의 일부

2) Egress monitors

- 진출 모니터는 나가는 트래픽에서 스캐닝의흔적이나 기타 의심스런 행동을 모니터링하는 소프트웨어

 

Trojan horse

- 자신의 실체를 드러내지 않으며 마치 다른 프로그램의 한 유형인 것 처럼 가장하여 활동하는 프로그램

- 패치 파일, 안티-바이러스 소프트웨어, 소프트웨어 최신 버전 등과 같이 유용한 소프트웨어로 가장하여 설치하게 함으로써, 다른 시스템으로 침투하는 악성 소프트웨어

- 자기 복제를 하지 않으며, 다른 파일을 감염시키거나 변경시키지 않음.

 

특징

- 데이터 파괴

- 대표적인 프로그램 : Back Orifice 에서 발표한 MS Win95/98/2000 관리자용 도구

 

대응책

- 신뢰할 수 없는 파일을 확인 없이 설치하지 않는다.

- 웹 브라우저 등 취약점을 보완하는 패치를 신속하게 적용하여 최신 상태의 시스템을 유지한다.

- 안티-트로이목마 도구를 사용

 

스파이웨어

- 민감한 정보를 수집하여 주기적으로 원격지의 특정한 서버로 보내는 프로그램.

- spy와 ware의 합성어

- 온라인 브라우징 습관에 대한 정보를 수집하여, 스패머가 표적 광고를 보내는데 활용되기도 함

 

애드 웨어

- 자동으로 광고를 생성하는 소프트웨어

- 악의적 활동을 수행하는 것이 아니라, 판매 수익을 올리려는 목적을 가짐

- 일부 애드웨어는 보안 및 사적 권리 논점들을 발생시킬 수 있는 침입적 수단을 사용

 

 

기타 악성 소프트웨어

1. 논리 폭탄

- 조건이 충족되면 트리거가 동작

2. 백도어(트랩도어)

- 기능에 허가받지 않은 접근을 허용하는 프로그램의 변형

3. 모바일 코드 

- 스크립트, 매크로나 다른 이동성 명령어 같은 소프트웨어. 서로 성격이 다른 많은 플랫폼으로 옮겨서 실행 가능

4. Exploit

- 하나 혹은 여러 취약점을 노리는 코드

5. Downloaders

- 공격을 받는 컴퓨터에 다른 아이템을 설치하는 프로그램

6. Auto rooter

- 악성 해커 도구로 새로운 시스템에 원격으로 침입할 때 쓰는 도구

7. Virus generator

- 바이러스를 자동으로 생성하는 도구 모음

8. 스패머 프로그램

- 원하지 않는 대량의 전자우편물을 보내는데 사용

9. Flooders

- 네트워크 컴퓨터 시스템에 대량으로 자료를 보내어, DoS 공격을 감행하는데 사용하는 코드

10. Keyloogers

- 피해를 입은 시스템 키 입력을 갈취

11. Rootkit

- 컴퓨터 시스템에 침입한 후 루트 수준의 접근을 위한 도구모음

12. Attack kit

- 다양한 번식방법과 payoad 기술을 사용하는 새로운 악성코드를 만들어주는 도구모음

13. Zombie

- 감염된 컴퓨터내에서 활성화되는 프로그램. 다른 컴퓨터를 공격하는데 사용(DDoS)

14. Crimeware

- 온라인을 통해 불법적인 행동을 하기 위해 만들어진 프로그램

15. Browser Hijacker

- 브라우저를 하이재킹하여 홈페이지와 검색페이지, 툴바를 통제하고 조작하는 프로그램

16. Dialers

- 모뎀이 특정 번호로 연결되도록 하여, 전화를 걸때마다 공격자가 수익을 얻게 하는 프로그램

17. Joke

- 실제 바이러스는 아니지만, 심리적인 위협을 조장하는 프로그램

18. Hoax

- 남을 속이거나 장난을 목적으로 퍼트리는 가짜 바이러스

 

웹 브라우저 보안

1) 브라우징 보안

- 사이트 마다 보안 요구사항이 다를 수 있음

- 각 영역에 대한 보안 요구사항을 사용자가 정의할 수 있게 해야함

 

사용 가능한 영역

1. 인터넷

- 다른 세가지 영역에 포함되지 않는 웹사이트

2. 로컬 인트라넷

- 사용자의 컴퓨터와 네트워크 상에 있는 웹사이트를 위한 영역

3. 신뢰할 수 있는 사이트

- 사용자가 안전한 콘텐츠를 갖고 있다고 신뢰하는 페이지를 설정하는 웹사이트

4. 제한된 사이트

- 어떤 이유에서든 사용자가 신뢰할 수 없거나 보안 페이지로 설정할 수 없는 웹 사이트

 

 

쿠키

- 넷스케이프에서 처음 사용한 기술, 웹 사이트를 편리하게 이용할 수 있도록 하는 목적

- 사용자가 인터넷 웹사이트에 방문할 때 생기는 4KB 이하의 파일

- 사용자와 웹사이트를 연결해주는 정보다 담겨짐. 

- 쿠키를 이용해 웹 사이트는 클라이언트의 신분 확인 가능

 

쿠키를 이용한 통신

1단계

- 사용자가 웹사이트에 방문

- 쿠키 생성

(예시 : 사용자의 브라우저를 확인한 후, ID 번호를 쿠키 파일에 넣어서 컴퓨터에 저장)

2단계

- 웹서버에 접속할 떄 사용자 컴퓨터에 있느 쿠키를 웹 서버로 전송

- 아이디와 비밀번호를 저장하여 사용한 겨웅에는, 그 정보가 쿠키에 남게됨

 

쿠키의 일반적 용도

1) 사이트 개인화

- 쿠키를 통해 사용자의 아이디와 비밀번호 외에 성향도 파악 가능

2) 장바구니 시스템

- 전자 상거래에서주로 사용되는 장바구니 시스템은 쿠키를 활용한 것

3) 웹 사이트 이용방식 추적

- 자주 방문하는 사이트에 광고 배너를 달거나, 관련 정보를 제공 가능

- 사용자가 많이 방문하지 않은 사이트는 폐쇄하거나 다른 방법으로 사용 가능

4) 타깃 마케팅

- 광고 대행업체가 제 3의 업체의 쿠키를 사용자 컴퓨터에 저장하고 사용자의 이용정보를 수집

- 수집한 사용자 정보를 광고업체에 판매해, 그들의 광고가 얼마나 많은 사람들이 보는지, 선호하는것은 무엇인지 알 수 있게 함.

 

쿠키의 구조

- 4개의 속성과 하나의 데이터를 가지는 구조체

- 서버는 Set-Cookie 헤더를 포함시키는 방식으로 쿠키 설정

- 이름-값 쌍과 선택적인 attribute로 구성

Set-Cookie: name=value; expires=[Date]; domain[Domain]; path=[Path]; [secure]

위는 쿠키의 기본 구조이다.

 

유효기간

- 기본적으로 브라우저가 종료될 때까지 쿠키의 데이터를 사용 가능

- 유효기간을 지정하면 브라우저가 종료되어도 지정한 기간 동안은 쿠키 데이터 read/write 가능

- 유효기간이 지나면 소멸. 실제로 파일이 지워지지 않아도, 읽을 수 없게 됨

 

패스

- 쿠키 데이터를 생성한 웹 페이지에서만 읽기 가능.

- path를 지정하는 경우, 해당 Path 이하에서는 공유 가능

 

도메인

- 패스 속성을 확장한 것.

- Path가 도메인 단위에서 쿠키 데이터를 읽고 쓰는 권한을 설정하는 것

 

HTTP 쿠키 관련 보안 속성

1) httpOnly 속성

- [Set-Cookie 응답 헤더]에서 설정하는 속성. 

- 클라이언트에서 스크립트를 통해 쿠키에 접근하는 것을 차단해주는 속성

- XSS 공격에 대응하기 위해 사용

 

2) secure 속성

- [Set-Cookie 응답 헤더]에서 설정하는 속성. 

- 클라이언트에서 HTTPS 통신일 경우에만 쿠키를 전송하고, HTTP인 경우 전송하지 않는 속성

- 쿠키의 기밀성을 보장하기 위한 목적으로 사용

 

쿠키에 대한 오해

1) 바이러스 전파

- 쿠키는 텍스트 파일이기 때문에 실행이 되지 않음

- 쿠키는 단순 정보를 가진 텍스트 파일이기 때문에 바이러스 전파 불가능

 

2) 사용자 컴퓨터에 피해 입히기

- 쿠키에는 웹사이트에서 만든 특정 데이터만 존재. 어떠한 정보도 없음

- 실행 파일이 아니기 때문에 명령어 수행 불가능

 

3) 다른 웹사이트에서 읽기

- 쿠니는 이름,값,유효기간 등으로 이루어짐.

- 저장된 domain 이름을 갖고 있는 사이트에서만 유효함

 

쿠키 보안 취약점 공격

1) XSS 공격

- 서버사이드 스크립트 언어를 이용하는 취약점

- 자바스크립트가 사용자의 컴퓨터에서 실행된다는 점을 이용한 공격. 

- document.cookie 라는 명령어는 쿠키값을 활용하여 다양한 서비스를 제공가능

- 쿠키값을 유출하기 위한 목적으로 사용

 

2) Sniffing 공격

- 쿠키값이 네트워크를 통해 전송되는 것을 이용한 공격

- 쿠키 값을 따로 암호화하지 않고 전송된다면, 쿠키값 탈취 가능

 

3) 공용 PC에서 쿠키값 유출

- 쿠키는 사용자의 하드디스크에 저장

- PC방이나, 전산실등에 인터넷을 사용하여 생성된 쿠키를 탈취하는 방법

 

세션

- 개별 클라이언트 상태 정보를 서버에 저장하는 기술

- 개별 클라이언트 섹션을 식별하기 위해 Session ID를 부여.

- Session Cookie를 이용하여 클라이언트와 서버간에 Session ID 공유

- 클라이언트 상태정보를 서버에 저장하기 때문에 쿠키 방식보다 보안상 안전

- 정상적인 사용자의 Session ID를 탈취한다면 위장 접근 가능 (Session ID Hijacking)

 

안전한 세션 관리 

1. 세션 ID 생성

- 안전한 서버에서 생성후 사용되어야 함

- 최소 128bit 길이로 생성되어야하며, 안전한 난수 알고리즘을 적용하여 예측이 불가능하게 해야함

 

2. 세션 ID 사용

- URL Rewrite 기능을 사용하는 경우, ID가 URL에 노출 가능

 

3. 세션 ID 폐기

- 일정시간 주기적으로 세션 ID를 재할당하도록 설계