악성 소프트웨어
컴퓨터 프로그램이 의도적 또는 비의도적으로 실행되면서 기밀성, 가용성, 무결성 등의 보안속성을 침해할 경우 해당 프로그램은 유해한 프로그램으로 간주된다. 특히 의도적으로 컴퓨터의 보안속성을 침해할 목적으로 작성된 프로그램을 악성 프로그램이라 한다.
- 분류
1) 독립형과 기생형
악성 소프트웨어는 호스트 프로그램을 필요로 하는 기생형과 필요로 하지 않는 독립형으로 나눌 수 있다.
기생형 프로그램은 프로그램 단편으로 다른 실제 응용 프로그램이나 유틸리티나 시스템 프로그램 없이 독립적으로 존재할 수 없다.
독립형 프로그램은 자체적으로 구동될 수 있는 프로그램으로 운영체제에 의해 스케줄되어 구동될 수 있다.
2) 자기 복제
악성코드는 자기 복제 여부에 따라 바이러스성 악성코드와 비-바이러스성 악성코드로 나뉜다. 바이러스성 악성코드에는 웜과 바이러스가 있고, 비-바이러스성 악성코드에는 트로이목마와 백도어가 있다.
웜은 자기 복제를 한다는 측면에서 바이러스와 공통점을 갖는다. 하지만 바이러스와 달리 숙주 파일 없이 자체 실행코드를 사용해 네트워크를 통해 자기 자신을 복제해 전파시키며 다른 프로그램을 감염시키지 않는다.
그러나 바이러스는 정상적인 프로그램이나 데이터를 파괴할 목적으로 시스템 부트, 메모리, 파일 영역 등에 기생하다가 다른 프로그램을 감염시킨다.
바이러스(Virus)
컴퓨터 바이러스는 다른 프로그램을 변형시키도록 하여 감염시키는 프로그램 단편이며 자신을 변형시켜 실행 가능한 형태이기도 하다. 변형이란 원래 프로그램에 루틴을 주입해서 바이러스 프로그램의 복제를 만들어내는 것을 말하는데 이것이 다른 컨텐츠를 감염시킨다.
컴퓨터 바이러스는 자신을 완벽하게 복제할 수 있는 비법을 가진 명령 코드를 가지고 있다. 전형적으로 바이러스는 컴퓨터 상의 프로그램이나 실행 컨텐츠의 전송자 속에 내장된다.
- 세대별 분류
① 제1세대 원시형 바이러스(Primitive Virus)
프로그램 구조가 단순하고 분석이 상대적으로 쉽다. 코드의 변형이나 변화 없이 고정된 크기를 가지며 주로 기억장소에 상주해서 부트 영역이나 파일을 감염시킨다.
② 제2세대 암호화 바이러스(Encryption Virus)
백신 프로그램이 진단할 수 없도록 바이러스 프로그램의 일부 또는 대부분을 암호화시켜 저장한다. 실행 시작점 부분에 위치하는 암호해독 데이터는 항상 일정하다.
③ 제3세대 은폐형 바이러스(Stealth Virus)
기억장소에 존재하면서 감염된 파일의 길이가 증가하지 않은 것처럼 보이게 하며 백신 프로그램이 감염된 부분을 읽으려고 할 때 감염되기 전의 내용을 보여줘 바이러스가 없는 것처럼 백신 프로그램이나 사용자를 속인다.
④ 제4세대 갑옷형 바이러스(Armor/Armour Virus)
백신 프로그램 제작자에게 공격의 화살을 돌려 백신 프로그램으로부터 숨기기보다는 여러 단계의 암호화와 다양한 기법을 동원하여 바이러스 분석을 어렵게 하고 백신 프로그램 개발을 지연시킨다.
⑤ 제5세대 매크로 바이러스(Macro Virus)
매크로 기능이 있는 다양한 프로그램에서 활동하기 때문에 현재 등장하고 있는 바이러스 중 가장 높은 비중을 차지한다.
그 중 매크로 바이러스는 다른 바이러스들보다 더 위협적이다. 매크로 바이러스는 플랫폼과 무관하게 사용되며 문서를 감염시키고 코드의 실행 부분은 감염시키지 않는다. 또 쉽게 퍼지며 실행 파일이 아니기 때문에 주의를 덜하게 되어 피해가 더욱 크다.
- 바이러스 방지책
· 안티 바이러스 방법
바이러스 웨협에 대한 해결책은 예방이지만 이 목적을 달성하는 것이 일반적으로 불가능하므로 탐지, 식별, 제거 절차를 따른다.
탐지는 일단 감염되면 바이러스가 있는지 판단하고 위치를 파악하는 것을 말한다.
식별은 탐지가 되면 프로그램을 감염시킨 특정 바이러스를 식별하는 과정이다.
제거는 바이러스를 모든 감염된 시스템에서 제거하여 더 이상 퍼지지 않게 하는 것이다.
· 안티 바이러스 필터링(Antivirus Filtering Method)
바이러스를 검출하기 위해 virus signature 방법과 behavioral virus scanning 방법이 사용된다.
① signature scanning
특정 바이러스만이 지닌 유일한 형태의 signature를 찾아내는 방법이다. 이런 signature는 실행 가능한 코드의 경우에는 이진 스트링으로 표현되고 스크립트 등의 언어로 된 바이러스에서는 명령어의 나열로 나타난다.
현재까지 대부분의 안티바이러스 프로그램이 채택하고 있는 방법이다.
②behavioral virus scanning
바이러스가 수행 중에 어떤 행동을 보이는지를 추적하는 방법이다. signature scanning 방법에서 불가능했던 새로운 바이러스와 웜에 대한 대처 능력을 가질 수 있다.
웜(Worm)
웜은 자신을 복제하여 네트워크를 통해 컴퓨터에서 컴퓨터로 그 복제본을 전송한다. 한 컴퓨터에 도착하게 되면 웜은 복제를 시작하고 다시 확산되기 시작한다.
웜은 다른 시스템에 직접적인 영향을 미치지 않는다는 점에서 트로이목마와 구분되며 다른 프로그램에 기생하지 않는다는 점에서 컴퓨터 바이러스와 구분된다.
웜은 전파된 시스템에서 시스템의 접근 권한을 확보하고 자신을 실행시키기 위해 버퍼 오버플로우, 포맷 스트링, SQL Injection, PHP Injection 등 공격 가능한 시스템 취약점을 이용한다.
즉, 시스템의 취약점을 이용하여 관리자 몰래 시스템 접근 권한 확보에 필요한 코드를 실행한 후 접근 권한이 확보되면 나머지 코드를 실행함으로써 의도된 기능을 수행한다.
- 웜 대응책
바이러스와 웜에 대한 대처 기술은 매우 유사하다. 웜이 머신 안에 상주하게 되면 안티바이러스 소프트웨어는 이를 감지할 수 있다. 웜 확산이 이루어지면 네트워크 활동이 활발해지기 때문에 네트워크 활동과 사용을 모니터링하면 웜에 대한 기본적인 방어형태를 갖출 수 있다.
· 네트워크 기반 웜 방어
네트워크-기반 웜 방어는 웜 모니터링 소프트웨어이다. 한 개 또는 상호 연결된 LAN 집합체로 구성된 사이트의 엔터프라이즈 네트워크에서는 두 가지 유형의 모니터링 소프트웨어가 필요하다.
1) 진입 모니터 (Ingress monitors)
이 모니터는 엔터프라이즈 네트워크와 인터넷 사이의 경계에 위치한다. 이들은 경계 라우터나 외부 방화벽이나 독립된 수동 모니터의 진입 필터링 소프트웨어의 일부이다.
2) 진출 모니터 (Egress monitors)
진출 모니터는 나가는 트래픽에서 스캐닝의 흔적이나 기타 의심스런 행동을 모니터링해서 웹 공격의 출처를 잡아내도록 설계되었다.
트로이목마(Trojan horse)
자신의 실체를 드러내지 않으면서 마치 다른 프로그램의 한 유형인 것처럼 가장하여 활동하는 프로그램이다.
패치 파일, 안티 바이러스 소프트웨어 등과 같이 유용하거나 재미있는 소프트웨어로 가장하여 설치하게 함으로써 다른 시스템으로 침투하는 악성 소프트웨어이다.
트로이목마는 자기 복제를 하지 않으며 다른 파일을 감염시키거나 변경시키지 않는다. 하지만 트로이목마가 포함된 프로그램이 실행되는 순간, 시스템은 공격자에게 시스템을 통제할 수 있는 권한을 부여하게 된다.
트로이목마를 사용하는 또 다른 목적은 데이터 파괴이다. 프로그램이 겉보기에는 유용한 작업을 수행하는 것처럼 보이지만 몰래 사용자 파일을 지우고 있을 수 있다.
- 스파이웨어(Spyware)
트로이목마와 비슷한 종류로 스파이웨어가 있다. 스파이웨어는 민감한 정보를 수집하여 주기적으로 원격지의 특정한 서버에 보내는 프로그램으로 대상 컴퓨터에 은밀하게 설치되는 악성 소프트웨어의 유형이다.
수집된 데이터는 신원 도용, 스패밍, 사기 등과 같은 악의적 활동을 위해 사용된다. 스파이웨어는 또한 온라인 브라우징 습관에 대한 정보를 수집하여 스패머가 표적 광고를 보내는데 활용하기도 한다.
기타 악성 소프트웨어
· 논리폭탄 - 조건이 충족될 시 트리거 작동
· Downloaders - 공격을 받는 컴퓨터에 다른 아이템을 설치하는 프로그램. 보통 다운로더는 전자우편을 통해 전달됨
· Flooders - 네트워크 컴퓨터 시스템에 대량의 자료를 보내어 DoS 공격을 감행하는데 사용하는 코드
쿠키(Cookie)
쿠키는 넷스케이프에서 처음 사용한 기술로 사용자들이 웹 사이트를 편리하게 이용할 수 있도록 하기 위한 목적으로 만들어졌다. 그러나 최근에 많은 웹 사이트가 이 쿠키를 이용하여 사용자의 정보를 수집하고 있다.
쿠키에는 사용자와 웹 사이트를 연결해 주는 정보가 담겨져 있기 때문에 나중에 클라이언트가 해당 사이트에 접속하려고 할 때 이 쿠키 내용을 이용하여 클라이언트의 신분을 알 수 있게 해준다.
- 쿠키의 구조
쿠키는 4개의 속성과 하나의 데이터를 가지는 구조체이다. 서버는 응답에 Set-Cookie 헤더를 포함시키는 방식으로 쿠키를 설정한다. 쿠키는 이름-값 쌍과 선택적인 애튜리뷰트로 구성된다.
Set-Cookie: name=value; expires=[Date]; domain=[Domain]; path=[Path]; [secure]
쿠키가 생성되면 기본적으로 브라우저가 종료될 때까지는 쿠키의 데이터를 사용할 수 있다. 유효 기간을 지정하면 브라우저가 종료되어도 지정한 기간 동안은 쿠키 데이터를 읽고 쓸 수 있게 된다. 유효 기간이 지나면 파일이 지워지지는 않아도 데이터를 브라우저에서 읽을 수 없게 된다.
- HTTP 쿠키 관련 보안 속성
1) httpOnly 속성
Set-Cookie 응답 헤더에 설정하는 속성으로 클라이언트에서 스크립트를 통해 해당 쿠키에 접근하는 것을 차단해주는 속성이다. 일반적으로 세션 ID를 저장하고 있는 세션 쿠키를 탈취하기 위한 XSS 공격에 대응하기 위해 사용한다.
2) secure 속성
Set-Cookie 응답 헤더에 설정하는 속성으로 클라이언트에서 HTTPS 통신일 경우에만 해당 쿠키를 전송하고 HTTP 통신일 경우에는 전송하지 않는 속성이다. (기밀성 보장)
- 쿠키 보안 취약점
1) XSS 공격
JavaScript가 사용자의 컴퓨터에서 실행된다는 점을 이용한 공격이다. document.cookie 명령어를 이용해 쿠키값을 유출하는 것이 일반적
2) 스니핑 공격
쿠키 값이 암호화되지 않고 전송된다면 네트워크 스니핑 공격을 통해 쿠키값을 탈취할 수 있다.
3) 공용 PC에서 쿠키값 유출
쿠키 파일은 사용자의 하드디스크에 저장되며 간단한 방법으로 접근 가능하다. 공격자는 이를 이용해 공용 PC의 하드디스크에 저장된 쿠키 정보를 쉽게 얻어낼 수 있다.
세션(Session)
쿠키와 달리 클라이언트 상태정보를 서버에 저장하는 기술을 말한다. 서버는 개별 클라이언트 세션을 구분하기 위해 SessionID를 부여하고 SessionID는 세션 쿠키를 이용하여 클라이언트와 서버 간에 주고받는다.
만약 공격자가 정상적인 사용자의 세션 ID를 탈취한다면 정상 사용자로 위장한 접근이 가능하다. 이런 공격을 HTTP 세션 하이재킹(Session ID Hijacking)이라 한다.
'정보보안기사' 카테고리의 다른 글
유닉스 / 리눅스 서버 보안 - 1 (0) | 2023.03.23 |
---|---|
윈도우 서버 보안 (0) | 2023.03.22 |
보안 운영체제 (0) | 2023.03.20 |
접근통제 보안위협 및 대응책 (1) | 2023.03.19 |
접근통제 보안 모델 (0) | 2023.03.18 |