본문 바로가기

Security Indicator/Insight

(1) 상상하기 어려운 위협-디지털 페스트

예고드린 대로 상상하기 어려운 위협에 대한 내용입니다. 두편 입니다. 호러물 정도 될 것 같습니다.

 

 

 

일전에 중국발 해킹이 전 세계로 확산 될 것을 예상 하였고 관련 내용들을 여러 번 공유를 한 적이 있습니다. 이제 실제적인 위협으로 직접 출현을 하고 있습니다. 국내는 2005년부터 일반적으로 발생 하였고 세계적으로 확대된 시기는 2006년 하반기쯤으로 예상을 하고 있습니다. 2007년에도 세계적으로 많은 이슈들이 생산 되었습니다. 올해 들어서는 더욱 드라마틱한 증가를 보이고 있는데 특이한 사항들이 눈에 드러나고 있습니다.

 

http://securitylabs.websense.com/content/Alerts/3070.aspx

http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=9080580

 

위의 Websense 사의 조사 결과 이외에도 ( 위의 조사 결과는 google을 통한 동일 도메인 스크립트와 게시물의 링크만을 조회한 내용이며 실제적으로는 더욱 많은 피해가 있음은 당연한 이야기 입니다. 중복된 결과가 반영 된다 하여도 상상하기 힘든 수치입니다. ) 국내에서도 동일한 유형으로 조사를 한 결과 약 5만개 이상의 침입을 당한 사이트가 존재 하는 것이 확인 되었습니다.

http://www.boannews.com/media/view.asp?idx=9671&kind=0

 

위의 사안들에서 일반 사용자들은 물론이고 전문가들 조차도 오해와 잘못된 인식이 있는 부분들이 존재하고 있습니다. 이런 부분들에 대해서 정리하는 것도 필요하고 근본적인 원인 제거를 위해서는 어떤 것들이 필요한 지에 대해서 정리가 필요합니다.

 

 

 

상상하기 어려운 위협

 

 

실제화된 위협입니다.

상상하기 어려울 정도의 혼란이 다가 올 수도 있습니다. 이미 시작은 된 상태입니다.

위에 기사화된 내용이 전체를 나타내고 있지 않습니다. 확대 시키지도 않고 위에 나타난 내용대로만 기술을 해봅니다. 

 

50만대의 PC라 해도 규모가 엄청나다고 할 수 있는데 이건 PC가 아닙니다. 50만대의 웹서비스 입니다. 그렇다면 방문자를 곱하면 얼마나 될까요? 하루에 열명이 방문하는 정말 초라한 웹서비스라 할지라도 50 * 10 = 500만 입니다. 이미 인터넷상에 오픈 된지가 오래 되었으므로(10일 정도 노출을 추산) 여기에 또 * 10을 합니다. 5000만대의 개인 PC입니다.  정말 최소치로 잡은 내용입니다.  5000만대 중 정말 여유롭게 잡아서 스크립트에 포함된 공격코드가 실행이 안 되는 패치 설치자 및 다른 종류의 운영체제를 쓰는 사용자 비율을 40%로 보겠습니다. IE가 아닌 다른 브라우저의 사용자라 하여도 Windows 계열의 사용자들은 영향을 받습니다.

 

##########0*

<ref: http://en.wikipedia.org/wiki/Usage_share_of_web_browsers >

 

현재 Windows pc를 사용하는 일반 사용자의 비율은 90% 가량에 이릅니다.

<ref: http://en.wikipedia.org/wiki/Usage_share_of_desktop_operating_systems >

한국의 예가 아니라 전 세계적인 통계치의 예입니다.

 

거의 열에 아홉은 공격 대상자에 포함이 됩니다. 이중 패치를 설치한 사용자 비율을 30% 이상으로 산정하고 10% 가량을 해당 사항이 없는 운영체제로 보면 5000만대의 PC 60%에 달하는 개인PC들에 영향을 미침을 알 수 있습니다. 무려 3000만대 입니다.

 

보수적인 계산을 하였다는 가정입니다. 50만개의 웹사이트에 하루에 열명 정도의 방문자만 있고 노출 기간이 열흘이라고 산정 한 정말 최소의 결과라 할 수 있습니다.

 

l        일례로 Autoweb 이라는 회사도 공격의 대상이 되었습니다만 일일 방문자가 25000명 이라고 합니다. 10*10을 한 100명이 아니구요. 공격 대상이 얼마나 되었을지는 상상에 맡깁니다.

Ref: http://www.networkworld.com/news/2008/050108-autoweb.html 

 

위의 통계치에서 산출된 PC의 수치는 말 그대로 계산의 편리성을 위해 비약 없이 산정한 것이며 실제로는 이보다 더한 경우라고 판단 됩니다. 노출 기간은 앞으로도 상당기간 계속 될 수 밖에 없어서 문제는 더해질 수 밖에 없는 부분이죠.

 

 

 

 

왜 상상하기가 어려울만큼의 위협인가?

 

 

근본적인 문제를 지적 합니다.

 

50만대의 웹서비스에 악성코드를 설치하는 코드를 넣기 위해서는 전제 조건이 필요합니다.

해외의 기사 및 국내의 기사들도 이런 부분을 간과하고 있습니다. 심지어 전문가들 조차도...

 

 

l       문제의 시작은 필터링이 되지 않은 Web service의 코딩 문제

 

l       Database의 완전한 권한 획득 (이미 DB에 저장된 정보는 공격자의 것입니다.)

 

l       DB 권한을 통한 웹서비스 소스의 자유자재 변경 권한 (50만대의 웹서비스를 동시에 하나의 웹페이지로 변경하는 것도 가능하겠죠? 그러나 공격자들은 하지 않습니다.) 소스의 변경권한이 있어야 웹소스 내용에 악성코드를 유포하는 스크립트를 추가 하는 것이 가능합니다. 더불어 DB에 쓰기가 가능한 것도 마찬가지 이겠죠. 이건 시스템에 대한 완벽한 제어 기능과도 동일합니다.

   

 

위와 같은 세 개의 전제가 깔려 있습니다. 현상만을 논하기엔 문제가 많습니다. 50만대의 웹서비스 혹은 50만대의 개별 Database ( PC가 아닙니다. )에 저장된 정보의 유출, 또 최소한의 방문자에게도 유포되는 악성코드들의 파장 ( 위의 계산대로 최소화 하여 3000만대 이상의 수치입니다. ) 은 어디까지 미칠 수 있을까요?

 

현재의 공격코드는 지난 해에 패치가 나온 취약성을 공격하는 유형이지만 새로운 유형으로 변경이 된다면? 또 백신이나 보안소프트웨어에서 탐지가 어려운 Zeroday 유형이라면 어떤 결과가 초래 될까요?

 

키보드로부터 입력 되는 것들에 대한 로깅뿐 아니라 백도어 설치를 통한 원격제어 기능들까지도 이미 시현이 된 공격기술입니다. 폭넓은 Agent의 배포수단으로 웹서비스를 택한 것이고 이제는 무차별적인 웹서비스 공격이 시작도 아니고 발견된 것 뿐입니다.

 

Websense F-secure와 같은 보안 전문 회사들에서의 인식도 심각한 수준입니다.

너무 많은 iframe 삽입 루틴이 발견 되고 MS 계열의 웹 서비스 ( IIS + ASP + MSSQL)에서 발견이 되고 있으니 새로운 유형의 웜이나 공격코드가 미 발견된 MS의 취약성을 공격하는 것으로 오인을 하고 있습니다. 안타까운 인식입니다. 이런 유형의 오해는 공격에 대한 이해와 관찰부족으로 인합니다. 또한 종합적인 상황인식의 부족에서 기인합니다 

문제의 원인은 Web application 개발 시에 사용되는 모든 언어들 (php, asp, jsp, html, pl 등등 모든 종류)에서 Database로 전달되는 쿼리에 대해 유효한 쿼리 구문인지에 대한 필터링이 되지 않아서 발생하는 문제입니다. 이런 공격 근거를 몰라서 발생된 오해입니다. 

 

새로운 유형의 웜이나 공격코드가 발견이 된다면 이것은 MS의 취약성을 ( ref: http://www.news.com/8301-10789_3-9930452-57.html?tag=nefd.pop ) 공격하는 것이 아니라 URL의 인자를 DB로 전달하는 부분에서 SQL query에 대한 필터링을 하지 않아서 발생하는 문제입니다. 웜이라 하여도 이건 지능화된 Application 공격 유형의 웜 입니다.

 

 

SQL Injection의 설명

 

Web application을 개발하는 모든 개발언어들은 Database와 연결을 가집니다. 사용자의 선택에 따라서 DB에 저장된 다양한 컨텐츠를 웹페이지에 보여주는 형식을 지닙니다. 어떤 테이블에 몇 번째에 해당하는 데이터를 가져 오겠다고 정의하는 것이 Web app에서 사용하는 SQL 쿼리라고 할 수 있으며 쿼리의 조건은 사용자의 선택에 따라 선별 되게 됩니다. 간단하게  www.vuln.com/list.php?id=1&field=1100 과 같은 URL이 전달된다면 Web service 상에서는 Database에 다음과 같은 유형의 쿼리를 전달 합니다. Select * from Bulletin where tableid=1 and fieldid=1100 와 유사한 쿼리가 발생하게 되죠.

공격의 핵심은 이것에서 기인합니다. 만약 URL 인자에 SQL query를 덧붙이게 되면 어떻게 될까? 여기에서부터 기인을 하며 www.vuln.com/list.php?id=1&field=1100   과 같이 인자의 뒤에 문자 (인용부호)  붙이게 되면 SQL query는 구성상에 에러를 발생 시킵니다.

Select * from Bulletin where tableid=1’’ and fieldid=1100’’  와 같은 구성이 되며 이 경우에 Unclosed quotation mark error와 같은 DB의 에러 구문을 보내게 되죠.  Web 상에는 다양한 SQL Injection 관련된 설명들이 있습니다.  이런 유형들을 간단한 검색으로도 찾을 수가 있습니다.

Sql injection에 대한 간단한 설명: http://blog.naver.com/p4ssion/40017941957

대책에 대한 설명: http://blog.naver.com/p4ssion/40015866029

2005년에 이미 대책과 공격에 대한 위험에 대해서 알린 바가 있습니다.

 

 

위의 SQL injection에 대한 설명은 간단한 공격기법에 대한 설명입니다. 중요한 점은 수십~ 수백 번의 SQL 쿼리 어쩌면 그 이상의 공격 횟수가 필요합니다만 중국의 공격자들은 이와 같은 공격들을 자동화된 도구로 만들었다는 점입니다. 이미 3년도 전에 만들어진 상태입니다.

 

지금의 공격유형은 여기에 몇 가지 기능이 더 부가된 것으로 판단됩니다. 끔찍한 결과를 가져오는 내용이며 앞으로도 계속 유효할 내용입니다.

( 전 세계의 Web application을 각 인자 별로 Filtering을 완전하게 하거나 모든 DB와의 연결을 끊는 것이죠. 사실상 불가능합니다. )

 

문제에 대한 상세한 설명 및 부가적인 대책자료는 중복 내용이므로 자료를 참고 하시기 바랍니다.

http://blog.naver.com/p4ssion/40015866029 개별 시스템에 해당하는 대책이며 전체적이고 광역적인 대책은 별도 언급 하겠습니다.

 

 

 

- 다음편으로 계속 됩니다.