PC를 다운시키는 2090 바이러스?

아래 기사를 읽어보면 이 바이러스에 감염된 후에는 시스템 시간이 2090년 1월 1일로 수정되며, 제대로 컴퓨터 사용이 불가능할 정도로 시스템을 망가뜨린다는 듯…

http://www.idg.co.kr/newscenter/common/newCommonView.do?newsId=53573

포멧을 해도 다시 바이러스에 감염되는 증상을 보였다고 한다.

그런데 우선 첫째, 하드를 깨끗이 비우고, 윈도우를 다시 설치한 뒤 아무 것도 안했는데 다시 바이러스에 감염된다는 상황을 이해할 수 없다.

저런 상황을 만들어 내려면 바이러스가

1. 컴퓨터를 키면 감염된 바이오스가 네트워크를 통한 부팅을 통해 하드에 있는 윈도우에 바이러스를 감염시킨다.
2. 컴퓨터를 키면 감염된 바이오스가 무조건 하드디스크에 있는 윈도우에 바이러스를 감염시킨다.

위와 같은 식으로 동작해야만 할 것 같은데, 바이오스용 롬에 저렇게 복잡한 코드가 들어갈만큼 여유가 있는지는 모르겠다. 그리고 그런 공간이 있다고 해도 바이오스의 종류에 상관없이 문제 없이 돌아가는 코드를 삽입하는 것이 가능한 건지 의문이 생긴다.

만약 위의 경우가 아니라면 아래와 같은 상황일 것으로 보이는데…

3. 같은 네트워크에 있는 다른 감염된 PC가 새로 설치된 윈도우의 보안 허점을 이용해서 바이러스를 감염시킨다.

이 상황이라면 미리 서비스팩이라거나 보안 업데이트를 받아놓고, 네트워크에서 언플러그된 상태로 윈도우를 재설치한 후 미리 받아놓은 보안 업데이트를 적용하기 전에는 네트워크에 물려선 안될 것으로 보인다.

뭐 절대 아니라곤 생각하지만 만약 1번이나 2번 같은 경우, 시스템에 윈도우가 아닌 리눅스가 깔려있다면 과연 무슨 일이 벌어질까? ;)

혼자 열심히 상상의 나래를 펼치다 엠파스 뉴스를 보게 되었는데, 이 뉴스에 따르면 2090 바이러스도 autorun.inf를 이용해서 전파되는 특성을 가지고 있다고 한다.

http://news.empas.com/issue/show.tsp/cp_ch/6681/20090210n22288/

autorun을 이용해 전파되는 바이러스를 막기 위해 모든 usb 메모리들이 쓰기 보호된 (내용은 비어있는) autorun.inf를 담고 팔린다면 이런 문제를 피해갈 수 있을텐데… ‘USB 메모리에 빈 autorun.inf를 쓰기 보호된 파일로 담아두세요!’ 정도의 계몽 캠페인이라도 하나 벌여야겠다.

autorun을 이용해서 전파되는 바이러스를 처음 봤을 때 참 기발하다는 생각을 했다. 그만큼 강한 전파력을 자랑하기도 했고, 하지만 한편으로는 남에게 피해를 끼치기 위한 방법을 발견해내는데 자신이 가진 재능을 낭비하는 사람들이 안타깝기도 했다.

저러다가 자기가 만든 바이러스에 당해봐야 정신 차릴텐데…

exim 으로 메일 서버 구성하기…

왠지 모르게 점점 마이너 한 것들만 사용하게 되네요. postfix 나 exim 을 사용해보니 여러가지 장점이 눈에 보이는데 막상 how to 문서같은게 그리 잘 나와있질 않다보니 사람들이 사용하기를 꺼리는 것 같아 처음으로 howto 문서를 하나 작성해려 합니다.

이 문서는 젠투에서 exim 을 사용하는 방법을 기준으로 설명하고 있습니다.

Table of Contents

  1. 기본 구성
  2. 필요한 소프트웨어 설치하기
  3. 가상호스트 설정하기
  4. 바이러스 필터 설정
  5. 스팸 필터 설정
  6. dovecot 설정하기
  7. smtp 인증 설정하기
  8. 다른 배포판을 사용할 때 유의점

기본 구성

Mail Transfer Agent 로는 exim, 스팸 필터로는 bogofilter, 바이러스 필터는 clamav, pop3/imap server 로는 dovecot 을 사용하기로 하겠습니다. dovecot 이나 exim 이나 기본 적으로 실행하는 프로세스들이 많지 않기 때문에 프로세스 리스트를 확인할 때 깔끔해서 좋더군요.

필요한 소프트웨어 설치하기

저 같은 경우는 대강 다음과 같은 USE 플래그를 이용해서 설치를 진행했습니다.

domainkeys 는 야후나 구글에서 사용하고 있는 domain key 를 제대로 검증하기 위한 USE 플래그가 되겠구요, dovecot-sasl 은 smtp 인증에 dovecot 을 이용하기 위한 플래그입니다.

spf, srs, domainkey 같은 플래그는 해당 기능을 사용하지 않겠다면 빼주셔도 무방합니다. CentOS 등에서는 dovecot-sasl 도 기본으로 지원이 안되더라구요. 하튼 관련해서 자세한 건 뒤에서 설명하도록 하겠습니다.

살펴보니 별로 특이한 플래그를 사용하지는 않네요. -_;; 젠투 유져라면 다들 아시겠지만 실제 설치는 위의 예제에서 -pv 를 제거하고 실행시키시면 됩니다.

가상호스트 설정하기

설치가 무사히 끝났다면 가상호스트를 설정해봅시다. 젠투에서는 기본으로 설정파일을 만들어주지 않습니다. 그렇기 때문에 우선 /etc/exim/exim.conf.dist 를 복사해서 exim.conf 를 만들어줍니다.

# cp /etc/exim/exim.conf.dist /etc/exim/exim.conf

그런 다음 자신이 좋아하는 편집기를 이용해서 exim.conf 파일을 열고, 아래와 같은 부분을 찾아서 자신의 환경에 맞게 수정을 한 뒤

router 부분에서 system_alias 바로 아래에 다음 코드를 추가해줍니다.

주 도메인이 있는 경우 localhost 대신 unfix.net 같은 도메인을 사용해도 무방합니다. 만약 위의 예제에서 localhost 대신 unfix.net 을 설정해주면 로컬에 있는 모든 계정은 id@unfix.net 형태의 메일계정으로 사용이 가능해집니다. 주 도메인이 여러개라면 @ : localhost : mydomain1 : mydomain2 식으로 콜론(:) 을 이용해서 여러 개를 모두 적어주면 되겠습니다.

이젠 가상 호스트를 설정해봅시다. 만약 test.com 과 test.net 을 위한 가상호스트를 설정하려 한다면 다음과 같이 하면 됩니다.

위에서 dsearch; … 으로 설정해놓은 디렉토리 안에다가 호스트 이름을 이용해서 alias 파일을 만들어주면 되니까 간단하죠? 각 파일에 들어가는 내용은 다음과 같습니다.

# test.com
test: aqua@localhost
melong: test@gmail.com

# test.net
aqua: test@localhost

test.com 파일에 들어가 있는 test: aqua@localhost 는 test@test.com 으로 온 메일을 aqua@localhost 로 포워드를 시키라는 거에요. 워낙 간단하니 다른 것들은 따로 설명 안해도 될 것 같네요. 단 위에서 localhost 대신 myhost.net 을 사용했다면 aqua@myhost.net 처럼 설정해줘야 합니다.

여기까지 따라하셨다면 가상 호스트 설정은 끝! 가상 호스트 파일을 수정했을 때는 alias 를 수정했을 때와 달리 newalias 를 실행시키실 필요가 없습니다.

바이러스 필터 설정

바이러스 필터로는 clamav 를 사용할 건데, USE 플래그로 exiscan 과 exiscan-acl 을 사용해서 설치했다면 clamd 와 연동하는건 아주 간단합니다.

exim.conf 에서 다음과 같은 줄을 찾아서 주석을 해제시키세요.

끝! clamd.sock 위치는 배포판에 따라 다를 수 있습니다. 자세한건 /etc/clamd.conf 를 참조하세요.

스팸 필터 설정

SPF

Exim에는 기본으로 SPF와 관련된 코드가 있으므로 SPF를 사용하기 위해선 EXPERIMENTAL_SPF=yes 환경변수와 함께 exim을 빌드하면 됩니다.

설정은 global 섹션에서 acl_smtp_rcpt 로 등록되어 있는 것에 다음과 같은 설정을 넣어주면 됩니다.

젠투에선 acl_smtp_rcpt가 acl_check_rcpt로 되어 있기 떄문에 acl_check_rcpt 부분에 위 설정을 추가해줬습니다.

만약 warn message = $spf_received 를 넣어주지 않으면 헤더에 SPF결과를 출력하지 않게됩니다. SPF헤더를 붙일 경우에는 SMTP Auth를 이용해서 메일을 보내는 경우에도 SPF헤더가 붙는 문제가 있습니다. 이를 피하기 위해 설정을 아래처럼 수정해주도록 합시다.

SRS

SRS를 설정하기 위해 우선 global 섹션에 다음과 같은 내용을 추가해줍니다.

여기서 somesecretkey는 본인이 원하는 임의의 문자열을 넣으면 되겠습니다. 그 후 다음과 같이 userforward에 ‘srs=forward’를 넣어주면 됩니다. 간단하죠.

Bogofilter

스팸 필터로는 베이시안 룰 기반의 스팸 필터인 bogofilter를 사용해봅시다.

bogofilter를 MTA와 연동시키는 데는 procmail을 이용할 수도 있지만, procmail은 로컬 유져에 한해서만 사용이 가능하고, alias 나 .forward 를 사용하게 되는 경우에는 사용할 수 없으므로 exim의 transport와 router를 이용해보겠습니다.

우선 transport를 다음과 같이 설정합니다.

그리고 이 transport 를 이용하는 router를 만들어야 합니다. 참고로 router 는 순서에 민감하므로 삽입할 위치를 잘 선택해야 합니다. 저같은 경우는 system_alias 다음에다가 넣어두었습니다.

여기까지만 하게 되면 bogofilter가 각각의 메일 헤더에 ‘이 메일이 스팸/햄이다.’ 라는 정보만을 넣어줄 뿐 스팸/햄을 다른 메일박스로 분류해주는 동작은 하질 않습니다.

그러므로 자동 분류를 위한 transport 와 router 를 또 추가해주도록 합니다.

transport 먼저…

이렇게 하면 자신의 홈 디렉토리의 .maildir 아래 .Spam 이란 디렉토리를 만들고, 그 디렉토리에 스팸 메일을 저장하게 됩니다.

IMAP 으로 접속하면 Spam 메일들을 확인할 수 있기 때문에 이렇게 했는데, POP3 만 사용하는 거라면 그냥 제목에 [Spam] prefix 를 붙이게 하는 것도 나쁘지 않을 것 같습니다.

그 다음엔 이 transport 를 이용하는 router를 설정해야하는데, 이 때도 위치를 잘 생각해야 합니다. 저같은 경우엔 bogofilter router 바로 아래에 위치시켜 놓았습니다..

스팸 메일은 bogofilter 에 의해 X-Bogosity: Spam, test=bogofilter … 식의 헤더가 추가되기 때문에 이렇게 할 경우 스팸을 쉽게 분류해낼 수 있습니다.

dovecot 설정하기

우선 /etc/dovecot.conf 파일을 열어서 서비스할 프로토콜 리스트를 적어주세요. 그 다음에 plaintext 로 로그인할 수 있도록 설정해주고, pop3 나 imaps 를 위해 ssl 을 사용할거라고 명시해주고, 마지막으로 dovecot-sasl 을 사용할 수 있도록 auth-client 를 활성화시켜주세요.

이를 종합해보면 다음과 같은 설정파일이 만들어집니다. 볼드로 표시한 부분이 제가 수정한 부분이에요. 주석을 제거하고 보니 정말 간단하네요. -_-;

그리고 /etc/pam.d 로 가서 smtp 파일이 있는지를 체크해보시고 만약 없다면 system-login 이나 pop 등을 복사해서 smtp 파일을 만들어주세요. 이것 때문에 어제 혈압이 올랐던걸 생각하면 …!!!

여기까지 설정하셨음 90% 는 끝난겁니다.

smtp 인증 설정하기

자 다시 exim.conf 로 돌아와서 smtp 인증을 설정해봅시다. exim.conf 에서 authenticators 파트를 찾아서 아래와 같은 내용을 추가해줍시다.

이걸로 설정은 끝! 다음엔 데몬들을 띄워서 제대로 되나 확인을 해보세요.

다른 배포판을 사용할 때 유의점

제가 이것저것 확인해본 건 아니라 정확하게 알려드릴 순 없지만 CentOS 에서는 spf, srs, dovecot-sasl, domainkeys 등을 사용할 수가 없습니다. 그렇기 때문에 dovecot-auth 대신 saslauthd 를 사용해야 해요. saslauthd 를 사용할 때의 authenticator 파트는 다음과 같습니다.

server_condition 을 다음처럼 하면 pam 만으로도 인증을 할 수 있습니다. 하지만 pam_auth 모듈에서 auth request를 보낸 사용자의 uid와 username을 가지고 확인하는 절차가 있기 때문에 exim을 root 권한으로 실행시키지 않으면 제대로 인증이 되지 않습니다.

참고로 인증을 saslauthd 를 통해서 하려는 경우 saslauthd 가 실행 중에 있어야 합니다.

Trojan: VBS/Autorun.B

평소와 다름 없이 Filezilla 를 실행시키고, 몇 가지 작업을 하려고 보니 이게 왠걸… 모든 드라이브 루트에 autorun 으로 시작되는 수 많은 파일들이 있는게 아닙니까! filezilla server 를 띄워놓았기 때문에 ftp 를 통해서 누군가 접근한게 아닌가 싶었지만 ftp 로 접근할 수 없는 드라이브에도 똑같은 파일들이 존재하는 것으로 보아 바이러스/트로이목마 에 감염된게 아닌가 의심이 들더군요. 검색을 해보니 역시나 트로이목마 였습니다.

이 바이러스에 걸리게 될 경우 주기적으로 모든 드라이브의 루트에 autorun 과 관련된 파일을 생성시키게 되는데, 요새는 usb 드라이브를 이용해서 파일을 주고 받는 일이 많다보니 usb 드라이브를 통해 이 트로이목마에 감염될 확률이 굉장히 높습니다.

v3 2007 에서는 잡아내지를 못하는 것 같고. 캐스퍼나 f-prot 에서는 잘 찾아내네요. 백신 혐오증이 있으신 분들이라면 c:\windows\system32 폴더에서 autorun 으로 시작하는 모든 파일을 제거하시고, (거기 그런 파일이 있을 이유가 없으니 다 지워도 될 것 같습니다.) 다른 드라이브 루트에 있는 autorun.* 파일도 제거하시면 됩니다.

단 내 컴퓨터에서 c:, d: 같은 드라이브를 더블클릭해서 열 경우 autorun 이 실행되기 때문에 system32 폴더에 있는 파일을 지운 후라도 다시 감염이 될 수 있습니다. -_-; 꼭 마우스 오른쪽 버튼을 누르신 후 ‘탐색’ 을 선택하시기 바랍니다.

또 이 트로이목마에 감염되어 있을 경우 ‘숨김파일 표시’ 옵션을 키더라도 autorun 파일이 보이질 않습니다. Filezilla 의 탐색기나 Nero 의 탐색기 등을 이용할 경우에는 파일이 제대로 표시되므로 이런 프로그램들을 이용하시면 간단히 트로이목마에 감염되었는지 여부를 알 수 있겠네요.