Tiny Logs 

스팸 로봇의 기능 요약과 그에 따른 대처 방안

타이니 | 2012.07.13 17:14 | 조회 2,687
카테고리분류 : 기타 항목
Got SPAM ?

킴스큐는 물론 OSS(오픈 소스 소프트웨어) CMS의 가장 취약한 부분이 아무래도 스팸 부분일 것입니다.
관련해 도움이 되실 것 같아 스팸 로봇에 대해 간략히 요약합니다.


:: 저는 스팸 로봇을 저급한(싸구려) 놈과 고등한(비싼) 놈으로 구분합니다.

1. 저급한(싸구려) 스팸 로봇 프로그램

이 놈은 기본적으로 웹사이트(솔루션)의 취약점을 공격합니다.
 - 글 등록 액션 파일로 직접 접근합니다.
 - 폼 데이터를 $_GET 으로 넘기든 $_POST 로 넘기든, 그리고 그것을 자바스크립트 단위 뿐만 아니라 넘어온 폼 값을 액션프로그램에서 재차 검사하더라도 대응이 가능합니다.
 - 잘 알려지지 않은 솔루션이나 자체개발 프로그램은 스패머가 수동 설정할 부분이 있지만 XE/그누/킴스큐 등은 이미 기본적으로 구조가 알려져 탑재되어 있을 겁니다.
 - 자기 사이트가 이 저급한 놈들에게 당하고 안 당하느냐는 무작위로 인터넷 링크를 타고 돌아다니는 주소 수집 크롤러가 아직 방문하지 않아서일 뿐입니다.

대응책은 아래와 같이 여러가지 있습니다. (뒤로 갈 수록 간편하지만 완벽하지 않습니다.)

 - 가장 좋은 대응책은 항상 변하면서 정답이 있는 값을 입력 받아 검사하는 것입니다. CAPTCHA 라는 것으로 GD방식으로 만들어진 이미지의 글자를 입력 받거나 숫자로 된 산수 계산식의 정답을 입력받는 방식입니다. 그 정답을 액션파일에서 맞는지 검사합니다.

 - 또는 데이터 등록 화면에서 세션으로 구워진 임의의 변수를 사용합니다. 즉, $_GET 이나 $_POST 로 넘어온 값을 검사하는 것은 물론이고 사용자에게 입력받지 않는(보이지 않는) 임의의 로봇대응 변수를 세션으로 구워서  $_SESSION['변수명'] 으로 검사합니다. 저급한 스팸로봇은 세션을 쏘지 못합니다.

 - 또는 디비에 등록된 스팸 데이터의 패턴을 들여다보고 로봇 방식을 역이용합니다. 예를 들면...
분명 킴스큐의 추가필드라든가 특정 필드를 액션파일에서 아래처럼 검사하고 디비 입력을 받는데도 스팸등록이 되는 경우가 있을 겁니다.
if (!$_POST['adddata']) exit(); //이런식
그런데, 디비에는 저 adddata 필드가 비어있거나 이상한 문자가 있지요? (대부분의 스팸 로봇이 이렇습니다.)
왜 비어있냐 하면 실제 의미없는 / 또는 디비 입력전에 이스케이프 되는 문자를 스팸로봇이 던지기 때문입니다. 저 조사를 할 당시에는 값이 있었다가 나중에 없어진거죠.
이런 방식을 역 이용해서 있는지 없는지를 검사하는게 아니라 형식에 맞는지 안 맞는지를 검사하는겁니다.
당연히 데이터의 가공을 모두 마치고 디비 인서트 직전에 최소 글자수라든지 특정 문자가 들어있어야 한다든지 이형식적인 면을 조사합니다.
예) POST로 넘어온 필수입력 변수의 글자수가 3글자 이상
예) 전화번호라면 가공을 모두 마친 데이터가 전화번호 형식에 맞는지 검사 등등

 - 가장 간단한 방법으로는 리퍼러URL을 조사하는 것입니다. 액션페이지에 POST 하는 URL이 내 사이트 URL이냐를 검사합니다.


2. 고등한(비싼) 스팸 로봇 프로그램

 - 이 똑똑한 놈들은 정확히 사람이 게시판에 정상적으로 글을 등록하듯이 동일하게 한다고 보시면 됩니다.
 - 리퍼러 조작은 기본이기에 리퍼러로 막는건 뚫립니다.
 - $_GET , $_POST 는 물론이고 $_SESSION 으로 검사해도 뚫립니다. (정확히 사람이랑 동일한 대상이라 여기셔야 합니다.)
 - 단순한 CAPTCHA 도 뚫어 버립니다. GD로 생성한 이미지를 읽어내는 엔진을 이용하기도 하고 산수 계산식 정도는 술술 풀어서 답을 입력합니다.

대응책은 많지 않습니다. 타겟이 되지 않기만 바랄뿐...

 - 아주 복잡하거나 독창적인 CAPTCHA 방식을 사용합니다. GD 로 글자 생성시 글자를 왜곡한다거나 그림을 글자로 쓰게하는 방식이라던가. (우산 그림 보여주고 - 이게 뭐냐? 써라! 하고 정답은 우산)

 - WordPress 등 활성화된 CMS 의 플러그인 형태로 존재하는 방식이 하나 있는데, 이건 공동 집단 대응하는 것입니다. 주로 스팸 글 내용 패턴을 다수의 CMS 사용자로부터 수집하고 그걸 데이터화 해서 글 입력받을 때 글 내용을 검사해 스팸유무를 판단해 글 등록을 시키긴 시키되 관리자만 볼 수 있도록 유보시키는 방식입니다.


대략 간단히 설명할 수 있는 내용만 요약했습니다.
크리에이티브 커먼즈 라이선스
22개(1/3페이지) rss


많이 본 글최근 90일내 많이 본 글입니다.
댓글 많은 글최근 90일내 댓글 많은 글입니다.
Tag Cloud
등록된 태그가 없습니다.

Visits Counter
  • 26오늘 방문
  • 96어제 방문
  • 26오늘 페이지뷰
  • 97어제 페이지뷰
  • 2,616이번 달 방문
  • 2,247지난 달 방문