IT이야기2010. 6. 16. 18:43
최근 월스트리트 저널(online.wsj.com)등을 포함한 MS IIS 서버와 ASP.net환경의 서버에 대량 SQL Injection(Mass SQL Injection) 공격이 이뤄지고 있으니 주의가 필요하다.

해킹된 사이트에는 _script src=http://ww.robint.us/u.js_ 스크립트가 삽입이 되었다. 그 이후에 2677.in/yahoo.js, 4589.in/yahoo.js 등의 도메인으로 스크립트를 삽입하고 있다. 최근 Adobe Flash 0-day 취약점(CVE-2010-1297)이 발생했다. 이 취약점을 패치하지 않은 유저가 해킹된 사이트를 방문하면 악성코드에 감염이 된다. Armorize Blog(상세한 분석 자료 있음)에 따르면 이 악성코드는 다음 3개 게임 사이트의 게임 계정을 가로채는 것으로 알려졌다.
 
aion.plaync.co.kr
aion.plaync.jp
df.nexon.com

구글에서 2677.in/yahoo.js 또는 4589.in/yahoo.js를 검색하면, 프레시안(현재는 정상 복구된 것으로 보임), 한국표준협회, 아산시 평생학습센터 등 다수의 국내 사이트들이 감염된 것을 확인할 수 있다.

[ 구글에서 '2677.in/yahoo.js' 검색 결과 ]


유저들은 KrCERT의 권고문을 살펴보고, 반드시 Adobe Flash Player(http://get.adobe.com/flashplayer/)를 업데이트해야 한다.

마지막으로 위 도메인의 등록정보를 살펴보자. 3개 모두 중국(CN)에서 등록을 했다. 등록일이 얼마되지 않았다. 스크립를 호스팅하기 위해 생성한 도메인이라는 것을 뜻한다. 그리고, 도메인이 차단될 경우에 유사 도메인으로 계속 등록을 시도할 가능성이 커보인다.

1. robint.us
   Domain Registration Date:                    Sun Mar 14 05:28:08 GMT 2010
   Domain Last Updated Date:                    Tue Jun 08 05:10:09 GMT 2010

2. 2677.in
   Created On:10-Jun-2010 10:33:51 UTC
   Last Updated On:12-Jun-2010 15:59:46 UTC

3. 4589.in
   Created On:13-Jun-2010 08:13:07 UTC
   Last Updated On:13-Jun-2010 08:13:08 UTC


* 관련 정보

  - Mass infection of IIS/ASP sites - robint.us
  - Mass infection of IIS/ASP sites - 2677.in/yahoo.js
  - 대량 SQL Injection 공격 주의 (2009.12월)
Posted by 좋은진호
IT이야기2009. 11. 30. 19:18

'보안뉴스'에 '[단독] 엔프로텍트, 해킹당해 100만 고객 DB와 ID/PW 유출!' 이라는 기사가 올라왔다. 며칠전 Symantec Japan 사이트를 해킹했던 루마니아 해커 우누(Unu)가 SQL Injection 공격을 사용해서 http://www.nprotect.com/ 웹페이지를 해킹했다. ID, 메일주소, 비밀번호가 유출됐을 가능성이 있다.

공격한 해커의 블로그를 보면 다음과 같은 사항을 알 수 있다.
  • MySQL 5.0.x 버전 사용
  • DB데이터는 별도 내부망이 아닌 공인 IP를 통해서 통신 (211.200.28.x)
  • MySQL load_file() 함수를 사용할 수 있도록 되어 있어 시스템의 파일들도 쉽게 볼 수 있었다.
  • 비밀번호는 암호화 되어 있지 것으로 보인다. (추측)
  • 유저 DB건수는 약 108만여건

[+] Gathering MySQL Server Configuration …
Database: ??????
User: ????????@211.200.28.???
Version: 5.0.41-log
... 생략 ...
[+] Number of Rows: 1079630

nProtect는 홈페이지에 비밀번호 변경 공지가 띄워진 상태이고, '엔프로텍트 보안강화 조치를 위한 개인정보 변경 안내'라는 메일을 고객들에게 발송했다. 해킹에 대한 이야기는 없고, '고객님의 정보보호 강화를 위하여 패스워드(비밀번호)를 변경해 주세요'라는 내용으로 변경을 권고하고 있다. 개인정보가 유출되지 않았기를 바라지만, 가입된 사용자라면 빨리 변경하시길...

nProtect 비밀번호 변경 공지

[ nProtect웹사이트에 올라온 비밀번호 변경 공지 ]


이 번 nProtect 웹사이트 해킹을 보니 다음과 같은 생각이 든다.

  • 유저들의 보안강화를 위해 노력은 했지만, 정작 본인의 웹사이트 보안에는 구멍이 생겼다.
  • 중이 제 머리 못 깍는다 격이다.
  • 비교적 빨리 조치를 취해서 다행일지도 모르겠다.
  • 그럴지라도, nProtect 관계자분들은 이번 사건을 심각하게 생각해야 하고, 후속조치(망분리, 비밀번호 암호화 등)가 필요하다.

Posted by 좋은진호
시스템이야기2008. 12. 11. 00:34
GreenSQL( http://www.greensql.net/ )은 MySQL에 대한 SQL 인젝션(Injection) 공격을 방어하는 프락시 개념의 어플리케이션이다. 웹페이지를 호출하면 DB쿼리는 먼저 GreenSQL 로 넘어겨지고, 검사한 후 정상적이면 MySQL 서버로 요청하는 과정을 거친다.
GreenSQL을 설치하고 실행과정은 이렇다. MySQL 서버는 기존 그대로 실행(디폴트 3306 포트)하고, GreenSQL을 3305포트로 실행(127.0.0.1:3305)한다. 이 때 GreenSQL은 MySQL 서버로 커넥션이 이뤄진다. 웹페이지는 DB커넥션을 GreenSQL의 3305포트로 커넥션하도록 변경해주면 된다. (MySQL을 3305로, GreenSQL을 3306으로 실행할 수도 있을 것이다.)

[ 이미지 출처 : GreenSQL 홈페이지 ]

DB 쿼리의 정상, 비정상은 어떻게 판단하는가?

1) '관리자가 실행할 SQL 유형'이나 '민간한 형태의 SQL 유형'(flush privileges, show 명령, 불법적 형태 등)을 패턴 매칭 방식으로 찾아서 불법 요청으로 간주한다. 예를들면 DB관리 명령어, DB 스키마를 변경시도하는 경우, 시스템 파일을 액세스하려는 경우 등을 불법으로 간주한다. 이 패턴에 대해서는 설정 파일을 통해서 변경이 가능하다.

2) 그후 각 쿼리 유형에는 점수가 할당되어 있는데, 이 점수를 합산한다. 지정된 값 이상이 될 경우, 경고 메시지를 뿌려주거나 차단할 수 있다. 유형은 다음과 같다.

* Access to sensitive tables increases risk query (users, accounts, credit information)
* Comments inside SQL commands increases query risk
* Usage of an empty password string
* Found ‘or’ token inside query
* Found SQL expression that always return true (SQL tautology)
* Comparison of constant values (SQL tautology)
* ... 등 ...

점수는 설정 파일을 통해서 변경이 가능하다. 다음은 샘플 설정 파일의 일부이다.
# If query risk is bigger then specified value, query will be blocked
block_level = 30
# Level of risk used to generate warnings. It is recomended to run application
# in low warning level and then to acknowledge all valid queries and
# then to lower the block_level
warn_level=20
# Risk factor associated with SQL comments
risk_sql_comments=30

차단된 샘플 로그이다. (sCag님 제공. 감사합니다.)

2008-12-09 16:54:18 mysql SELECT * FROM user WHERE name = 'x' or 1=1; --' AND pwd=SHA('')  blocked

GreenSQL에 대한 결론이다.

  • 멋진 생각이다. ^^
  • 패턴 설정과 차단수준을 유동적으로 변경 가능하다.
  • 대부분의 리눅스 배포판을 지원하며, FreeBSD도 지원한다.
  • 성능 테스트 결과 약간의 성능 저하가 발생한다. (2~12%정도)
  • 대용량 서비스에서 사용하기는 무리가 있을 것 같다.
  • 소규모 사이트나 웹호스팅에서는 고려해볼만 하다.
  • SQL Relay(DB 풀링과 로드발런싱 등)에서 제공하는 기능 등이 하나로 합쳐진다면 멋질 것 같다.
※ 개인적으로 GreenSQL을 운영하지 않습니다. 소규모 사이트, 웹호스팅에서 유용할 것 같아 소개해드리는 것이며, 운영상 궁금한 점을 저에게 질문하셔도 답해드릴 수 없습니다. ^^
※ 글쓰고 나니깐 sCag님도 GreenSQL 글을 쓰셨네. 안쓰실 것 처럼 말씀하시더니. ㅋㅋ

Posted by 좋은진호