3. 시스템 레벨에서의 웜 방어
상태바
3. 시스템 레벨에서의 웜 방어
  • 승인 2004.11.03 00:00
  • 댓글 0
이 기사를 공유합니다

[Tech Guide] 웜의 진보와 기술동향
자사 환경에 적합한 사전 보안 정책 수립 필수
사용자 편리성·보안성 고려해야 … 다계층 레벨 보안 정책 혼합으로 PC 보안 ‘OK’

이동범 어울림정보기술 시스템보안사업부장

지난 2차례에 걸쳐 웜의 진보와 기술동향 및 이에 대한 네트워크 레벨에서의 대응방안을 살펴봤다. 이번 마지막 연재에서는 시스템 레벨에서의 효과적인 웜 대응방안에 대해 살펴보자. <편집자>

처음 웜에 대해서 얘기하면서 웜의 진보와 기술동향에서 언급했듯이 웜은 다양한 전파방법을 가지고 있다. 즉, ① 넷스카이(Netsky), 베이글(Balge), 마이둠(Mydoom)과 같이 이메일을 통해 전파되는 웜, ② SQL 슬래머, 새서, 웰치아(Welichia), 블래스터(Blaster)와 같이 OS 서비스 취약성을 이용하는 웜, ③ 봇(Bot) 계열의 웜과 같이 윈도 공유 매커니즘을 이용하는 웜 등 웜은 계속해서 진화하고 있다.

시스템 레벨에서의 웜 방어
지난 두 번째 연재, 네트워크 레벨에서의 웜 방어는 일차적으로 웜에 감염된 PC에서 더 이상 추가적인 장애 및 피해 즉, 스위치나 라우터, 방화벽 등 네트워크 장비 장애로 인한 네트워크 인프라의 가용성(Availability)을 위협하기 이전에 조치할 수 있는 방안을 설명했다.
눈치가 빠른 독자들라면 여기서 다음과 같은 생각을 하게 될 것이다. 네트워크 장비의 장애를 유발시킨 PC들이 웜에 감염되지 않게 하면 되는 게 아닌가? 이는 지극히 당연한 생각이면서 가장 어려운 부분이다.

웜 및 바이러스로부터 PC를 보호한다는 것은 현재의 대응체계에서는 백신 엔진 DB를 가지고서 대응을 한다. 하지만 이런 패턴 DB를 이용한 방식은 알려지지 않은 신종이나 변종 웜, 바이러스에 대해서는 무용지물인 경우가 많다. 웜에 능동적으로 대응하기 위해서는 먼저 웜들이 실제 PC에 감염되면 어떠한 피해 증상을 입히는지 그 특징을 알아야 할 것이다.

<표 1>은 인터넷침해사고대응지원센터(www.krcert. or.kr)에서 제공되어지는 웜, 바이러스정보에 대한 보안문서 내용 중 일부이다.
웜을 비롯한 대다수 악성코드의 경우 PC에서 자기 자신을 윈도 시스템 폴더에 복제하고 재부팅시에도 웜이 동작하기 위해 특정한 값을 레지스트리 키에 등록한다.
또한 백신 회사 등의 웹 사이트에 접속을 하지 못하도록 시스템의 호스트 파일(C:\Windows\Sytem32\Drivers\ etc\hosts)을 변조하기도 하고 index.dat 파일(사용자의 인터넷 사용 히스토리 등)을 외부로 유출하기도 한다.
이와 같은 특징을 기반으로 웜 프로세스의 행위 분석을 통해 파일 접근제어 및 레지스트리 접근제어 등의 영역에서 조치를 취함으로써 웜으로부터의 PC 감염을 사전에 막을 수 있다.
또한 여러 조치에도 불구하고 웜 및 바이러스 등에 감염된 이후에도 이러한 웜들이 이메일을 통해 다른 시스템으로 전파되어 그 피해가 확산되는 것을 메일 관련 파일(wab, dbx, eml 등)에 대한 프로세스 액세스 컨트롤을 통해 효과적으로 방어할 수 있다.
구체적으로 알 수 없는 혹은 알려지지 않은 웜들, 이미 알려진 웜에 대해 어떻게 사용자의 시스템을 효과적으로 방어하는지 기술적으로 살펴보자.

1. 파일 시스템 보호
a. 주요 디렉토리에 대해 실행파일 생성 차단

윈도 디렉토리(C:\Windows)나, 시스템 디렉토리(C:\Widows\System32)에 새로운 실행가능 파일이 설치되는 경우는, OS 패치나 사용자가 의도한 소프트웨어 설치일 가능성과, 웜 및 바이러스에 의한 ‘사용자 의지 없이’ 설치되는 경우가 있다.
이에 대해 위와 같은 주요 디렉토리에 대해 실행파일이 생성되는 것을 기본적으로 차단해, 사용자가 ‘의도적’으로 OS 패치나 소프트웨어 설치 작업을 할 때에는 ‘차단’ 기능을 잠시 해제한 상태로 작업을 수행하고 그 이후에는 다시 차단 기능을 활성화하도록 한다.
이렇게 하면 ‘사용자가 의도하지 않은’채로 실행파일이 설치되려 할 경우 이 시도는 차단되며, 사용자에게 경고 메시지 등이 제공되어 사용자에게 이 시도가 웜에 의한 것일 수 있음을 공지하고 이에 대한 대처를 할 수 있도록 하는 것이다.

b. 중요 파일의 변조 금지
사용자 PC 시스템의 작동에 영향을 미치는 (미리 알려진) ‘중요 파일’에 대해 ‘변조’됨을 방지해, 웜 및 바이러스에 의해 이 파일들이 손상되어 시스템이 비정상 작동하게 될 가능성을 근본적으로 차단한다. 예를 들어 다음과 같은 윈도 주요 디렉토리에 대해 액세스(Write/Rename)시 사용자에게 경고한다.
%windir%
%windir%system , %windir%system32
%Windows\Start Menu\Programs\Startup\Documents and Settings\<현재 사용자 이름>\Start Menu\Programs\Startup2. 레지스트리 보호
a. 주요 레지스트리 수정 차단

웜 및 바이러스에 의해 사용자 PC 시스템의 작동에 영향을 미치는 미리 알려진 ‘중요 레지스트리 경로(Hive)’ 에 대해 ‘허용된 프로세스’ 이외의 프로세스의 접근을 차단한다.
다음과 같은 주요 레지스트리에 대해 액세스(Write/Rename)시 사용자에게 경고한다.

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows
HKEY_CLASS_ROOT\txtfile\shell\open\command

파일/레지스트리 시스템에 대한 접근제어 정책 예
① 특정 폴더의 특정 확장자의 파일에 대한 접근을 제어한다, 단 제외되는 프로세스가 있을 수는 있다.
Ex) C:\Windows, EXE, DLL, SYS, Read, Notepad.exe
:C:\Windows 폴더의 확장자가 EXE, DLL, SYS인 파일에 대해서는 읽기만 가능하다. 단, Notepad.exe는 제외된다.
② 특정 파일에 접근 가능한 프로세스를 지정할 수 있다.
Ex) *.htm, Read iexplore.exe, Notepad.exe
: 확장자가 Htm인 파일에 대해서는 iexplore.exe, Notepad. exe라는 프로세스만 읽기 접근이 가능하다.
③ 특정 레지스트리의 키에 대한 접근을 제어한다. 단 제외되는 프로세스가 있을 수는 있다.
Ex)HKEY_LOCAL_MACHINE, Read, Regedit.exe
:HKEY_LOCAL_MACHINE이라는 레지스트리에 읽기 접근만 가능하다. 단, Regedit.exe라는 프로세스는 제외된다.

3. 이메일을 통한 웜 확산 차단
이메일을 통해 전파되는 웜은 자기 자신이 ‘실제로 전달될 수 있는 메일 주소’로 전송돼, 그 메일을 수신한 사람의 실수로 웜 자신의 복사본이 실행돼, 다시 활동하게 되길 원한다. 따라서 웜으로서는 ‘실제로 전달될 수 있는 메일 주소’를 알아내는 것이 급선무다.
따라서 미리 지정된 (잘 알려진 안전한) 프로세스가 아닌 정체가 불분명한 프로세스가 ‘이메일 주소’가 담겨 있는 ‘파일’ 및 ‘레지스트리’ 들을 조회하는 것을 원천적으로 봉쇄함으로써 이에 대비할 수 있다. 그러나 프로세스만으로 ‘접근 권한’을 검사하면, ‘허용된 프로세스’가 수행시키는 ‘악성 매크로 웜/바이러스’에 대해서는 대응을 할 수 없다는 한계가 있다.

- 메일 관련 파일에 대한 프로세스 액세스 컨트롤
주로 이메일 주소의 소스가 되는 파일 확장자(eml, html, dbx , wab)에 대한 프로세스 액세스 컨트롤을 이용한다.
해당 파일에 대한 접근할 수 있는 프로세스를 사전에 정의하고 정의되지 않은 프로세스가 접근하였을 경우에는 경고 조치한다.

4. 허용된 프로세스의 인터넷 접근 제한
앞서 기능에서 언급된 한계상황에 대처하기 위해서는 스크립트/매크로를 수행하는 ‘안전한 것으로 정의된 프로세스’ 들에 대해서 그들이 수행하는 스크립트/매크로가 과연 안전한 것인지 파악할 수 있어야 한다. 이를 위해서는 지정된 프로세스가 수행하는 ‘스크립트 파일’의 실행 여부에 대한 처리와 메모리상에만 존재하는 ‘매크로/스크립트’의 수행 시 이를 사용자에게 경고해 이를 수행/차단할 것인지 확인 할 수 있어야 한다.
실시간으로 스크립트/매크로의 코드를 분석해 ‘위험성’ 여부를 판단할 수 있을 것이나, 이는 현실적으로 구현상의 제약사항이 있어, 보다 간단한 방법으로 숨겨진 웜의 인터넷 접근을 효과적으로 차단할 방법에 대해 기술한다.
그 방법은 실행은 허용됐으나, 인터넷에 접근할 필요성이 없는 프로세스가 인터넷 접근을 시도할 때 사용자에게 그 접근을 허용할 것인지 여부를 물어 그 응답에 따라 접근을 허용/차단토록 하는 것이다.
시스템 레벨에서의 웜 방어 중 그 핵심 사항인 주요 파일 및 파일 시스템, 레지스트리에 대한 보호 기능은 다음과 같이 도식화할 수 있다.

설명하자면, 특정 프로세스가 윈도 파일 및 레지스트리 시스템을 액세스하기 이전에 파일 시스템 필터 드라이버는 정책 설정 프로그램이 지정해 준 정책에 따라 프로세스들의 파일/폴더 접근을 허용할 것인지, 차단할 것인지의 과정을 거치게 된다.

각 고객사에 맞는 보안수준 ‘중요’
지금까지 시스템 레벨에서의 웜 방어에 대해서 살펴보았다. 추가적으로 여러분이 보안 담당자라면 여기서 반드시 고려해야 할 사항이 있다.
즉, 사용자의 편리성과 보안성에 대한 상관관계(trade-off) 요소다. PC에서의 특정 애플리케이션 사용 제어 기능을 포함해서 대다수의 관련 기능들을 보안성에 초점을 맞추다 보면 사용자 입장에서는 더 귀찮고 번거로워져 결국은 해당 솔루션의 활용도를 떨어뜨릴 수 있다.
보안 수준을 최고로 유지하면서도 초보 사용자에서부터 고급 사용자까지 다양한 PC 사용자 수준에 맞춰 불편함이 없도록 하는 것은 중요한 부분이면서 현실적으로 어려운 부분이기도 하다. 따라서 사용자 편리성과 보안성과의 관계를 고려해 각 고객사에 맞는 보안 수준과 편의성의 접점을 찾아야 할 것이다.
3회에 걸쳐 웜의 진화와 기술동향 그리고 웜에 대한 네트워크 레벨 및 시스템 레벨에서의 대응 방안을 제시했다.
웜 등의 악성코드가 주요 파일 시스템에 실행 가능한 파일을 추가하거나 시스템의 주요 실행 파일을 변조하는 행위에 대해 사전에 보안 정책을 수립하고 또한 주요 레지스트리를 삭제 또는 변경할 수 없도록 함으로써 PC내 주요 자원들을 보호할 수 있다.
이는 기존에 엔진 DB를 이용해 대응했던 방식 외에 즉, 알려진 웜 프로세스, 백도어 프로그램 등을 DB 정보에 의한 제어뿐만 아니라 프로세스의 활동을 모니터링함으로써 사용자 모르게 주요 항목에 대해 불법 접근하는 것을 감지, 차단해 알려지지 않은 신종 및 변종 웜 바이러스 공격으로부터 PC를 안전하게 보호할 수 있을 것이다.
만의 하나 이러한 정책을 우회해서 PC가 웜에 감염됐다 하더라도 감염된 PC에서 나타나는 2차 특징인 대량 유해 트래픽 및 웜 메일 발송 등을 네트워크 레벨에서 차단함으로써 2중, 3중 보호막을 통해 네트워크 인프라의 가용성을 확보할 수 있을 것이다.


댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.