커피닉스, 시스템 엔지니어의 쉼터 커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
* HanIRC의 #coffeenix 방
[ 장비 및 회선 후원 ]
HOME > 네트워크(network) > 메일 서버(mail) 도움말
검색 : 사이트 WHOIS 웹서버 종류

메일 필터링(스팸메일) / procmail (14, 글 18, 자료 8)

  스팸발송기가 깜빡한건가? (스팸메일의 변수들) 작성일 : 2006/11/03 18:51
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 10785
          [ 이전화면 / 수정 ]   비밀번호 :     인쇄용 화면
      제  목 : 스팸발송기가 깜빡한건가? (스팸메일의 변수들)
    작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2006.10.31(화)
    수정일 : 2006.11.08(수) Subject: 헤더의 몇몇 변수 추가
    수정일 : 2008.12.16(화)~19(금) 몇몇 변수 추가, '4. 스팸 발송툴과 스팸 관련 자료' 추가
             1) From:    헤더의 {%DIGIT%}, %RND_DIGIT 변수
             2) From:    헤더의 {$FROMNAME$}, {%LFNAME%}, {%LLNAME%} 변수
             3) Subject: 헤더의 {%SUBJECT%} 변수
             4) Message-ID: 헤더의 {%MAILSERVERHOSTNAME%} 변수
             5) 본문에   {%BOTGREETING%} 변수

    스팸메일 발송기가 깜빡한건지, 스패머가 변수명을 잘 못 지정한건지 알 수 없으나 발송기 내부에서 사용하는 것으로 보이는 변수(제목, URL, 메시지 등)를 변환하지 않고 그대로 보낸 것이 지난달에도 들어오더니 최근에도 이런식으로 들어온 건들이 눈에 띈다.

    실제 수신된 메일을 통해 살펴보자.

    1. 변수가 노출된 스팸메일 예

     
    From ndvxu@chol.com  Mon Oct 30 11:01:46 2006
    Return-Path: <ndvxu@chol.com>
    Received: from 248.240.75.160 by ; Mon, 30 Oct 2006 03:01:45 +0100
    Message-ID: <GEDDHVLWEAMHTZZKTLRFJZZMT@naver.com>
    From: "이현주" <gzxlg@chol.com>
    Reply-To: "이현주" <dhgmaweuexsgal@paran.com>
    To: xxxxx@xxxxxxxxxxxx                    <----------- 수신자 메일은 제가 xxxxx 로 표시해둠
    Subject: %A_SUBJECT%B_SUBJECT%C_SUBJECT   <----------- 제목
    Date: Mon, 30 Oct 2006 05:56:45 +0400
    X-Mailer: Microsoft Outlook Express 5.00.2919.6700
    MIME-Version: 1.0
    Content-Type: multipart/alternative;
       boundary="--229224503929188"
    X-Priority: 3
    X-MSMail-Priority: Normal

    ----229224503929188
    Content-Type: text/html;
    Content-Transfer-Encoding: quoted-printable


      <BODY>
    <DIV><FONT color=3D#004000><STRONG>5ooo=B8=B8=B1=EE=C1=F6 =A6=AE=B4=E7=A6=B0=
    =A6=B1=C0=CF=A6=AF=C0=D4=A1=DB=B1=DD=B0=A1=A1=DF=A1=DB=B4=C9=C7=D5=B4=CF=B4=
    =D9</STRONG></FONT></DIV>
    <DIV><STRONG></STRONG> </DIV>
    <DIV><FONT color=3D#ff0000><STRONG><U>=A1=EC</U></STRONG></FONT><A
    href=3D"http://%CUSTOM_LINK" target=3D_blank><FONT       <------ %CUSTOM_LINK 변수
    color=3D#ff0000><STRONG>=B4=EB=A1=EC=C3=E2=A1=EC=BD=C5=A1=EC=C3=BB=A1=EC=C0=
    =BA=A1=EC=BF=A9=A1=EC=B1=E2=A1=EC=B8=A6=A1=EC=C5=AC=A1=EC=B8=AF=A1=EC=C7=CF=
    =A1=EC=BC=BC=A1=EC=BF=E4.</STRONG></A></FONT></DIV>
    <DIV><STRONG><FONT color=3D#ff0000></FONT></STRONG> </DIV>
    <DIV><STRONG><FONT color=3D#ff0000></FONT></STRONG> </DIV>
    <DIV><STRONG>%SSSS</STRONG></DIV>                        <------ %SSSS 변수
    <DIV> </DIV>
      </BODY>


    ----229224503929188--
     


    보는 것 처럼 Subject에는 %A_SUBJECT%B_SUBJECT%C_SUBJECT 형식이며, %D_SUBJECT... 등등이 붙는 경우도 있다. 본문에는 QP인코딩된 내용 사이에 %CUSTOM_LINK 와 %SSSS 의 변수를 볼 수 있다. 정상적인(?) 스팸메일에서는 해당변수에 다음과 같이 내용이 들어 있었다.

    - %A_SUBJECT... : '안녕하세요? OOO입니다!차카' 형태(변수 하나당 하나의 단어인 듯)
    - %CUSTOM_LINK  : 'home.paran.com/[a-z0-9]+/[a-z0-9]+.html' 형태의 URL
    - %SSSS         : '<FONT=20 color=3D#000000>=B3=AA=B0=A172=C7=CF=C4=AB</FONT>'
                      처럼 '나가72하카' 와 같은 임의의 문자가 들어가 있으며,
            '=C5=B8667=C0=DA' (타667자) 처럼 font tag 없는 경우도 있다.

    2. Header에서 사용하는 변수 예

    서버에 쌓여진 스팸 메일함을 뒤적거려보니 다음과 같은 형태의 변수들도 있었다.

     
    1. From 예 (2개)

    From PatVplague@%RND_FROM_DOMAIN  Sat Oct 28 03:24:51 2006
    From vjtcc51ad@%CUSTOM_FROM_EMAIL  Sun Oct 29 17:45:34 2006

    2. From: 예 (2개)

    From: "Shantelle Jennell" <%CUSTOM_FROM_NAME@%CUSTOM_FROM_EMAIL>
    From: "Kerry Mcgee" <RoderickNtaverna@RND_FROM_DOMAIN>

    3. From: 예 (2008.12)

    Return-Path: <JADA{%DIGIT%}{%DIGIT%}@hanmail.net>
    ... 생략 ...
    From: JADA SESSOMS <JADA{%DIGIT%}{%DIGIT%}@hanmail.net>

    4. From: 예 (2개, 2008.12)

    From {%LFNAME%}{%LLNAME%}34@gmail.com  Fri Dec 19 05:23:02 2008
    Return-Path: <{%LFNAME%}{%LLNAME%}34@gmail.com>
    ... 생략 ...
    From: {$FROMNAME$} <{%LFNAME%}{%LLNAME%}34@gmail.com>

    또는

    From {%LFNAME%}{%LLNAME%}96@msn.com  Wed Dec 17 15:38:53 2008
    Return-Path: <{%LFNAME%}{%LLNAME%}96@msn.com>
    ... 생략 ...
    From: New Phone Giveaways <{%LFNAME%}{%LLNAME%}96@msn.com>

    5. Return-Path: 예

    Return-Path: <Doylembetatron@%RND_FROM_DOMAIN>

    6. Received: 예 (2개)

    Received: from %RND_IP by ; Fri, 27 Oct 2006 03:29:13 -0600
    Received: from weak
    by RND_FROM_DOMAIN with SMTP id ZJkjbTzsN6
    for <xxxxx@xxxxxxxxxxxx>; Fri, 27 Oct 2006 16:30:03 +0500

    7. Message-ID: 예 (2개, 처음 1개는 2006, 마지막 1개는 2008.12)

    Message-ID: <3337900.066721.47267995@%CUSTOM_FROM_EMAIL>
    Message-ID: <49489E74.1005554@{%MAILSERVERHOSTNAME%}.msn.com>

    8. Subject 예 (6개, 상위 4개는 2005.12~2006.1, 그 다음 1개는 2006.11.6, 마지막 1개는 2008.12)

    Subject: 완전후불 100% 항공자켓으로 따뜻하게..%RND_DATE_TIME
    Subject: 최고급 최저가 파일럿항공복 100%후불제실시~%FIRST_NAME
    Subject: 차량용 온열시트-히터보다 더빨리 따뜻해집니다"~%RANDOM_WORD
    Subject: Saiba como emagrecer depois das festas %RNDUCCHAR16
    Subject: watercourse %REAL_DATE[%TIME]
    Subject: {%SUBJECT%}
     


    변수의 유형은 크게 다음 5가지로 요약된다. 변수명은 모두 대문자이며, 경우에 따라 _가 들어간다.
    1) %변수명
    2) %변수명[자리수범위]
    3) %변수명 + 숫자(숫자는 길이를 의미)
    4) {%변수명%}
    5) $변수명$

    From: 이나 Return-Path: 헤더에서 %DIGIT% 에는 발송기가 임의의 숫자를 넣게 된다. %RND_DIGIT[1-3]와 같은 형식도 있는데, 정규 표현식과 유사(정규표현식에서 {1,3}은 1~3자리를 의미)하게 사용해서 1자리에서 3자리까지 임의의 숫자가 들어가게 될 것이다. 결국 0~9자리의 숫자를 자유롭게 From주소에 넣을 수 있다는 얘기다.

    - %RND_FROM_DOMAIN, %CUSTOM_FROM_EMAIL : 임의의 도메인 주소에 해당한다.
    - %RND_IP : 임의의 IP주소
    - {%MAILSERVERHOSTNAME%} : 서버명만 대체된다. 예) www.foobar.com 에서 www에 해당.
    - {%LFNAME%}은 소문자 First Name, {%LLNAME%}은 소문자 Last Name을 추측되며, {$FROMNAME$}는 이름이다.

    Subject: 헤더중 %RND_DATE_TIME에는 정상 스팸(?)일 경우 '파일럿 항공자켓 겨울특전~Wed, 21 Dec 2005 07:54:32 -0400' 처럼 날짜가 들어가 있다.

    - %RANDOM_WORD : 임의의 단어
    - %RNDUCCHAR16 : 임의의 대문자 16자리(숫자는 자리수로 추측된다.), '%RNDLCCHAR+숫자'형태라면 임의의 소문자를 뜻한다.
    - %RANDOM_CHAR, %RANDOMCHAR, %RND_LC_CHAR, %RND_UC_CHAR 등의 유형도 있다. (개인적으로 수신한 적 없음)

    6번째의 Received: 예를 보면 'by RND_FROM_DOMAIN with SMTP id ZJkjbTzsN6'부분이 보인다. RND_FROM_DOMAIN 변수는 스패머가 %를 빼고, 잘 못 입력한 것으로 보인다.

    3. 본문에서 사용하는 변수 예

    boundary, 텍스트 내용, 이미지 등도 변수를 사용하고 있다.

     
    1. 본문 예 1

    Content-Type: multipart/alternative;
            boundary="----=_%OLATTACH1"
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180

    This is a multi-part message in MIME format.

    ------=_%OLATTACH1

    2. 본문 예 2

    ------=_NextPart_177_A8A0_18136339.ED04FD82
    Content-Type: text/plain;
            charset="us-ascii"
    Content-Transfer-Encoding: quoted-printable

    =7B%PLAINTEXT_MSG%=7D

    3. 본문 예 3

    ------=_NextPart_000_000C_01C6FBFA.DB141500
    Content-Type: image/png;
            name="ftqg.png"
    Content-Transfer-Encoding: base64
    Content-ID: <000b01c6fbea$178ccba0$01f5aa58@gaysqjacsf>

    $BASE64_IMAGE$

    ------=_NextPart_000_000C_01C6FBFA.DB141500--

    4. 본문 예 (2008.12)

    From rebecca@...생략...  Thu Dec 18 14:22:08 2008
    Return-Path: <rebecca@...생략...>
    ... 생략 ...
    Content-Type: text/plain
    Content-Transfer-Encoding: 7bit

    {%BOTGREETING%}
     


    4. 스팸 발송툴과 스팸 관련 자료

    스팸툴이 위와 같이 다양한 스팸용 변수들을 제공한다는 것은 스패머들에게 조리법(=스팸툴 매뉴얼)만 읽으면, 한두가지의 재료로 다양한 요리를 쉽게 만들어낼 수 있는 요리기구를 제공한 셈이다.
    경우에 따라선 정상적인 조리에서는 먹어볼 수 없는 독특한 형태의 요리(=비정상적 헤더)도 만들어낸다. 예를 들어보자. 하나의 스팸메일에서 From:, Return-Path:, Message-ID:, Received: 의 메일주소나 도메인이 각각 다르게도 표시되는 경우가 많다. 이 것은 %RND_FROM_DOMAIN, %CUSTOM_FROM_EMAIL, %CUSTOM_FROM_NAME, %RND_IP 유형의 변수를 함께 사용하여 임의로 생성된 도메인(또는 메일주소)이 동시에 만들어지기 때문이다.

    과연 저런 유형의 변수를 사용하는 스팸툴은 어떤 것이 있을까. 인터넷 여러 기술문서에서 확인할 수 있으며, 'Inside the Spam Cartel: Trade Secrets from the Dark Side'(2004년, http://www.amazon.com/Inside-Spam-Cartel-Trade-Secrets/dp/1932266860/ )책에서도 확인할 수 있다. 이글에서는 직접 스팸툴의 이름을 공개하지 않고, 2개 스팸툴 화면만 소개한다. (이미지 중 '타이틀' 부분은 지움. 쉽게 찾을 수 있겠지만 직접 툴 이름을 공개하고 싶지는 않다.)

    [ 쉽게 헤더를 변경 ]


    [ 다양한 매크로(즉, 글에서 소개한 스팸용 변수)를 제공. 출처 : 책 'Inside the Spam Cartel' ]




    메일과 안티스팸을 주제로 치뤄지는 CEAS 2008 행사(Conference on Email and Anti-Spam, http://www.ceas.cc/2008/ )가 있다. 여기서 발표된 'A Survey of Modern Spam Tools'(글 Henry Stern) 문서는 스팸메일의 유형과 변수(매크로)에 대해서 상세히 분석되어 있다.

      커피닉스 카페 최근 글
    [08/25] #gpt_question_subje
    [08/20] From what I've seen
    [08/14] сайт
    [06/16] [질문]SAN 스위치 브로드케이드 dcx8510-4 장비관련입니다.
    [04/22] Re: 영화속에 컴퓨터 이야기 ~스워드피쉬(2001)
    [10/20] Cross Compiler 깔
    [07/14] SSL АО
    [04/26] Re: 도스화면 원격조종 여부
    [04/25] 도스화면 원격조종 여부
    [10/30] Cshell에서 난수 설정
    [10/23] 공항철도주식회사 SE 구인 件
    [01/26] Re: wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/25] wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/11] 특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
    [08/01] DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
      New!   최근에 등록한 페이지
      KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
      오픈캐스케이드 캐드 (OpenCASCADE CAD)
      QCad for Windows --- GNU GPL (Free Software)
      The Hello World Collection
      IPMI를 활용한 리눅스 서버관리
      DNS 설정 검사
      nagiosgraph 설치 방법
      Slony-I 설치 방법 (postgresql replication tool)
      Qmail기반의 Anti spam 시스템 구축하기
      clusterssh

    [ 함께하는 사이트 ]




    운영진 : 좋은진호(truefeel), 야수(yasu), 범냉이, sCag
    2003년 8월 4일~