메일필터링을통한 E-mail 보안 CERTCC-KR 이현우, lotus@certcc.or.kr 백원민, 100@sunoo.com 하도윤, dyha@certcc.or.kr 김상철, ksch@certcc.or.kr [ 목차 ] 1. 개요 2. E-mail 를이용한공격방법 2.1 액티브컨텐츠공격 2.2 버퍼오버플로우공격 2.3 트로이잔목마공격 2.4 쉘스크립트공격 3. Procmail 을통한 E-mail 보안 3.1 Sanitizer 설치 3.2 Sanitizer 설정방법 3.3 다양한보안정책구현을위한설정 3.4 자가보안필터구현 4. Inflex 보안도구를통한 E-mail 보안 [ 참고자료 ] 4.1 Inflex 설치및실행 4.2 Inflex 룰셋설정 4.3 Virus Scanner( 백신 ) 과의연동 1. 개요 Firewall 이널리보급되면서서버의보안취약점에대한공격은효과적으로방어할수있게되었다. 반면, E-mail 첨부파일, HTML 이내장된 E-mail 등을이용한공격은아직효과적인대응방법이없다. 특히, 이러한공격은대부분의사이트에서제공하는서비스 (E-mail, HTTPD 등 ) 를이용한공격이기때문에더욱탐지하거나차단하기가쉽지않다. 최근의인터넷웜공격은이러한취약점을이용한것으로 99 년 Melissa 바이러스를기점으로하여급속히증가하고있다. 본고에서는 E-mail 과관련된보안취약성에대하여알아보고이에대한대응방법을소개한다. 메일서버차원에서각조직의메일보안정책을구현할수있도록도와주는 Procmail 등과같은도구의사용및기능에대하여설명한다. 본문서는악성프로그램예방지침의참고자료로작성된자료이다.
악성프로그램예방지침 : http://www.certcc.or.kr/paper/tr2000/2000-08/tr2000-08.htm 2. E-mail 를이용한공격방법 2.1 액티브컨텐츠공격 메일열람시 HTML 기능이있는 E-mail 클라이언트나웹브라우저를사용하는이용자를대상으로하는공격기법이다. 주로 " 자바스크립트 " 나 " 비주얼베이직스크립트 " 등과같은 HTML 또는 E-mail 클라이언트의스크립팅기능을이용하여피해자의컴퓨터에서정보를유출하거나악성프로그램을실행시킨다. 이러한공격의간단한예로는사용자가메시지를열어볼때음란사이트나광고사이트를보여주도록하거나또는시스템을마비시키는서비스거부공격공격형태를보여준다. 최근에발견되는 VBS 웜을예로들수있다. AnnaKournikova : http://www.certcc.or.kr/cvirc/alert/61/annakournikova.html 이런공격은 E-mail 클라이언트프로그램의버그나시스템의버그를이용하는것이아니기때문에보안패치로써해결하지못한다. 무었보다 E-mail 클라이언트의스크립팅기능을사용하지않도록설정하는것이중요하다. 다음은 Outlook 에서스크립팅기능을제거하는방법이다. 또다른방법으로는메일서버에서메일이저장될때이러한스크립트태그를다른이름으로바꾸어자장하는방법이있다. 이렇게함으로서사용자가메일을읽을때는메일클라이언트는스크립트를해석하지못하게된다. 2.2 버퍼오버플로우공격 일반적인버퍼오버플로우공격과마찮가지로 E-mail 서버또는클라이언트의취약성을이용하여다양한공격을수행할수있다. 현재메일서버로많이사용하고있는 sendmail 은취약성이많이보완되어왔으나, 메일클라언트에서는아직많은보안문제들이발견되고있다. Outlook Express, Netscape Mail 등에서발견된버퍼오버플로우취약성은공격자가조작된 E-mail 을보내피해자의컴퓨터에서임의의명령을실행하거나트로이잔같은악성프로그램을심을수있도록한다. MS Outlook BufferOverflow : http://www.certcc.or.kr/advisory/ka2000/ka2000-025.txt 이러한취약성은메일서버또는메일클라이언트의보안패치를적용함으로서해결할수있다. 또한메일서버에서조작된 E-mail 헤더나첨부헤더를탐지하여수정함으로서메일클라이언트공격을예방할수있다. 2.3 트로이잔목마공격 트로이잔목마를이용한공격은일반사용자가트로이잔프로그램을실행시켜해당시스템에접근할수있는백도어를만들게하거나또는시스템에피해를주게한다. 이러한공격의예로는분산서비스공격을수행하는 Win/Trinoo 트로이잔, 패스워드와같은정보를수집하는스파이형트로이잔, 그리고시스템자원을사용하는트로이잔에이르기까지매우다양하다. 이러한공격이성공하기위해서는피해자가트로이잔을실행시키도록유도해야되는데이때 " 사회공학기법 (Social engineering)" 이사용된다. "Loveletter", "annakournikova.jpg" 와같은이름은사용자로하여금첨부파일을실행시키도록유도한다. 특히, 시스템관리자를사칭하여첨부된프로그램을실행시키도록하는메일메시지를받았을때는반듯이관리자에게확인을한뒤실행시켜야한다. 특히, 윈도우시스템은디폴트로파일이름의확장자를숨기도록설정되어있어, 공격자는다음과같은파일명을사용하여트로이잔실행파일이나스크립트파일의확장자를숨길수있다. xxx.txt.vbs - txt 파일로가장한비주얼베이직실행스크립트
xxx.jpg.scr - jpg 그림파일로가장한스크린세이버실행파일 xxx.mpg.dll - 동영상파일로가장한 dll 실행파일 xxx.txt.exe - txt 파일로가장한실행파일 이러한공격을당하지않기위해서는메일을통해수신한프로그램을실행시키지않아야한다. 메일첨부파일을바로더블클릭하는것은매우위험한습관이다. 하지만최근에는이러한사용자주의를우회할수있는공격도있다. E-mail 클라이언트의버그또는잘못된설계로인하여사용자의간섭없이도자동으로트로이잔을실행시킬수있는공격방법이공개되어있다. 이러한공격을예방하는방법으로메일서버에서실행가능한첨부파일이름을실행되지못하는이름으로바꾸는방법이있다 ( 예, exploit.exe 를 exploit.defanged-exe 등으로바꾸어메일클라이언트에서실행되지않도록한다 ). 또다른방법으로는메일첨부파일을조작하여첨부파일로보이지않도록바꾸는것이다. 사용자가반듯이첨부파일을얻기위해서는시스템관리자에게연락하여야한다. 이는시스템관리자가첨부파일을점검할수있는기회를제공한다. 다음은 bugtraq, 뉴스그룹, 그리고백신업체의권고문에서나오는트로이잔목마의확장자와파일이름들이다. *.asd *.chm *.dll *.ocx *.hlp *.hta *.js *.pif *.scr *.shb *.shs *.vb *.vbe *.vbs *.wsf *.wsh IBMls.exe anti_cih.exe aol4free.com avp_updates.exe *.[a-z][a-z][a-z0-9].[a-z0-9]+ (to catch "double-extension" attachments) babylonia.exe badass.exe buhh.exe chocolate.exe compu_ma.exe happy99.exe i-watch-u.exe ie0199.exe jesus.exe list.doc lovers.exe navidad.exe path.xls photos17.exe picture.exe pretty park.exe prettypark.exe qi_test.exe seicho_no_ie.exe serialz.hlp setup.exe story.doc suppl.doc surprise!.exe x-mas.exe y2kcount.exe yahoo.exe zipped_files.exe 트로이잔공격의또다른채널은매크로기능을제공하는프로그램의데이터파일을이용할수있다. 최근의워드프로세서, 스프레드쉬트, 데이터베이스등은이를지원한다. 이러한첨부파일을열때는항상백신프로그램을통하여먼저바이러스감염여부를확인하도록해야한다. 그리고이러한기능을지원하는프로그램에서매크로를자동으로실행하는모드를제거해야한다. 2.4 셀스크립트공격 유닉스와같은시스템은사용상의편리와확장을위해쉘스크립트를제공한다. 어떤메일프로그램은메일메시지를처리할때내장된쉘명령을지원하는데, 이를잘못사용하게되면, 공격자는조작된메일헤더를포함한메일을보내해당시스템에서특정명령이수행되도록할수있다. 이는메일헤더를검사하여이러한조작된부분을탐지할수있다. 3. Procmail 을통한 E-mail 보안 "Procmail" 은강력한메일프로세서로메일메시지의헤더와본문에서특정정보를찾아정의된규칙에따라적절한조치를수행하는프로그램이다. procmail 의설치, 설정등과관련된자세한내용은다음링크를참조바란다. 관련한글문서 : http://trade.chonbuk.ac.kr/~leesl/procmail/index.html
procmail 최신버전 : http://www.procmail.org/ procmail 설치하기 a. procmail 최신버전 (procmail-3.15.1) 다운로드 - http://www.procmail.org/ b. 압축을풀고압축을푼디렉토리로이동 # tar -xvf procmail-3.15.1.tar.gz # cd procmail-3.15.1 c. procmail 설치 # make install 또는 # make install-suid 보안을위해서는 make install-suid 를하는것이바람직 3.1 Sanitizer 설치 다음사이트에서제공되는 "sanitizer" 라는 procmail ruleset 은앞서설명한 E-mail 을이용한모든공격에효과적으로대응할수있도록해준다. "sanitizer" 파일을윈도우시스템에서다운로드받을경우에는각라인에서 DOS 시스템의 "end-of-line" 문자를제거해줘야한다. 잘모르면유닉스에서다운로드받아수정하지않고그대로사용하면된다. Procmail 보안홈페이지 ftp://ftp.rubyriver.com/pub/jhardin/antispam/procmail-security.html sanitizer 다운로드 URL http://www.impsec.org/email-tools/procmail-sanitizer.tar.gz ftp://ftp.rubyriver.com/pub/jhardin/antispam/procmail-sanitizer.tar.gz 위사이트중한군데서다운로드받은파일의압축을풀면, 관련설명문서들과 sanitizer 설정파일인 "html-trap.procmail", 그리고필터링해야될파일목록이있는 "poisoned-files" 파일이생기게된다. 자동으로모든사용자의 E-mail 에대하여필터링하기위해서는다음과같이 "Sanitizer" 룰셋을설치하면된다. o Sanitizer 설치를위한요구사항 - procmail 이설치되어있어야한다. - sendmail 을이용할경우 Local Delivery Agent 로 procmail 을사용하도록설정되어있어야하는데이는 /etc/sendmail.cf 파일에서다음과같이설정하면된다. Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/ @qspfhn9, S=10/30, R=20/40, A=procmail -Y -a $h -d $u - perl 이설치되어있어야한다. o 유닉스시스템에서의 "sanitizer" 설치
- 소유자와그룹이 root 인 /etc/procmail 디렉토리를 755(rwxr-xr-x) 권한으로설정 - 위의 ftp 사이트에서 sanitizer 룰셋을다운받아위디렉토리에저장하고소유자와그룹은 root 로그리고권한은 644(rw-r--r--) 로설정한다. - 설정방법에따라룰셋을설정한다. 만약게이트웨이로사용되는 sendmail relay 에서필터링을하고자할경우에는다음사이트를참고하여 /etc/sendmail.cf 파일을수정하고 /etc/procmail/filter.rc 파일을만들어야한다. http://www.impsec.org/email-tools/procmail-on-gateway.txt Outgoing 메일에대한필터링은다음사이트를참고하여 /etc/sedmail.cf 파일을수정하고 /etc/procmail/outgoing.rc 파일을만들어야한다. http://trade.chonbuk.ac.kr/~leesl/procmail/outgoing_mail_filter.html 3.2 Sanitizer 설정방법 sanitizer 는환경변수와설정에따라통제되는데, 이는 "/etc/procmailrc" 이라는파일을통해이루어진다. 다음은기본적인 /etc/procmailrc 파일의예이다. PATH="/usr/bin:$PATH:/usr/local/bin" SHELL=/bin/sh POISONED_EXECUTABLES=/etc/procmail/poisoned SECURITY_NOTIFY="postmaster, security-dude" SECURITY_NOTIFY_VERBOSE="virus-checker" SECURITY_NOTIFY_SENDER=/etc/procmail/local-email-security-policy.txt SECRET="CHANGE THIS" # this file must already exist, with proper permissions (rw--w--w-): SECURITY_QUARANTINE=/var/spool/mail/quarantine POISONED_SCORE=25 SCORE_HISTORY=/var/log/macro-scanner-scores DROPPRIVS=YES LOGFILE=$HOME/procmail.log # Finished setting up, now run the sanitizer... INCLUDERC=/etc/procmail/html-trap.procmail # Reset some things to avoid leaking info to # the users... POISONED_EXECUTABLES= SECURITY_NOTIFY= SECURITY_NOTIFY_VERBOSE= SECURITY_NOTIFY_SENDER= SECURITY_QUARANTINE= SECRET= 만약이미 /etc/procmailrc 파일을이용하고있다면, 위내용을추가하면된다. 다음은 etc/procmailrc 파일에서사용되는각각의환경변수에대한설명이다. 위예에포함되지않는것도설명한다. o MANGLE_EXTENSIONS 앞서설명한것처럼각기관의메일정책에따라첨부파일의확장자이름을제한하는방법중의하나이다. 만약첨부된파일의확장자가 ".exe" 일경우, ".mangled-exe" 로바꾸어주는역할을한다. 이는다음과같은보안상의효과를가져온다.
첨부된파일의확장자를다른이름으로바꿈으로서클라이언트에서이를실행 ( 더블클릭 ) 했을때실행되지않도록하는것이다. 이럴경우, 사용자가첨부된파일을실행시키기위해서는먼저파일을저장한다음에이름을바꾸고실행시켜야되기때문에백신이바이러스를검사할기회를갖게되는것이다. 자동실행되는악성코드일경우에는이름을바꿈으로서첨부된코드를찾지못하도록하여공격을방지할수있다. Sanitizer 는다음과같이디폴트로위험한확장자에대하여 MANGLE_EXTENSIONS 환경변수를설정하고있기때문에특별히따로설정할필요가없으나, 만약각기관의메일정책에따라변경할경우또는디폴트설정이불편한경우에는다음라인을수정하여 procmailrc 파일에추가하면된다. 단 "INCLUDERC=/etc/procmail/html-trap.procmail" 가있는라인이전에설정하여야한다. 디폴트 MANGLE_EXTENSIONS 설정 : MANGLE_EXTENSIONS='html? exe com cmd bat pif sc[rt] lnk dll ocx do[ct] xl[swt] p[po] t rtf vb[se]? hta p[lm] sh[bs] hlp chm eml ws[cfh] ad[ep] jse? md[abew] ms[ip] reg asd cil pps asx wm[szd]' * 주 : MANGLE_EXTENSIONS 은한라인에모든확장자를기입하여야하며, 포맷이틀릴경우, 큰문제가발생할수있다. 포맷을위에서처럼확장자간에 " " 문자를이용하여구분해주면된다. 또한기관의특성에따라보안레벨을정의하여구현할수도있다. 예를들어자신의도메인내에서오고가는메일에대해서는엑셀파일과워드파일의확장자를그대로보존하고자할경우에는다음과같이할수있다. /etc/procmailrc 파일에서 "INCLUDERC=/etc/procmail/html-trap.procmail" 라인전에다음과같은규칙을설정한다. :0 * ^From:.*<[a-z0-9]+@mydomain.com> * ^To:.*<[a-z0-9]+@mydomain.com> { MANGLE_EXTENSIONS='html? exe com cmd bat pif sc[rt] lnk dll ocx dot xl[wt] p[po] t rtf vb[se]? hta p[lm] sh[bs] hlp chm eml ws[cfh] ad[ep] jse? md[abew] ms[ip] reg asd cil pps asx wm[szd]' } o POISONED_EXECUTABLES 바이러스가주로이용하는파일이름의목록을가진파일이름을정의해준다. 디폴트로 /etc/procmailrc 디렉토리에 "poisoned" 라는이름의파일을지정하고있으므로 poisoned 파일을해당디렉토리에카피하면된다. 현재는 MANGLE_EXTENSIONS 에나온확장자에대해서만파일이름을검사하도록되어있으나다음버전에서개선될것이라고한다. 디폴트로필터링하는파일이름은 1 장에서설명한바와같다. 특정파일이름을사용하는바이러스나웜이나타날때마다 POISONED_EXECUTABLES 에의해설정된파일을업데이트해줌으로서악성프로그램으로부터의공격에보다적절히대응할수있는기능을제공한다. POISONED_EXECUTABLES=/etc/procmail/poisoned o DISABLE_MACRO_CHECK
Microsoft Office 의위험한매크로에대한검사기능을제거한다. sanitizer 는 Word documents, Excel spreadsheets, PowerPoint presentations 등의첨부파일을검사하여위험한 VBA 매크로 ( 보안설정을변경기키거나, 레지스트리를변경하는등의매크로 ) 를찾아내는기능이있다. 만약이러한기능을사용하지않으려면다음과같이 DISABLE_MACRO_CHECK 값을임의의값으로설정하면된다. DISABLE_MACRO_CHECK=YES 만약위기능을이용하려면다음과같은추가적인도구를설치하여야한다. metamail package 의일부인 mimencode mktemp 리눅스에서는대부분배포판에포함되어있으나다른종류의유닉스에서는소스를다운받아컴파일하고설치해야한다. o POISONED_SCORE sanitizer 는위험한매크로코드의모든부분을탐지할때마다이를카운트하여, 일정수준이되면해당문서를감염 다고판단한다. 디폴트로 25 로설정되어있으나대부분의매크로바이러스는 100 이상의수치를갖는다. 따라서 80-100 정도의값을갖도록하는것이바람직하다. POISONED_SCORE=100 o SCORE_HISTORY POISONED_SCORE 값이적절히설정되었는지알아보기위해매크로검사결과를기록할수있다. 다음과같이 SCORE_HISTORY 를설정하면된다. 해당파일은 (rw--w--w-) 의권한을가져야한다. SCORE_HISTORY="/var/spool/mail/macro-scanner-scores" o SECURITY_QUARANTINE sanitizer 의규칙에따라감염된 (poisoned) 또는감염된것으로판단된메시지를보관해두는장소를설정한다. 이러한메시지는수신자에게가지않고설정된파일에쌓이게된다. 해당파일은 (rw--w- -w-) 의권한을갖도록설정하여야하며, 파일내용은표준메일박스형태로쌓이게된다. 만약 SECURITY_QUARANTINE 값이설정되지않으면감여된메일은수신자에게가게된다. SECURITY_QUARANTINE="/var/spool/mail/quarantine" o SECURITY_NOTIFY 감염된파일이탐지되었을때, 해당사실을누구에게공지할것인가는설정한다. 공지는필터링된메시지의헤더를포함한다. 또한 QUARANTINE 이실패할경우도이사실을 SECURITY_NOTIFY 에설정된사용자에게공지하게된다. SECURITY_NOTIFY="postmaster, dilbert@example.com" o SECURITY_NOTIFY_VERBOSE SECURITY_NOTIFY 와같으나, 필터링된메시지의원문이포함된다. 이는 quarantine 파일대신에사용될수도있다. SECURITY_NOTIFY_VERBOSE="wally@example.com, hb@example.com"
o SECURITY_NOTIFY_SENDER 감염된메시지를보낸사람에게해당사실을통지할것인가를설정한다. 이를위해서는 SECURITY_NOTIFY 값이반듯이설정되어있어야한다. 만약경고메시지에각기관의보안정책을포함하는등의것으로수정하고싶을경우에는파일로만들어설정해주면된다. 디폴트메시지를사용할경우에는존재하지않는파일이름으로설정한다. SECURITY_NOTIFY_SENDER=YES 또는 SECURITY_NOTIFY_SENDER="/etc/procmail/policy-note.txt" o SECURITY_NOTIFY_RECIPIENT 감염된메일의수신자에게해당사실을공지할것인가를설정한다. 하지만메일릴레이에서는제대로작동하지않으므로설정하지않는것이좋다. SECURITY_NOTIFY_RECIPIENT="/etc/procmail/quarantined.txt" o SECURITY_STRIP_MSTNEF Microsoft Outlook 과 Microsoft Exchange 는 "Outlook Rich Text" 라는포맷을지원하는데, 이는모든종류의파일첨부를 Microsoft 포맷첨부로묵어주는역할을한다. 일반적으로 "WINMAIL.DAT" 라는이름으로사용되며, "MS-TNEF" 포맷으로불리운다. 그리고다른메일클라이언트에서는호환되지않는다. MS-TNEF 는일반적으로필터링되지않으며, 파일내에송신자의설정정보를포함하기때문에정보를유출시킬수도있다. MS 에서도 MS-TNEF 포맷의첨부는조직내에서만사용할것을권장하고있다. SECURITY_STRIP_MSTNEF 을임의의값으로설정하게되면메시지에서이러한첨부를잘라내게되며, 해당사실을공지하는내용과함께수신자에게보내지게된다. 파일첨부는복구될수없다. SECURITY_STRIP_MSTNEF=YES 참고자료 See http://support.microsoft.com/support/kb/articles/q241/5/38.asp, http://support.microsoft.com/support/kb/articles/q138/0/53.asp http://www.microsoft.com/technet/exchange/2505ch10.asp o DEFANG_WEBBUGS "Web bugs" 는아주조그마한이미지로 email 메시지를추적하는데사용된다. 이미지를표시하는 URL 을포함시켜, HTML 기능이있는메일프로그램이해당이미지를표시하기위해지정된 URL 에접속할때, 이를기록하여메일메시지의위치를확인하는방법이다. 이러한방법은특히, 스팸메일이실제사용자에게도달하였는지를확인하는데사용되기도하며, 또는메시지의전달을추적하는데사용된다. 그리고이는음성파일을이용해구현될수도있다. 만약이러한것이각기관의보안정책또는개인정보보호정책에위반되는것이라면 DEFANG_WEBBUGS 환경변수를이용하여이를막을수있다. DEFANG_WEBBUGS 값을임의의값으로설정하면 sanitizer 는 <IMAGE> 와 <BGSOUND> 태그를수정하여 (defang) 이러한정보수집행위를막게된다. DEFANG_WEBBUGS=YES o SECURITY_TRUST_STYLE_TAGS
<STYLE> 태그는공격자가스크립팅명령을사용하도록하여다양한공격을할수있는기회를제공한다. Sanitizer 는디폴트로 <STYLE> 태그를변경시킨다. 하지만만약내부도메인에서만들어진 <STYLE> 태그에대하여변경시키지않기를원할경우에는다음과같이설정할수있다. 외부사용자 ( 인터넷 ) 으로부터의 <STYLE> 태그는제한하는것이바람직하다. :0 * ^From:.*@mydomain.com> * ^To:.*@mydomain.com> { SECURITY_TRUST_STYLE_TAGS=YES } o LOGFILE sanitizer 의로그파일을지정한다. 디폴트로는메일수신자의홈디렉토리인 "$HOME/procmail.log" 로지정되어있으나, 하나의집중된파일로만드는것이바람직하다. 파일권한은 (rw--w--w-) 로설정해야한다. 사용자홈디렉토리에만들경우에는이전에 DROPPRIVS=YES 를설정하여야한다. DROPPRIVS=YES LOGFILE="$HOME/procmail.log" 기타다른많은환경변수설정이있는데, 이는 Procmail 맨페이지를참조하기바란다. man procmail man procmailrc man procmailex 3.3 다양한보안정책구현을위한설정 앞서설명한 procmailrc 파일은모든메시지에대하여동일한보안정책을적용시킨다. 하지만경우에따라서특정도메인별로서로다른보안정책을구현할수도있을것이다. 이는처리되는메일에따라서로다른환경변수값을설정함으로서구현가능하다. 예를들어자신의도메인내에서는 ( 아래예의경우 "mydomain.com") 워드문서첨부를허용할경우에는다음과같은설정을추가하면된다. 단 "INCLUDERC=html-trap.procmail" 라인이전에서설정해야한다. :0 * ^From:.*<[a-z0-9]+@mydomain.com> * ^To:.*<[a-z0-9]+@mydomain.com> { MANGLE_EXTENSIONS='html? exe com cmd bat pif sc[rt] lnk dll ocx dot xl[wt] p[po] t rtf vb[se]? hta p[lm] sh[bs] hlp chm eml ws[cfh] ad[ep] jse? md[abew] ms[ip] reg asd cil pps asx wm[szd]' } 3.4 자가보안필터구현 Sanitizer 가제공하는 quarantine( 격리 ) 과 notification( 공지 ) 기능은각기관의특정보안정책에따라유연하게사용할수있다. Sanitizer 는메시지에포함된 "X-Content-Security" 라는헤더를통해 notification 과 quarantine 기능을구현할수도있다. 즉, 사용자는 procmail 규칙을통하여특정메시
지에대하여 Sanitizer 가 quarantine( 격리 ) 이나 notification( 공지 ) 할수있도록할수있다. 예를들면, Hybris 웜은임의의이름을가진첨부파일을제목없이보냄으로서유포시키는데, 모든.exe 첨부를필터링하지않고이를탐지하여필터링하기위한방법은다음과같다. 1. /etc/procmail/local-rules.procmail (owner root, group root, mode 644) 파일작성 # Messages with.exe attachments must have a subject line # :0 *!^Subject: * ^Content-Type:.*multipart/mixed; { :0 B hfi * ^Content-Disposition:.*.EXE * ^Content-Type:.*.EXE formail -A "X-Content-Security: NOTIFY" -A "X-Content-Security: QUARANTINE" -A "X-Content-Security: REPORT: Trapped anonymous.exe" } 2. /etc/procmailrc 파일수정 INCLUDERC=/etc/procmail/html-trap.procmail 라인을다음과같이수정 INCLUDERC=/etc/procmail/local-rules.procmail INCLUDERC=/etc/procmail/html-trap.procmail 위설정은 procmail 룰셋을통하여 anonymous 웜을탐지하고, X-Content-Security 헤더를삽입하게된다. 그리고나서 sanitizer 를호출하여이를처리하는것이다. sanitizer 는해당메시지를필터링하여격리시키게된다. 4. Inflex 보안도구를통한 E-mail 보안 Inplex 는메일서버에서로컬이나외부로나가는 E-Mail 을검사하여 E-mail 에대한 In-Outbound 정책을새울수있게해주는도구이다. 이러한 In-Outbound 정책기능을통하여관리자는최근의바이러스나인터넷웜이첨부된메일을필터링할수있도록해준다. 또한임의파일이름과파일유형에대하여검색하고필터링하는기능을제공하여 Anti-virus 패키지에의해탐지되지않는바이러스로부터의공격에대응할수있도록해준다. Procmail 을이용한필터링보다는설치및운영이쉬운반면, Inflex 는첨부파일만을필터링할수있다. Inflex 는 sendmail 이 sendmail.cf 대신에 inflex.cf 파일을설정파일로사용하도록함으로서원하는기능을구현한다. inflex.cf 설정에따라 inflex 프로그램이메일에대하여검사를하게된다. inflex 의룰셋으로차단된메일은송 수신자와서버관리자에게경고메시지를보내게되고, 룰셋에서통과된메일은다시 sendmail.cf 가적용되도록하여정상적인메일처리를하게된다. 4.1 Inflex 설치및실행 a. 다음사이트에서최신버전의 Inflex(Inflex-0.1.5c.tar.gz) 를다운로드받는다. http://www.inflex.co.za/mainpage.html b. Inflex 도구를 gzip, tar 를통하여압축을푼다. # gzip -d Inflex-0.1.5c.tar.gz # tar -xvf Inflex-0.1.5c.tar
# cd Inflex-0.1.5.c c. inflex가사용할메일큐디렉토리생성 # mkdir /var/spool/inflexmq d. inflex 실행파일을 /usr/sbin에복사 # cp inflex /usr/sbin e. inflex 설정파일인 inflex.cf 파일을 /etc 디렉토리에복사 # cp inflex.cf /etc f. 실행되고있는모든 sendmail 데몬을종료시킨다. # killall sendmail g. sendmail이 /etc/inflex.cf 파일을참조하여실행되도록한다. # /usr/sbin/sendmail -bd -C/etc/inflex.cf 4.2 Inflex 룰셋설정 Inflex 프로그램이메일을검사하는과정은다음과같다.. inflex 에서사용될변수를초기화한다. email 분석을위한디렉토리를설정한다.. email 을읽어들인다.. email 에대한자세한내용을로그한다.. email 을디코드한다.. 파일타입에따라 email 을스캔한다.. 파일이름에따라 email 을스캔한다.. 바이러스에대하여 email 을스캔한다.. 필요한경우관리자, 송신자, 수신자에게메시지를보낸다. 가. 파일타입에따라필터링하는방법 Inflex 에서디포트로필터링하는파일타입은다음과같으나, inflex 스크립트실행파일을수정하여더추가하거나제거할수있다. o 디폴트로필터링되는파일 Types - MS-DOS Executables - PC Bitmap Data [BMP files] - AVI movies - MPEG movies - WAVE type audio files 파일타입에따른필터링규칙을수정하기위해서는 /usr/sbin/inflex 파일의 124 번라인근처에서다음과같은내용을찾아수정한다. grep "MS-DOS executable" ${tmpdir}/fileresults >> ${badfileslog} grep "PC bitmap data" ${tmpdir}/fileresults >> ${badfileslog} grep "AVI" ${tmpdir}/fileresults >> ${badfileslog} grep "MPEG" ${tmpdir}/fileresults >> ${badfileslog}
grep "WAVE" ${tmpdir}/fileresults >> ${badfileslog} 만약새로운파일타입을추가할경우, 예를들어 ARB 를추가한다고하면다음과같은라인을추가하면된다. grep "ARB" ${tmpdir}/fileresuls >> ${badfileslog} 주 : 여기서파일타입은 /etc/magic 파일에존재하여야한다. 만약존재하지않으면다음에서설명하는파일이름으로필터링하는방법을사용하면된다. 나. 파일이름으로필터링하는방법 파일이름이나확장자에따라메일을필터링할수있는데, 이는 /usr/sbin/inflex 파일의 136 번라인근처에서다음과같은내용을찾아수정하면된다. find ${tmpdir} -iname 'links.vbs' >> ${badfileslog} find ${tmpdir} -iname '*.mp3' >> ${badfileslog} find ${tmpdir} -iname '*.ppt' >> ${badfileslog} 만약새로운파일이름을추가할경우, 예를들어 ".CTP" 를추가한다고하면다음과같은라인을추가하면된다. find ${tmpdir} -iname '*.CTP' >> ${badfileslog} 여기서필터링해야될파일이름및확장자는 1 장에서설명한확장자및파일이름에대하여모두필터링하면된다. *.asd, *.chm, *.dll, *.ocx, *.hlp,... *.vbs, story.doc, suppl.doc, surprise!.exe... 또다른예로파일명중에서특정문자열을필터링하기원할경우, 예를들어 VBS Love Letter 웜바이러스를예를들면다음과같은라인을추가하면된다. ${find} ${tmpdir} -iname 'LOVE-LETTER-FOR-YOU*' >> ${badfileslog} 주 : iname 옵션은대소문자를구분하지않도록하며, 와일드카드문자를사용할수있어유연한규칙을사용할수있다. 다. 경고메시지설정방법 필터링된메일메시지에대하여경고메시지를보내도록설정할수있는데이는 /usr/sbin/inflex 파일의 232 번라인근처에서찾을수있으며, 경보메시지를보내고자하는사람만을지정해주면된다. 4.3 Virus Scanner( 백신 ) 과의연동 다음사이트를방문하여평가판을다운로드하여설치하면된다. sophos 백신 : http://www.sophos.com/downloads/eval/savunix.html uvscan 백신 : http://www.nai.com/asp_set/buy_try/try/products_evals.asp [ 참고자료 ] [1] 악성프로그램 (virus/worm/trojan) 예방지침, http://www.certcc.or.kr/paper/tr2000/2000-08/tr2000-08.htm [2] 프락메일에관하여, http://trade.chonbuk.ac.kr/~leesl/procmail/index.html
[3] Procmail, http://www.procmail.org/ [4] Enhancing E-Mail Security With Procmail the E-mail - Sanitizer ftp://ftp.rubyriver.com/pub/jhardin/antispam/procmail-security.html [5] Inflex, http://www.inflex.co.za/mainpage.html [6] Anomy Sanitizer, http://mailtools.anomy.net/ [7] Mimedefang, http://www.roaringpenguin.com/mimedefang/