오늘 소개할 부분은 NIST SP 800-41 이라고 부르는 Guidelines on Fiewall and Firewall Policy(방화벽 및 정책에 대한 지침)에 대한 것입니다. 이 문서는 2002년도에 처음 특별 공고(SP, Speical Publication)로 발표되었습니다.
하지만, 그 이후에 다양한 기술적인 변화가 이루어져 왔으며, 이러한 한계로 인해 기존 지침서가 제대로 효용성을 가지지 못하는 아쉬운 점이 있었습니다.
2009년 10월 31일, 드디어 이 지침서의 개정판이 Revision 1이 공식적으로 공개되었습니다. PDF 문서 다운로드는 아래 링크를 참고하십시오.
일반적으로 안티 바이러스는 프로그램 추가/제거를 통해 설치 내역을 삭제하지만, 실제로 보면 설치된 파일이나 등록한 레지스트리 등이 100% 완벽하게 제거되지 않는 경우가 많습니다. 대충 삭제한 상태에서 다른 안티바이러스 제품을 설치하면 제대로 설치되지 않거나, 오히려 컴퓨터에 문제가 생기는 경우도 발생할 수 있습니다.
아비라 안티버(Avira AntiVir)는 안티 바이러스 제품 중에서 가장 휴리스틱(heuristic) 기술이 나은 제품으로 호평을 받고 있으며, 아비라 홈페이지에서는 추가적으로 설치를 제거할 수 있는 프로그램을 제공합니다.
프로그램을 다운로드하여 압축을 특정한 폴더에 풀어 놓고 실행한 화면, Scan for Keys 버튼을 클릭하면 안티버 이외에 다른 안티바이러스 제품이 설치한 레지스트리까지 착하게(!) 검색하여 보여 줍니다. 안티버 또는 다른 제품의 레지스트리가 남아 있다면 선택한 후에 Delete 버튼을 클릭하여 지웁니다.
컴퓨터에 설치된 레지스트리를 찾은 화면 - 현재 어베스트!가 설치되어 있는데 이 부분까지 보여 줍니다.
아래 링크에서는 앞에 소개한 프로그램 이외에 시스템 복구에 필요한 프로그램과 안티 루트킷 프로그램 등을 추가로 제공하고 있으니 참고하기 바랍니다.
프로그램이나 요즘 많이 사용하는 웹 사이트에서 회원으로 가입하는 경우에는 아이디(또는 메일 주소)와 비밀번호를 이용하게 됩니다.
회원정보 데이터베이스에서 아이디는 경우 보이는 그대로 저장하지만, 비밀번호는 특정한 알고리즘으로 무장하여 저장하는데 이를 해시(hash)라고 합니다.
즉, 'abcd'와 같은 비밀번호는 특정한 함수를 이용하여 계산하면 '3QC$40D'와 같이 변한되며, 반대로 해시 값을 이용해서 원래의 비밀번호를 찾기가 매우 어렵습니다. 즉, 단방향 함수이며, 역방향으로 값을 찾으려면 거의 모든 값을 무차별로 입력하여 원래의 값과 비교하는 단순 무식(Brute-Force)한 공격(Attack) 방식이 거의 유일합니다.
레인보우 크랙 프로젝트는 해시 값에서 부터 원래의 값을 무차별 대입 방법을 사용하지 않고 나름대로의 고유한 기술(faster time-memory trade-off technolody)을 이용하여 빠른 시간 내에 찾아내는 프로젝트입니다. 이 기술에 대한 자세한 내용은 아래 링크를 참고하십시오.
하여튼 이 기술을 간단히 요약하면 메모리상에서 미리 계산된 특정한 데이터(테이블)를 사용하여 암호화(해시)하는데 걸리는 시간을 줄이는 기술입니다. 1980년에 Martin Hellman이 최초로 기술하였으며 1982년에 Rivest가 조회하는 메모리의 개수를 줄이는 보다 나은 기술을 선보이게 됩니다. 즉
이를 우리의 컴퓨터 생활에 적용해 보면,
랜매니저와 MD5 테이블은 아래의 레이보우 테이블에서 예로 들어 설명합니다. 가장 흥미로운 부분은 6번째 테이블로 윈도우의 암호(NTLM)를 14글자까지 입력한 경우에는 몇 분 내에 깰 수 있다는 놀라운 사실입니다.
이 테이블은 윈도우의 비밀번호(최대 14글자)를 크랙할 수 있는데 입력할 수 있는 문자의 종류는 영문자, 숫자 그리고 일부 특수문자를 포함합니다. 하지만, 약 몇 분 이내에 99.9% 이내의 확률로 비밀번호를 알아낼 수 있습니다. 이는 한대의 컴퓨터를 이용한 것으로 여러 대의 컴퓨터를 이용하면 보다 빨리 알아 낼 수 있습니다.
예 #1: 다음과 같은 암호를 알아 내는 화면/동영상(WMP 9) }m-6BRz*Cj=J}G D2@,:H?+e5#: $ Ot\KZ?/a/qr4d^ yc~<{1!Oe}l_j| 5~|3&-K^4S#c3q
요즘에는 바이러스(웜, 등등 통칭해서 악성 프로그램)들의 전파 속도는 인터넷의 발달로 인해 거의 빛의 속도를 따라가고 있다. 어제 유럽에서 새로 발견된 악성 프로그램은 오늘 내 컴퓨터에서 조용히 잠복하는 세상이다.
하지만, 악성 프로그램을 진단 치료하는 안티 바이러스 벤더의 입장에서 보면, 정보의 홍수 아니 악성 프로그램의 홍수 속에 업무가 기하급수적으로 증가하고 있다. 특히, 이메일을 통해 감염되는 악성 프로그램(거의 트로이 목마)은 한번 퍼지기 시작하면 스패머의 활약에 힘입어 엄청난 속도로 전파되는 특징을 가지고 있다.
이러한 악성 프로그램이 우리가 사용하는 안티바이러스 제품에 샘플을 수집하여 이를 데이터베이스화하는데 걸리는 시간은 얼마나 되는지 궁금하지 않은가?
미국의 유명한 안티 스팸 업체인 컴터치(CommTouch)는 악성프로그램 발생 센터(Malware Outbreak Center)라는 프로그램을 통해 이메일로 전염되는 악성 프로그램을 보안 벤더들이 얼마나 빨리 대응하는지 자세히 보여 준다.
일련의 보안 자료를 보면, 해가 가면 갈수록 바이러스, 웜 등의 악성 프로그램의 발생 건수가 기하급수적으로 증가하고 있습니다.
일반적으로 안티 바이러스 제품은 서명(시그내처) 기반의 진단 기술을 사용하기 때문에 바이러스가 발견된 이후에 그에 대한 데이터베이스가 업데이트되는 형편입니다. 물론, 일부 안티 바이러스 제품은 사전 방역, 휴리스틱 진단 기법을 통해 아직 발견되지 않은 악성 프로그램을 미리 예방할 수도 있습니다. 하지만, 장점이 있으면 단점이 있는 법! 오진의 가능성이 서명 기반의 안티 바이러스 제품보다 높다는 단점이 존재합니다.
우스갯소리로 안티바이러스 분석팀은 일년내내 일을 해도 다 못한다는 말이 있습니다. 그만큼 갈수록 업무가 증대되고 있으며 사람이 수작업으로 진행한다면 처리할 수 있는 일에는 보나마나 한계가 있을 수 밖에 없습니다. 최근 보안 벤더들은 자동으로 처리할 수 있는 가상화 기술/소프트웨어를 도입하여 사용합니다.
악성 프로그램 제작자들은 새로운 악성 프로그램을 탄생(!)시키기 보다는 기존의 악성 프로그램을 변형하는 방법을 주로 취합니다. 물론 작성자는 자신의 코드를 충분히 이해할 수 있다는 가정을 한다면, 변종(Variant)을 떡 주므르듯이 마구 만들어서 널리 감염시킬 수 있을 것입니다.
최근 외국의 유명한 보안 전문가는 최근 안티 바이러스 제품의 허를 찌르는 글을 하나 게재했습니다.
서명 기반의 바이러스 백신 제품의 기술로는 바이러스로 검출되는 코드(이하 스크립트와 동일함)는 동일한 패턴이 나타나면 거의 100% 진단할 수 있는 기술을 보유하고 있습니다.
여기서 언급하는 스크립트는 인터넷 익스플로러에서 동작하는 악성 프로그램을 말합니다.
하지만, 코드의 일부분에 공백이나 숫자등을 채우는 이른바 패딩(padding) 기법으로 변조할 경우에는 제대로 바이러스 여부를 진단할 수 없다고 합니다.
이렇게 채우는 값을 최대 255 바이트까지 늘릴 경우에는 거의 대부분의 바이러스 백신에서 제대로 진단하지 못한다는 테스트 결과도 나온 적이 있습니다.
상식적으로 생각해 봐도, 악성 프로그램의 변종을 만들어 내는 것은 스페이스 바~ 누르는 것처럼 아주 쉽겠죠?
아래 그림은 악성 스크립트를 vi 편집기로 본 화면입니다.
그리고, 헥사 덤프(16진수로 보여주는)로 본 화면입니다. 중간에 0x00 값을 많이 채워넣었습니다.
이러한 방식으로 코드를 변조한 상태에서 바이러스토탈(http://www.virustotal.com)에서 진단한 결과를 보면 32개 제품 중에 15개 제품만이 악성 프로그램으로 진단하였다는 결과가 나온 적이 있습니다.
한 편, 스크립트에서 의미없는 0으로 채워진 값을 제거한 상태에서는 32 제품 중에 25개 제품이 진단에 성공하였습니다.
마이크로소프트의 관계자에 따르면 이러한 공백 처리 부분은 인터넷 익스플로러의 구조적인 설계에 기인한다고 수년 전에 발표한 적이 있습니다. 하지만, 구조적인 설계가 잘못된 경우라고 한다면 IE7이 나오면서 이러한 문제를 보완하는 새로운 설계가 나와야 하는 것은 아닐까요?
참고로 이러한 문제점에 대항하기 위해 맥아피의 바이러스 스캔(VirusScan) 제품에서는 스크립트스캔(ScriptScan)이라는 전용 모듈을 추가하여 이러한 문제점에도 불구하고 충분히 진단이 가능한 기술을 추가한 상태입니다. 아래 동영상 참조하세요.
결론을 간단히 추려보면 다음과 같습니다. 컴퓨터에 바이러스 백신을 믿고 백업과 같은 진짜 중요한 과정을 생략하면 언젠가 키보드를 치고 후회할 날이 생깁니다. 따라서, 몇 가지 조언을 드리면서 말씀을 줄일까 합니다.
윈도우 업데이트에 항상 신경 씁니다. - 매달 2번째 주 화요일입니다.
믿을만한 안티스파이웨어 제품을 설치하여 이 또한 주기적으로 검사합니다.
쓸데 없는 사이트(예를 들면, 성인 사이트, 와레즈 사이트)는 가급적 방문하지 않습니다.
P2P 프로그램은 꼭 필요한 경우가 아니면 사용하지 않는 것이 좋습니다.
가장 중요한 것은 바로 백업입니다. 중요한 데이터는 CD/DVD 등에 별도로 저장하는 것이 좋습니다. 하지만 가장 귀찮은 작업이기도 하지요.
AVG Free Edition은 Windows 95에서도 설치하여 사용할 수 있습니다. 하지만, 설치하는 동안에 다른 OS와 달리 DCOM이라는 시스템 라이브러리가 이미 설치되어 있는지 확인하는 과정이 추가된다. 이 라이브러리는 윈도우 설치 CD의 REDIST\DC95Inst.exe 파일에서 찾아 볼 수 있으며, 다음의 링크를 통해 다운로드 할 수 있다.
Internet Connection Fireawall(이하 ICF)는 Windows XP 버전에서새롭게추가된기능으로인터넷과같은네트워크로부터사용자의시스템을보호하기위해설계되었다. ICF를사용하여특정서비스(예를들면, http(80), FTP(21))만을사용할수있도록할수있으며, 기본적으로이러한서비스를사용하도록구성할수있다. 또한, 사용자정의(custom)을통해다양한애플리케이션이사용하는포트들도허용/차단할수있다.
무선 네트워크는 유선 네트워크보다 설치가 간편하다. 하지만, 편할수록 보안에 더 취약한 법이다. 이 글에서는 무선 네트워크에서
살펴보아야 할 보안 10계명에 대해 자세히 다룬다.
1. 암호화하라
암호화는 무선 보안의 가장 첫번째 방법이다. 하지만 대부분의 WAP(Wireless access points)에서는 기본적으로 사용하기 않게 되어 있다. 요즘 대부분의 WAP들은
WEP(Wired Equivalent Privacy) 프로토콜을 지원하지만 이 또한 기본적으로 사용하지 않게 구성되어 있는 경우가
많다. WEP 프로토콜은 수많은 보안 취약점을 가지고 있으며 이를 알고 있는 해커들은 크랙할 수도 있지만, 가장 중요한 것은 암호화를 하지 않는 것보다 낫다는 점이다. WEP 인증방식에
모두에게 열어두지 않고 ‘미리 공유된
키’등의 인증
방법을 사용하고 있는지 확인한다. WEP에서 아무런 인증방법을 사용하지 않는다면 송수신되는 데이터들은
클라이언트 인증만 확인할 뿐 암호화가 이루어지지 않게 된다. 또한
WEP 키를 자주 바꾸고 40비트보다 128비트의 WEP을 사용하는 것이 좋다.
2. 강력한
암호 방식을 사용하라
WEP 프로토콜이 보안상 약하기 때문에 가급적 WEP 보다는 WPA(Wi-Fi Protected Access)를
사용하여야 한다. WPA를 사용하기 위해서는 먼저 WAP이
이를 지원해야 한다.( 지원하지 않는 제품 중에는 펌웨어 업그레이드를 통해 WPA를 이용할 수도 있다. 제조사 홈페이지를 참고한다.) 또한 랜카드도 WPA를 지원해야 한다. Windows XP SP2에서부터 WPA를 설치한다. XP SP1 사용자는 다음의 URL에서 WPA를 지원하는 롤업 패키지를 다운로드하여 이용할 수 있다. http://support.microsoft.com/kb/826942
3. WAP의 기본 암호를
변경하라
WAP 제조사들은 모델 별로 WAP의 구성정보를 보거나 변경할 수 있는 웹 페이지 등을 제공하며 이를 액세스할 수 있도록 기본 관리자 계정과
암호를 제공한다. 이러한 계정 정보는 널리 알려져 있기 때문에 해커들이 쉽게 이용할 수 있다. 따라서, WAP를 설치할 때에는 가장 먼저 이 관리자 계정의 암호를
바꿔야 한다. 당연히 8자 이상의 긴 복잡한 암호를 사용하는
것이 좋다.
4. SSID
브로드캐스팅
옵션 끄기
SSID(Service Set Identifier)는 무선 네트워크에서 WAP의 이름을 나타낸다. 기본적으로 모든 WAP은 SSID를 브로드캐스팅하도록 설정되어 있다. 이렇게 하면 WAP에 처음 접근하는 사용자들이 쉽게 액세스할 수
있다는 장점이 있다. 하지만, 브로드캐스팅 옵션을 끄게 되면
사용자들은 무선 WAP에 접속하기 위해서 SSID를 알아야
한다. 브로드캐스팅 옵션을 끄더라도 해커들은 패킷 스니퍼링을 통해
SSID를 쉽게 알아낼 수 있기 때문에, 이 옵션을 끌 필요가 없을 지도 모른다. 하지만, 좀 더 나은 보안을 위해 이 옵션을 꺼두는 것이 좋다.
5. WAP를 사용하지
않을 때에는 꺼둔다.
아주 간단한 보안 방법이지만 실제 회사나 개인이 이를 제대로 지키는 경우는 보기가 드물다. 사용자들이 24시간 내내 접속하지 않고 낮 근무시간에만 접속한다면
접속하지않는 시간대에는 WAP를 꺼두는 것이 좋다. 항상
켜두어 침입자가 침입할만한 시간적 여유를 주지 않는 것이 좋을 것이다.
6. 기본 SSID를 변경하라.
WAP 제조사들은 각 모델별로 일정한 SSID 이름을 기본적으로 제공한다. 보통 제조사의 약자로 주어지는
경우가 많다. 해커는 이를 통해 어떤 WAP을 이용하는지
알아 낼 수도 있으므로 SSID를 변경하는 것이 좋다.
7. MAC
필터링을
사용하라.
대부분의 WAP들은 MAC 주소
필터링을 제공한다. 즉 사용자의 MAC 주소를 WAP에 등록하여 인증되지 않은 사용자의 접속을 막는 기술이다. 물론, 패킷 스니퍼링을 통해 무선 네트워크에 흘러다니는 정상적인 MAC 주소를
해커들이 알아 낼 수도 있다.
8. 유선 LAN과 무선랜을 분리하라.
무선 네트워크와 연결되는 유선 LAN을 보호하기 위해 무선 네트워크가
연결되는 지점에 DMZ이나 경계(perimeter) 네크워크를
설치한다. 즉, 무선네트워크와 유선네트워크 사이에 방화벽을
위치시키라는 뜻으로 무선 네트워크의 사용자들이 유선랜에 액세스할 때에는 특정한 사용자 및 여러가지 보안 규칙을 이용하여 허용하거나 차단시킬 수
있다. 추천할만한 보안 방법으로는 무선 VPN을 구현하는
것이다.
9. 전파 수신
거리 조절
보통 802.11b WAP는 약
300 피트 거리까지 유효하게 사용할 수 있다. 하지만,
이 거리는 중간에 WAP를 추가 설치하여(리피터처럼
또는 고성능 전파 안테너를 설치) 사용 반경을 더 넓힐 수도 있다. 사용
반경을 넒힘으로 인해 사무실이 위치한 빌딩 밖에서도 WAP에 액세스할 수 있다면 보안적 부분에서 문제가
될 수 있다. 따라서, WAP나 고성능 안테너의 설치시에는
이러한 사용반경을 고려해야 한다. 몇몇 WAP에서는 전파
세기와 방향을 변경할 수도 있다.
10. 서로다른 주파수를
이용하여 통신하라.
일반적인 802.11b/g 무선기술을 사용하는 경우 해커들에게 노출되지
않게 하는 방법중 하나는 802.11a 기술을 이용하는 것이다.802.11a는 5GHz 대역을
사용하며 b/g는 2.4GHz를 사용한다. 802.11a의 단점으로는 이 제품이 널리 사용되지 않았다는 점에 있다. 따라서
이 항목은 한번 고려할 만할 뿐 그리 추천되지는 않는다.
이제까지 무선 AP를 사용할 때 고려해야 할만한 보안 10계명에 대해 모두 살펴보았다. 필자도 집에서 유무선 공유기를 통해
유선 랜 설치의 부담없이 편하게 무선랜을 사용한다. 회사에서는 좀더 나은 보안 정책을 구현해야 할 것이며
이 글이 좀더 독자에게 도움이 되었으면 한다.