태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

 -zdnet 게재 컬럼입니다.

과연 인터넷 웹 서비스는 안전한가? 

일상적으로 접속해 정보를 상호 소통을 하는 중요한 매개체로 자리잡은 웹서비스는 그만큼의 신뢰도를 가지고 있다고 할 수 있을까?

여기 보려 하지 않고 외면 하고자 하는 불편한 진실이 있다. 이미 오래된 이야기지만 지금까지도 진행형 이고 앞으로도 심각성이 더 높아 질 수 밖에 없는 불편한 진실이다. 아직도 많은 이들의 관심 밖에서 이뤄지는 현실이 여기있다.

안전한 웹 서비스로 가는 길은 멀고도 험하다. 그러나 대부분이 쉽게 생각한다. 공격자들은 항상 그 빈틈을 노리고 끊임없이 공격한다. 일반 인터넷 사용자들은 자신의 아이디와 패스워드가 노출 되어 금전적인 손실이 발생 하거나 피해를 입었을 경우에만 민감하게 반응한다.

 

개인 PC에 설치된 악성코드의 문제를 개인 사용자의 부주의로 돌리는 것은 잘못된 것이다. 이제는 기본적인 보안 대책을 철저하게 실천한다해도 악성코드로부터 안전하지 않다.

어떤 접속 도구를 이용하던 웹 서핑을 하면서 자료를 확인 하고 정보를 공유하는 지금의 시대에 안전한 상태로 개인 PC를 유지 하려면 인터넷을 하지 말아야하는 수준이다. 사용자PC의 안전한 설정은 가능성을 조금 줄이는 옵션일 뿐이다.

왜 이런 상황까지 전개가 된 것일까?

일단 기본 설명에 대한 이해를 참고 하도록 한다.

대규모(Mass) SQL 인젝션(Injection)에 관련된 설명은 다음을 참고 한다.
Mass sql injection 대응과 현실 -
http://p4ssion.com/200
SQL Injection 공격 변화 -
http://p4ssion.com/207 

본시 SQL 인젝션 공격은 2005년 무렵부터 자동화된 도구를 이용하여 처음 시작이 되었다. 이전에는 공격자의 수작업에 의한 소위 타켓팅한 공격만이 있었다. 자동화된 도구에 의한 공격은 한국이 최초의 테스트 베드가 됐고 그 시작은 2005년부터다.

자동화된 도구를 이용한 SQL 인젝션 공격은 2007년을 지나면서 다른 양상으로 전개 되기 시작한다. 단일 사이트에 대한 자동화된 공격을 벗어나 대규모 도메인에 대한 자동화된 공격으로 전이가 된 것이다. 차이점은 자동화된 공격 도구의 대상을 단일 도메인으로 지정하는 것이 아니라 대규모 도메인 혹은 구글과 같은 검색엔진을 통한 무차별적인 공격으로 방향을 전환 했다는 점이다.

단일 서비스에 대한 공격으로 한정이 될 때는 공격자도 그만큼 많은 노력을 기울여서 여러 사이트를 반복해서 공격 할 수 밖에 없었지만 수집된 도메인 리스트에 기반한 공격과 검색엔진을 동원한 공격은 국가와 지역의 차이를 넘어서 무차별적인 서비스 공격으로 나타나고 있다.

서비스를 공격한 후에는 웹 서비스에 악성코드를 유포하는 URL을 삽입한다. 물론 데이터베이스안에 있는 내용은 관심 밖이다. 이미 가져갈 만큼 다 가져 갔는데 또 가져갈 필요성이 있을까? 이젠 데이터베이스에 저장된 내용이 아닌 방문자의 정보가 필요할 뿐이다.

웹 사이트 방문자의 PC에는 웹 사이트에 방문 할 때 마다 악성코드가 다운로드가 되고 조금 신경을 쓰면 방문자의 PC 운영체제에 따른 공격이 발생되게 된다.

이제 개인 사용자가 금융거래 사이트 또는 인터넷 서비스에 접근 할 때 마다 사용자가 입력하는 키입력 정보는 공격자에게로 전송된다. 때론 봇넷 에이전트를 동원해 분산서비스거부(DDoS) 공격을 하기도 하고 협박을 하기도 한다. 공격자들은 유출된 개인정보를 이용해 블로그나 카페, SNS 매체에 광고를 하는 등 다양한 방식으로 금전적인 이득도 추구하고 있다.

국내 금융권의 경우 다단계 보호수단들이 있으나 해외 금융기관들은 보호수단이 없거나 미비한 경우가 많아  피해 금액이나 사례는 국내보다 해외에서 더 큰 문제로 대두되고 있다.

현재의 대규모 SQL 인젝션 공격 동향을 살펴보면 두 가지 유형을 살펴 볼 수 있다. 좀 더 세밀하게 다듬어진 공격과 무차별적인 공격으로 구분 할 수 있는데 그 특징은 다음과 같다.

1. 웹 서비스의 소스를 일부 수정한다. *.js 와 같은 스크립트 유형의 코드를 웹 서비스 소스에 심어 두고 웹 사이트 방문자가 방문 할 때 마다 해당코드가 자동으로 실행 되도록 한다. 스크립트 코드에는 원격에서 사용자의 PC의 권한을 획득하기 위해 악성코드들이 다운로드 되고 실행이 된다.

2. 무차별 공격은 DB 테이블에 악성코드를 다운로드 하는 스크립트를 무작위로 삽입 하는 방식으로 이루어진다. 이 경우 전체적인 공격현황이 검색을 통해 손쉽게 드러난다. 그러나 공격자의 개입 없이도 자동적인 실행과 반복이 가능함으로 대규모 피해가 수반되고 있다. 2와 같은 경우는 많은 웹 서비스들이 데이터베이스에 들어 있는 콘텐츠를 일반 텍스트가 아닌 HTML로 화면상에 전환해 뿌려줌에 따라 자동적으로 실행된다.  텍스트로 읽어 들이는 경우에는 방문자 PC에 있는 브라우저 상에 스크립트 코드 링크들이 중간중간 삽입된 형태로 깨어지는 것을 확인 할 수 있다.

1번과 같은 세밀한 방식은 안티 바이러스 솔루션을 통해서 공격감지가 가능하다. 단 제로데이 공격이 아닐 경우에만 탐지가 가능한 경우다. 하루가 다르게 수많은 애플리케이션에서 취약성이 발견되는 현재에는 탐지 되지 않는 경우가 점차 증가 할 수 밖에 없다. 2번의 경우는 관리자가 손쉽게 데이터베이스 변조 여부를 확인 할 수 있으나 데이터 복구에 시간이 걸리는 문제들이 발견 되고 있다.

현상적으로 발견 할 수 있는 SQL인젝션 공격의 폐해는 무차별적인 공격의 경우 간략하게 검색엔진을 통해서 확인 할 수 있다. 최근까지 발견된 악성코드 유포 링크를 기준으로 검색한 결과는 상상 이상의 웹 서비스들이 해킹을 당하고 악성코드 유포에 이용이 되고 있음을 확인 할 수 있다.

22dnf.com/ff/y.js (국내용) 31,200개
www.dbrgf.ru/script.js (국내외용) 2,810개
mysy8.com/1/1.js (국내용)
s.ardoshanghai.com/s.js (국내용) 1,840,000개
sion.or.kr/iis.swf (국내용) 253,000개
bq346.cn (국내용) 4,930개
mekiller.com/1/1.js (국내외용) 27,500개
*.postfolkovs.ru/js.js (국외용) 125,000개
4589.in/yahoo.js (국외용) 254,000개
s.lbs66.cn/kr.js (국내용) 262,000개
s1.cawjb.com/s.js (국외용) 2,030,000개
s1.cawjb.com/kr.js (국내용) 950,000개
www.adst.ru/ads.js (국외용) 2,280,000개
www.24aspx.com/script.js (국외용) 12,400개
www.dnf666.net/u.js 전체: 530,000 / 국내: 463,000
www.adw95.com/b.js 전체: 61,200 / 국내: 3,940
www.nihao112.com/m.js 전체: 22,000 / 국내: 6
www.update34.com/b.js 전체: 16,500 / 국내: 6
기준 검색 일시: 2010. 7.1

*감염수치는 근사치로 활용이 되어야 하고 각 검색 시점에 따라 다를 수 있다. 또한 수치 확인에는 검색엔진의 검색결과를 이용 하였으므로 중복된 결과도 일부 존재 할 수 있다. 그러나 대강의 상황을 유추 할 수 있다는 점에 있어서 충분한 인용가치는 있다고 본다.

현재 검색 할 경우에는 차이가 많음을 확인 할 수 있다. 그러나 수치 차이는 검색엔진에서의 필터링과 대응을 통해 조회 시점의 수치보다 낮아 질 수 밖에 없다. 악성코드 유포 링크들이 여전히 일부 서비스들에 남아 있다는 것은 문제가 발생 된 이후에도 전혀 수정이 안되었음을 의미한다. 많은 서비스들이 공격이 가능했던 근본적인 소스코드 수정은 하지 않고 추가된 악성코드 유포 링크의 제거에만 신경을 쓰고 있는 것이 현실이다. 새로운 SQL 인젝션 패턴이 발생 될 경우에는 또 다시 몇 백 만대의 서비스들에서 악성코드를 유포하는 현황을 앞으로도 손쉽게 살필 수 있을 것이다.

악성코드를 유포하는 링크들의 업데이트 현황 중 일부는 여기에서 (http://securedmz.com/reference.php) 확인이 가능하다. 이 링크도 일부분임을 기억하자. 공격자 몇 명에 의해 생성되는 링크일 뿐이다. 실제 규모는 휠씬 더 심각한 상황 일 수 밖에 없다. 드러난 것은 10% 미만이라고 본다. 또한 검색엔진에 나타나지 않는 세밀한 공격은 통계치의 밖에 있다.


화면 상에 보듯이 검색결과의 차이가 상당함을 볼 수가 있다. 가장 최근에 보고가 된 Mass SQL Injection 공격으로 삽입된 악성코드 링크는 b.js를 포함하는 링크이다. 검색 결과는 다음과 같다.

2010년 8월 현재 152만개의 서비스에서 악성코드 유포 흔적들이 있다고 나타나고 있다. 그러나 이 중에는 정확한 분석 또는 단순 질의도 포함이 되어 있을 수 있다. 그러나 1/3만 유효한 링크라고 잡아도 50만대의 웹서비스에서 악성코드를 유포하는 것이다.

하루 방문자를 최소화 한다고 하여도 50만대의 웹 서비스에 최소 5명씩만 방문 한다고 하여도 250만대의 PC가 (실제는 휠씬 더 많을 수 밖에 없다.) 영향을 받는 것이다. 공격 성공률은 제로데이 (패치가 나오지 않은 공격) 공격일 경우 매우 높을 것임은 명확하다.

단순한 일회성의 공격이 아니다. 공격자들은 새로운 공격코드를 몇 십 만대에 또 다시 넣을 필요 없이 단순하게 악성코드를 다운로드 받는 주소에 있는 악성코드만을 새로운 것으로 바꿈으로 영향력을 가지게 된다.

전 세계의 보안 관련된 회사들을 단지 2~3명 정도의 공격자가 손쉽게 농락 할 수 있는 상황이 된 것이다.

공격방법 및 활용 시나리오를 간략하게 요약하자.

1. 악성코드를 유포할 숙주 도메인을 확보한다. 가급적 여러 개의 도메인을 확보. 위의 예에서는 b.js 파일이 올려진 사이트가 되겠다.

2. 검색엔진 및 리스트를 통해 Mass Sql Injection 공격을 자동으로 진행 하도록 하고 공격 성공 시에는 악성코드 유포 주소를 삽입한다. (소스코드에 링크 추가 또는 데이터베이스 테이블 내용 변경)

3. 이제 웹서비스를 통해 유포되는 악성코드들이 웹서비스 방문자의 PC에 설치 되기만 기다리면 된다.

4. 사용자들은 웹브라우저를 통해 웹사이트에 접근 하는 것 만으로도 악성코드가 다운로드 되고 실행 될 수 있는 환경이 된다. 이후 키입력은 모두 유출되고 PC는 좀비 PC가 된다.

만약 백신 개발업체에서 대응 백신을 개발한다면 공격자들은 초기 b.js 안에 실행되거나 다운로드 되는 악성코드를 변경 한다.

새로운 취약성이 있다면 즉시 활용을 하게 된다. 평균 신규 취약성이 나온 이후 며칠이 걸리던 것에서 이젠 12시간 이내에 새로운 악성코드로 전환 되는 것을 확인 할 수 있다. 개인 사용자가 사용하는 백신이 업데이트 된다 하여도 웹 서비스에 들어 있는 악성코드 링크가 사라지지 않는다면 최소 12시간 이내에 또 다른 공격을 맞이 하게 된다는 이야기 이다.

싸움은 더 이상 신사의 싸움이 아니며 공개적인 영역까지 침범을 당하고 대응하기 어려운 상태에 빠져 있다. 공격은 광범위하고 폭넓게 퍼져 있다. 현재는 asp, aspx + Ms sql 에 대한 대규모 공격도구가 활성화된 상태이지만 다른 개발언어와 데이터베이스를 향한 도구도 이미 일반적이다. 대규모로 확산 되는 것은 시간 문제일 따름이다.

현실은 앞에서 언급 했듯이 엄중한 현실이나 대책은 현실적으로 역부족일 수 밖에 없다. 공격을 당하지 않기 위해 웹 서비스 단위에서 진행 되거나 할 수 있는 대책은 크게 4가지 정도로 볼 수 있다.

웹 방화벽과 소스코드 검사, 모의해킹, 웹 스캐너 도입을 통한 문제점 해결 과 같은 유형이며 개인 사용자를 위한 대책은 오로지 바이러스 백신 외에는 없는 현실이다. 각 대책 별 문제와 이슈는 간략하게 다음과 같다.

각 대책 별 문제
 
전제: 웹 서비스는 잦은 사이트 개편과 갱신이 수시로 발생된다 이 모든 과정에서 보안적인 위험을 걸러낼 수 있어야 하나 현재 보안전문인력을 운영하고 상시적인 검사 프로세스를 갖춘 곳은 국내의 1% 미만의 업체만이 가능한 상태이다. 그 업체의 경우에도 전체 사이트 문제를 수시로 체크 할 수는 없는 상태이며 6개월 혹은 1년 단위로 전체 서비스를 검사하는 정기검진의 형태로만 진행 한다. 웹서비스의 잦은 개편과 갱신을 절대로 따라 갈 수 없는 상태가 된다.

1. 웹 방화벽: 우회 공격에 취약하며 근본 문제 해결이 아님. 비용 및 관리의 문제 발생

2. 소스코드 검사: 시일이 오래 걸리며 전문적인 인력이나 전문업체의 도움을 받아야 됨. 비용과 시간의 문제가 발생됨.

3. 모의해킹: 모의해킹을 통해서는 모든 문제가 발견 되는 것이 아니라 해당 사이트의 권한 획득만을 한 이후 종료 되는 과정이 대부분임. 이후 수정에 대한 피드백 제공 불확실. 비용의 문제 존재

4. 웹스캐너 도입: 상대적으로 고가의 솔루션이며 전문적인 결과가 도출 됨으로 인해 스캐너 결과를 이해 할 수 있는 인력의 도입이 필요하며 스캐너 비용 자체도 외산과 국산 모두 고가의 가격으로 도입에는 부담이 있음. 더불어 즉시적인 검사가 어려움 (개발속도 보다 진단 속도가 늦는 경우가 다수 발생)

이제 대책은 전 세계의 웹 서비스 개발 프로그래머를 일정 수준 이상으로 끌어 올리고 상시적인 점검이 가능한 체계를 어디에서 먼저 구축하느냐에 따라 달려 있다. 상당히 먼 길이 될 것이다.

앞으로의 현실은 오래 전 예상 했던 대로 상상 그 이상의 현실을 보게 될 것이다. -바다란
Posted by 바다란

 * 2010년 4월중에 이전 블로그의 글을 완전이전 하면서 링크 부분들을 손 본 내용입니다. 지금의 현실도 여전히 계속 됩니다. 해결 되지 않은 문제들입니다만 이전의 링크와 게시된 시간을 알고 싶으신 분은 blog.naver.com/p4ssion 으로 방문 하시면 됩니다. 앞으로의 모든 갱신은 본 사이트에서만 이루어 집니다. 감사합니다.
아래의 글에서 2007년 이후 부터 현재까지의 내용은 지금 이 시간에도 동일하게 적용 됩니다. 범위만 국내뿐 아닌 전 세계적으로 확장 되었을 뿐입니다. 이 점을 참고 하시면 될 것 같습니다.

2008.11.7  p4ssion.

 

 

한국은 바로미터다.

중국발 해킹의 전초 단계로서 향후의 전 세계로 확대되는 공격 양상을 짚어 볼 수 있는 중요한 척도점이 되어 있다. 그 시작은 2002년 부터라 할 수 있다.

필자가 처음 중국발 해킹에 대해 분석을 한 것이 ( http://p4ssion.com/208 ) 2002년 8월 문서이니 그 이후로 여러 단계의 변천사를 볼 수 있다.

 

주관적인 경험하에 중국발 해킹을 분석해 보면 다음과 같은 단계로 요약이 가능하다.

 

1기: 2002~2005년초

 

특징: System에 대한 직접 공격 , 일부 운영체제에 대한 취약성 공격 및 주변 네트워크 공격을 위한 대량의 패키지를 동반하는 유형으로 진행 , 대부분 시스템의 권한 획득을 목적으로 이루어 짐 . 일부 DB의 정보를 빼내어 가기 위한 시도가 존재 하였음.  따라서 한국내의 정보유출 및 위기의 시작은 이 시기 부터라고 보는 것이 합당함.  

 

 

2기: 2005년 4월 ~ 2007년 중반

 

특징: SQL Injection 자동화 툴의 출현 시기와 동일하며 국내의 대부분의 웹사이트 (추정키로는 전체의 60% 이상)가 공격대상에 포함 되었음. 이 부분은 보안산업에서 조차도 예상치 못하여 대응에 시일이 다소 소요된 부분임. URL의 취약한 인자를 공격함으로써 DB의 권한을 획득하고 정보를 빼내어 가는 것이 일반화 된 공격으로 이루어 지며 지역적 혹은 소규모로 발생하던 해킹이 대규모로 변질 되는 기회가 되었음.

[참고  풀어쓴 Sql injection 공격  http://p4ssion.com/171 ,

                                                 http://p4ssion.com/209

          Threat of china v2  . http://p4ssion.com/210 - 첨부파일 참고 ]

 

대량의 개인정보 유출 시기로 확정하며 이 시기에 유출된 개인정보 범위는 상상을 초월할 정도로 예상됨. 

또한 웹을 통한 악성코드 유포의 시발점으로 볼 수 있으며 바이러스와 웜을 통한 악성코드 전파를 벗어나 웹을 통한 악성코드의 전파라는 새로운 공격 전략이 탄생된 시점으로 불 수 있음.

서비스에 대한 보호의 관점에서 일반 사용자를 위한 보호관점으로 포커싱을 급격하게 이동해야 하는 시점이나 일부 국내기업들을 제외하고는 변화에 대한 대응이 늦었으며 공격자들은 유유히 유린을 한 상태로 판단이 됨.

 

이후 웹보안 관련 장비들과 진단 스캐너들의 출현으로 문제는 표면적으로 드러나지는 않으나 우회적인 통로를 통한 SQL 공격으로 여전히 중요정보에 대한 유출 및 악성코드의 웹을 통한 유포는 계속 되었슴.

통계치로 잡기가 어려울 정도로 피해가 많았던 시기라고 볼 수 있음.  이 시기에 유출된 개인정보들로 인해 사회적인 혼란상은 현재에도 지속되고 있음. Voice Phishing의 정확도가 높아져서 피해도가 높아진 이유도 이 시기에 유출된 상세한 개인정보로 인한 것으로 예상.

 

 

3기 2007년 말 ~ 현재 (세부기법으로 별도 분류)

    

2007년말 ~ 2008년 8월

 

 Massl SQL Injection의 본격화 및 웹 보안장비의 본격적인 대응 시기. Get, Post 와 같은 HTTP Action에서 사용되는 특정 인자에 위험요소를 차단하는 방식으로 일차적인 대응들이 진행됨. 웹 보안장비의 대중적인 도입이 이루어짐. 그러나 기본적인 한계로 인해 문제가 발생됨은 이후에도 여러 차례 지적이 됨. 패턴매칭의 한계 및 모든 웹 프로그래밍이 획일화 될 수는 없으므로 각 사이트마다 커스터마이징 이슈가 대두됨. 즉 수익성이 그리 높지 않았을 것으로 예상이 됨. 이후 공격 패턴의 변화에 따라 상당히 많은 노력이 지속적으로 필요한 상황이라 할 수 있음.

 

국내의 상당수의 사이트에서 악성코드들은 지속적으로 유포되고 국내의 인터넷 환경은 오염도가 높아졌을 것으로 예상되나 신뢰도 있는 통계 추출의 도구가 존재하지 않음으로 인해 통계 작성이 불가능함. 평균적으로 일일 4~5만여개의 웹서비스에서 악성 코드가 유포되고 있는 것으로 추정이 됨. 근거는 Mass sql injection 분석 시에 작성한 자료를 참고 하며 5만에서 6만여대의 웹서비스에서 수시 악성코드 유포 되는 것을 확인 함.

 

이 시기에 다수의 주요 IT 서비스 기업들에서는 웹 보안 장비 및 문제점을 제거 할 수 있는 프로세스 (보안성 검수)를 도입 함으로써 피해의 최소화 및 방어가 가능한 상태로 돌입한 것으로 관측됨.

 

     2008년 8월~ 현재 

 

우회 패턴의 등장으로 위험요소가 증폭됨 Get / Post외에도 Cookie에 URL 인자를 넣어서 공격하는 우회 패턴 등장으로 일대 혼란 발생. 이 혼란은 웹보안장비에만 의존하여 근본적인 소스코드의 수정에는 등안시한 결과로서 문제는 계속 될 것임. 더불어 URL 인자에 다양한 우회패턴 (% 인자와 같은 )를 입력하여 패턴매칭에 의한 차단이라는 웹보안장비의 기본 룰을 가볍게 우회함으로써 혼란은 계속 되고 있음. 이 상황은 예견된 바 있음.

11.5일에 제보를 받은 SQL Injection 공격도구의 판매를 위한 자료화면에도 다양한 DB ( Mssql , mysql , access , oracle )와 공격기법이 명기되어 상용으로 판매가 되고 있는 상황임.

 

 < Mass sql injection attack tool - 다양한 DB 및 Cookie 및 Head verb에 대한 공격 기법이 별개로 존재하고 있다. >

 

각 시기별로 한국에 집중된 공격에 대해서는 위와 같이 정리가 가능하며 세계적인 확산의 시기는 시기적으로 늦게 나타나고 있다. 국내를 벗어나 이제 IT로 연결된 세계적인 관점에서의 공격동향은 다음과 같다.

 

세계적으로 SQL injection Attack의 최초 인지는 2008년 초쯤으로 예상되며 대규모로 인지가 된 시기는 2008년 4월의 Mass sql injection 관련 이슈이다. 

[ 상상하기 어려운 위협.       http://p4ssion.com/110 ,

                                          http://p4ssion.com/112    

  Mass sql injection에 대한 분석 참고  http://p4ssion.com/200 ]

 

 

이후에는 4월 이후에 발견된 Mass sql injection issue가  세계적으로  지속되고 있는 상황이라 할 수 있다. 전 세계 인터넷 환경의 오염도는 따로 측정하기는 어렵지만 Google에서 협조를 하고 있는 사이트 (http://www.stopbadware.org/ 11.7일 현재)에 따르면 악성코드를 유포하고 있는 사이트는 현재 166000 여개 가량의 사이트에서 악성코드가 유포 되고 있는 것으로 나와 있다.  물론 실제는 이것보다 더욱 많다. 통계치로 잡히는 것은 백신이나 AV 사이트의 협조아래 탐지 되는 유형에 대한 것들만 나열 된 것으로서 실제로는 변형과 탐지가 안되는 항목이 더 많다고 보았을때 얼마나 많은 비율이 존재 할지는 상상하기 어렵다.

 

인터넷은 오염되어가고 있다. 금전거래와 일상생활 영위의 도구로서 사용이 되고 있는 현재의 인터넷은 사용자들에게 심각한 위협을 동시에 안겨주는 생활로 다가오는 실정이다.

 

대부분의 악성코드 유포 환경들이 SQL Injection에 의한 웹사이트 변조 (악성코드를 유포하는 코드 추가 형태) 그리고 게시물 등에 XSS 취약성을 이용해 악성코드 유포 사이트로 Redirection이 가능한 문제들이 다수라고 할 수 있다. 실제 전체의 90% 이상이 이 경우에 해당 될 것으로 예상된다.

 

 

 

결론

 

이상과 같이 간략하게 2002년 부터 시작된 중국으로 부터의 공격 동향에 대해서 살펴 보았다. 문제의 근본은 현재 Web application의 취약한 인자에 대한 필터링으로 귀결이 된다. 이 문제를 해결하지 않는 이상 모든 대책은 사후약방문이다. 이 문제만 완전하게 처리 된다 하여도 현재와 같은 혼란상은 발생 하지 않을 것이며 피해는 상당히 제한적일 것이다. 기업내의 정보유출뿐 아니라 개인 사용자에게도 심각한 피해를 입히는 현재의 공격유형을 그대로 둘 경우 인터넷 환경의 위험도는 심각한 양상을 넘어 서게 될 것이다.

 

악성코드를 유포하는 사이트를 찾아내는 것도 현재의 상황을 타개 하는 임시방편이며 악성코드를 탐지하여 제거하는 AV도 근원적인 해결책이 되지 못한다. 최근에 발견된 MS08-067과 같은 Zeroday exploit의 경우를 보더라도 손쉽게 인지를 할 수 있다.

 

중국발 해킹은 전 세계적인 불황시기에 더욱 확산이 될 것이고 중국내의 Black Market은 중국의 불황을 틈타 급격하게 확산되어 전 세계를 위협하게 될 것이다. ( 6년전에 한 예측이 이렇게 빨리 현실화 될 것이라고는 필자도 생각지 못한 부분이긴 하다. 그 만큼 공격 기술의 발전과 웹서비스의 세계화가 빠르게 진행 된 탓이라 할 수 있다. )

 

문제의 해결책은 이미 본 블로그의 여러 Article에서 제안한 바 있다. 개별 사이트에 대한 대응책들은 안전한 웹 코딩 가이드(KISA)를 이용하여 소스코드를 변경 하거나 웹보안장비를 도입하였다면 해당 장비의 상태를 최신 수준으로 상시 유지하는 것, 웹 취약성 진단 스캐너 ( Sourceforge.net 에서 검색 하여도 다양한 sql injection 진단 도구들이 존재한다.)를 활용하여 문제를 수시로 찾고 제거 하는 것이 최선의 대응이라 할 수 있다.

[ http://www.krcert.or.kr/secureNoticeView.do?num=287&seq=-1  이곳의 대응책을 참고.]

 

전 세계적인 움직임 혹은 범세계적인 서비스를 통해 웹 서비스의 코딩 수준을 높이지 않는 이상 현재의 중국발 해킹은 점점 더 심각한 양상으로 발전 할 것이다.

 

보안장비의 도입도 취약성 스캐너의 도입과 점검도 다 중요하다 그러나 가장 중요한 것은 웹개발자의 개발 코드가 안전한지 확인이 가능한 요소가 가장 중요하다 할 수 있다. Secure coding은 SDLC 방법론으로 따지자면 웹개발에는 맞지 않다. 개발의 속도가 너무 빠르기 때문이다. 개발 시기 보다 더 많은 시간이 투자 된다는 점에 있어서 방법론과 적용 기술의 변화가 필요하다. 

 

개발자가 매번 코딩 시에 반복된 오류를 하지 않도록 확인하고 문제를 제거하여 궁극적으로는 전 세계 웹 개발자들이 Secure coding이 생활화 될때 이 문제는 해결이 된다. 그러자면 개발자들의 접근이 용이하고 비용이 저렴하며 정확도를 확보한 url 인자 값의 유효성을 체크하는 도구의 개발과 서비스의 확산이 문제 해결의 첫 걸음이 될 것이다.

 

아직 갈 길은 멀었고 피해는 점차 심각한 양상으로 변질 될 것이다.

 

아무도 이야기 하지 않는 예상과 예측. p4ssionable security explorer . 바다란. 

 

Posted by 바다란

. p4ssion입니다.


지난 글에서 ( 한참 됐습니다. ^^) Mass sql injection 관련된 내용에 대해서 언급을 드린 적이 있습니다.

그 이후 업데이트를 할려고 생각 하다가 개인적인 사정으로 작성하지 못했습니다.

오늘 생각나서 잠시 써봅니다.


http://www.itjungle.com/two/two082708-story05.html 

http://www.technewsworld.com/story/Mass-SQL-Attack-a-Wake-Up-Call-for-Developers-62783.html?welcome=1209498513&welcome=1210717878 

http://www.theregister.co.uk/2008/05/21/china_sql_injection_attack/ 

http://blogs.zdnet.com/security/?p=1150

http://searchsecurity.techtarget.com/news/article/0,289142,sid14_gci1314697,00.html 

http://ddanchev.blogspot.com/2008/05/malware-attack-exploiting-flash-zero.html 

http://searchsecurity.techtarget.com/tip/0,289483,sid14_gci1317069,00.html


Mass sql injection에 관련된 기사들을 이 블로그에 글을 쓰지 않은 이후로 모아 봤습니다.


2005년 부터 활발하게 이루어진 SQL Injection 공격에 대해 이제서야 세계적으로 인지를 하고 부분 대응이 진행 되고 있습니다. 공격의 현황은 어떤 식으로 이루어 지고 있으며 또한 대응은 어떤 방식으로 이루어 지고 있는지 주마간산 식으로 살펴 보겠습니다.


* 이전에 알려진 SQL Injection 공격과는 조금 다른 범주라고 봐야죠. Login 창에 손으로 입력하여 인증을 우회하는 방식은 오래전에 알려졌으며 또 이후의 각 URL 인자마다 문제가 발생하는 부분에 대해서도 알려져 왔습니다. 현재의 SQL Injection이 다른 관점은 Automated SQL Injection 이라는 것입니다.


손으로 직접 수십~수백개의 조합을 통해 DB의 정보를 빼내가는 것이 아니라 특정 DB에 맞추어서 특정 쿼리들을 미리 준비해 놓은 이후 클릭 한번으로 진행을 합니다. 현재의 Mass sql은 여기에서 한 걸음 더 나아가 단일 사이트에 대해 이루어 지는 것이 아니라 수십개 이상의 사이트에 대해 일시적으로 발생 할 수 있도록 범위가 확산된 것입니다.


입력창에 대한 SQL Injection ( ' Or 1=1-- )  ->

수동에 의한 URL 인자의 SQL Injection (시간 오래 소요) ->

자동화된 툴의 쿼리에 의한 정보 유출 및 페이지 변조 (악성코드 유포 목적) ->

대규모 스캔 및 공격이 가능한 Automated Mass attack 기법 및 도구의 출현 ( 이것도 현재는 ASP+MSSQL만 공격 하지만 향후 타 언어 및 다른 종류의 DB로 확대 예상)


위와 같이 순서의 정리가 가능합니다.

대상규모가 한정적일 경우에는 장비의 도입 및 소스코드에 대한 컨설팅으로 문제의 해결이 가능하였으나 이제는 그 범주를 벗어나 악성코드가 범람하는 세상에 살게 될 수 밖에 없는 상황입니다. ( 전 세계의 웹 서비스의 문제를 한번에 없앨 수는 없으므로 )


악성코드에 대한 감염은 브라우저 ( 구글의 크롬, FireFox , IE ..)에 구애받지 않습니다.  악성코드가 사용자 PC에 특정 프로그램을 설치하기 위해 필요한 공격 코드들은 매우 다양하며 운영체제의 한계를 벗어나 여러 Application에 대한 권한 획득 코드들을 이용하는 것이 일반적입니다.  즉 브라우저와는 관계 없이 이 문제는 계속 되며 전 세계의 일반 PC 및 웹서비스가 영향권 내에 들어와 있다고 보는 것이 정답입니다.


< 어쩌면 지금의 상황은 Matrix 구조 같은 거대한 위협속에 놓은 것과 같지 않나 생각 됩니다.>

 

묻습니다.


1. 사용자 PC에 설치된 모든 Application의 취약성을 수시로 확인하고 문제가 있는지 여부를 확인 하는 것이 가능합니까?

2. 수시로 업데이트되고 갱신되는 ( 악성코드의 유형은 대부분 다운로드 형태를 지니고 있습니다. 즉 한 사이트나 몇 개의 악성코드 다운로드 사이트의 샘플만 변경해 주면 새로이 다운로드가 되는 클라이언트는 신종 악성코드에 감염이 됩니다. )  유형의 악성코드에 대한 대응이 가능합니까?

3. 방문하는 사이트가 안전한 웹사이트임을 확인 할 수 있습니까?



간단하게 위의 세 가지 질문입니다.

위의 답변은 1번은 불가능 , 2번도 수동적인 대응외에는 불가능 , 3번도 직관적인 신뢰가 없다가 정답이 아닐까 생각됩니다.


1번의 경우 운영체제를 벗어나 사용자가 사용하는 모든 Application 문제가 없다는 것은 보증하기가 매우 어렵습니다. 사실 불가능한 이야기 이구요. 이 문제는 웹 서비스를 통해 유포되는 악성코드의 전염을 막을 방도가 매우 부족함을 의미합니다.


2번의 경우에는 전 세계의 많은 AV 벤더들에서 대응을 하고 있지만 사실상 공격자의 행동에 대해 대응력은 부족하며 산발적인 대응만을 하고 있어서 노력대비 효과는 미미한 수준이라 할 수 있습니다. 발견을 못한 AV 벤더는 업데이트가 없이 그냥 가죠. 그리고 발견하여 대응을 한다고 하여도 이미 공격자는 또 다른 내용으로 손쉽게 변경하는 것이 가능합니다. 전 세계에 널리 자사의 AV 제품이 사용되고 있다면 최소 시차를 고려 하여도 1일 이상의 시간이 소요 되는 것이 현실 적입니다.

그러나 공격자는 단 몇 분이면 새로운 악성코드의 유포가 가능하며 사용자에게 전파가 가능한 유형이 됩니다. 따라서 뚜렷한 대응방안이라고 보기가 곤란한 상태라 할 수 있습니다.


3번은 더 말씀 드리지 않겠습니다.


이미 대책 부분과 필요한 부분에 대해서는 이전의 몇몇 Article에서 충분히 언급한 상황입니다.

[ 상상하기 어려운 위협 - http://p4ssion.com/112 , http://p4ssion.com/152   ]

[ IT 서비스의 현재 위험과 대응 종합 , 첨부파일 참고 - http://p4ssion.com/199 ]


전 세계적인 대응 현황을 간략하게 살펴 본 주관적인 의지로 정의하면 빈익빈 부익부, 근본에 도달하지 못한 미봉책..

이 정도로 정의를 할 수 있습니다.


며칠전 MS에서는 웹 서비스에 대한 SQL Injection을 막기 위해 IIS의 Plugin 형식인 URLscan Filter 3.0를 배포 하고 있습니다.

[ http://www.microsoft.com/downloads/details.aspx?FamilyID=ee41818f-3363-4e24-9940-321603531989&displaylang=en ]

현재 타켓화 되고 있는 ASP+MSSQL+IIS 조합에 활용이 가능한 유형입니다.


물론 실제 적용 시에는 개발된 서비스의 소스에 따라 설정의 변경등이 필요한 상황이 되겠습니다.


또한 HP의 WebInspect and QAInspect라는 제품과 IBM의 Appscan , WVS의 Acunetix 라는 웹 취약성 스캐너들이 현재  전세계 시장의 다수를 차지하고 있습니다. 이 제품들의 특징은 스캔 할 수 있는 도메인이 한정 되어 있다는 점, 과도한 취약성 점검을 위해 컨텐츠를 다운로드 (?) 받아서 재현을 하다보니 대용량 사이트에 대해서는 진단의 한계를 보이는 점들이 있습니다.

가장 중요한 점은 가격이 후덜덜입니다.


왠만한 IT기업에서 제품군을 도입하려면 많은 전문인력 및 도구 구입에 상당한 비용을 들여야 할 것으로 보입니다.


자 위의 두 가지와 같은 대응 흐름이 있습니다. 솔루션을 이용한 근본 취약 부분을 찾아서 소스코드의 문제를 수정하는 방향과 현재 발생되는 공격이 유효하지 않도록 무력화 시키는 Filter 부분이 있는데 두 가지 모두 한계를 지니고 있습니다. Filter의 경우에는 우회가 가능한 패턴 유형이 발견 될 수 있다는 점과 기존의 정상 서비스 트래픽에 대한 제한을 지닐 수 있다는 점입니다.


또한 솔루션을 이용한 취약 부분 진단에 대해서는 고비용, 대형 사이트 진단 불가 , 도메인 스캔의 제한 , 속도의 문제로 인해 사용이 어려운 측면이 발생 합니다.


( Web Firewall 등에 대해서는 별도 언급 하지 않겠습니다. 도입시 마다 설정 변경이나 Customizing 없이 사용 가능한 제품이 없지 않나요? 어쩌면 소스코드 수정이 휠씬 빠를 수도 있는 Customizing이며 공격 패턴이 변경 되면 처음 부터 다시 설정 해야만 합니다. - 근본 문제 제거와는 관련 없는 부분이며 임시방책일 뿐이라 논의 하는 것은 부적절하다는 개인 판단입니다. )



빈익빈 부익부.


가난한 기업들과 여력이 없는 기업들을 위한 해결 방안은 어디에도 없습니다. 그나마 전문성을 지닌 인력이라도 있다면 이런 문제를 해결해 보겠으나 인력도 없으니 설상가상인 상태가 되겠죠. 앞으로도 오랜 기간 동안 대상이 될 것으로 예상 됩니다.


개인적인 예상으로는 향후 2~3년간은 이러한 대규모 악성코드의 유포에 의해 매우 시끄러울 것이고 특별한 해결책도 찾기 어려운 상황이 계속 될 것입니다. 그 이후에는 또 다른 부분으로 전이가 되겠지만...


부유한 기업들은 많은 비용을 투입하여 장비를 도입하고 소스코드에 대한 진단과 컨설팅등을 받습니다. 그러나 빈자들의 서비스를 통해 유포되는 악성코드들은 주로 부유한 서비스 기업을 노리고 있습니다. 이 점에 대해서는 간과를 하는 면이 많은 편입니다.


문제의 해결을 하기 위해서는 세계의 인터넷 환경을 일시에 ( 상당히 빠른 시간) 클린한 상태로 올려 줄 수 있는 부분이 필요하며 자신만의 서비스를 벗어나 전체적인 시각을 가지고 움직일때 자신의 서비스에게로 오는 위험을 줄 일 수 있습니다.


말그대로 네트웍 환경은 위협도 연결이 되어 있기 때문이죠.


빈자들을 위한 보안도구들은 언제쯤 출현 할까요? 상용도구의 정확성 만큼을 보유한 저렴하고 접근성이 뛰어난 도구의 출현이 현재의 상황을 좀 더 빠른 시기에 진화 할 수 있을 유일한 방안이라 생각 합니다.


전술과 전략이 있습니다. 개개의 싸움을 하는 전략은 현재대로 진행 하고 상호협력을 강화할 방안을 찾아야 하며 ( AV의 대응 , Scanner , Web Firewall, Vendor의 대응) 더불어 가장 중요한 전술적인 차원의 큰 방향성이 필요 합니다.


큰 방향성 차원에서 공격의 범주를 최대 확산이 불 가능 하도록 일정 수준 이하로 묶음으로써 피해의 광역화를 막는 것이 가장 큰 이슈가 될 것이고 가장 필요한 관점이 아닐까 생각 합니다. 전술적으로 확산 범주를 좁히기 위해서는 가장 필요한 것이 문제점을 찾을 수 있는 접근성 뛰어난 저렴한 비용의 도구의 확산이나 서비스화가 우선 되어야 할 것이구요.


전술과 전략은 구분되어야 하며 현재의 전략도 부족한 면들이 있으며 커버 가능한 범위를 더욱 넓힐 수 있는 도구와 서비스의 출현들이 심각하게 필요하며 전술적인 관점에서는 거대한 악성코드 유포 네트웍을 소규모 단위로 분산 시킬 수 있는 정책적인 방향성이 필요합니다. 수많은 이해가 상충되는 야생의 시대에 이런 협력이 필요한 전술과 전략은 구사되기 어려운 점들이 많을 것입니다.


따라서 앞으로도 위기는 계속 지속 될 것입니다. 모든 프로그래머가 Secure한 코딩이 일상화 되기 전까지는 상당히 오랜 시간 위기는 지속 될 것이고 이제 세계적인 시작은 큰 흐름이 벌써 시작된 상황이라 예측 됩니다.


- p4ssion. 2008.9




Posted by 바다란

 

2008.11.7  p4ssion.

 

 

한국은 바로미터다.

중국발 해킹의 전초 단계로서 향후의 전 세계로 확대되는 공격 양상을 짚어 볼 수 있는 중요한 척도점이 되어 있다. 그 시작은 2002년 부터라 할 수 있다.

필자가 처음 중국발 해킹에 대해 분석을 한 것이 ( http://blog.naver.com/p4ssion/50001879160 ) 2002년 8월 문서이니 그 이후로 여러 단계의 변천사를 볼 수 있다.

 

주관적인 경험하에 중국발 해킹을 분석해 보면 다음과 같은 단계로 요약이 가능하다.

 

1기: 2002~2005년초

 

특징: System에 대한 직접 공격 , 일부 운영체제에 대한 취약성 공격 및 주변 네트워크 공격을 위한 대량의 패키지를 동반하는 유형으로 진행 , 대부분 시스템의 권한 획득을 목적으로 이루어 짐 . 일부 DB의 정보를 빼내어 가기 위한 시도가 존재 하였음.  따라서 한국내의 정보유출 및 위기의 시작은 이 시기 부터라고 보는 것이 합당함.  

 

 

2기: 2005년 4월 ~ 2007년 중반

 

특징: SQL Injection 자동화 툴의 출현 시기와 동일하며 국내의 대부분의 웹사이트 (추정키로는 전체의 60% 이상)가 공격대상에 포함 되었음. 이 부분은 보안산업에서 조차도 예상치 못하여 대응에 시일이 다소 소요된 부분임. URL의 취약한 인자를 공격함으로써 DB의 권한을 획득하고 정보를 빼내어 가는 것이 일반화 된 공격으로 이루어 지며 지역적 혹은 소규모로 발생하던 해킹이 대규모로 변질 되는 기회가 되었음.

[참고  풀어쓴 Sql injection 공격  http://blog.naver.com/p4ssion/40017941957 ,

                                                 http://blog.naver.com/p4ssion/40018174273 

          Threat of china v2  . http://blog.naver.com/p4ssion/50009117423  - 첨부파일 참고 ]

 

대량의 개인정보 유출 시기로 확정하며 이 시기에 유출된 개인정보 범위는 상상을 초월할 정도로 예상됨. 

또한 웹을 통한 악성코드 유포의 시발점으로 볼 수 있으며 바이러스와 웜을 통한 악성코드 전파를 벗어나 웹을 통한 악성코드의 전파라는 새로운 공격 전략이 탄생된 시점으로 불 수 있음.

서비스에 대한 보호의 관점에서 일반 사용자를 위한 보호관점으로 포커싱을 급격하게 이동해야 하는 시점이나 일부 국내기업들을 제외하고는 변화에 대한 대응이 늦었으며 공격자들은 유유히 유린을 한 상태로 판단이 됨.

 

이후 웹보안 관련 장비들과 진단 스캐너들의 출현으로 문제는 표면적으로 드러나지는 않으나 우회적인 통로를 통한 SQL 공격으로 여전히 중요정보에 대한 유출 및 악성코드의 웹을 통한 유포는 계속 되었슴.

통계치로 잡기가 어려울 정도로 피해가 많았던 시기라고 볼 수 있음.  이 시기에 유출된 개인정보들로 인해 사회적인 혼란상은 현재에도 지속되고 있음. Voice Phishing의 정확도가 높아져서 피해도가 높아진 이유도 이 시기에 유출된 상세한 개인정보로 인한 것으로 예상.

 

 

3기 2007년 말 ~ 현재 (세부기법으로 별도 분류)

    

2007년말 ~ 2008년 8월

 

 Massl SQL Injection의 본격화 및 웹 보안장비의 본격적인 대응 시기. Get, Post 와 같은 HTTP Action에서 사용되는 특정 인자에 위험요소를 차단하는 방식으로 일차적인 대응들이 진행됨. 웹 보안장비의 대중적인 도입이 이루어짐. 그러나 기본적인 한계로 인해 문제가 발생됨은 이후에도 여러 차례 지적이 됨. 패턴매칭의 한계 및 모든 웹 프로그래밍이 획일화 될 수는 없으므로 각 사이트마다 커스터마이징 이슈가 대두됨. 즉 수익성이 그리 높지 않았을 것으로 예상이 됨. 이후 공격 패턴의 변화에 따라 상당히 많은 노력이 지속적으로 필요한 상황이라 할 수 있음.

 

국내의 상당수의 사이트에서 악성코드들은 지속적으로 유포되고 국내의 인터넷 환경은 오염도가 높아졌을 것으로 예상되나 신뢰도 있는 통계 추출의 도구가 존재하지 않음으로 인해 통계 작성이 불가능함. 평균적으로 일일 4~5만여개의 웹서비스에서 악성 코드가 유포되고 있는 것으로 추정이 됨. 근거는 Mass sql injection 분석 시에 작성한 자료를 참고 하며 5만에서 6만여대의 웹서비스에서 수시 악성코드 유포 되는 것을 확인 함.

 

이 시기에 다수의 주요 IT 서비스 기업들에서는 웹 보안 장비 및 문제점을 제거 할 수 있는 프로세스 (보안성 검수)를 도입 함으로써 피해의 최소화 및 방어가 가능한 상태로 돌입한 것으로 관측됨.

 

     2008년 8월~ 현재 

 

우회 패턴의 등장으로 위험요소가 증폭됨 Get / Post외에도 Cookie에 URL 인자를 넣어서 공격하는 우회 패턴 등장으로 일대 혼란 발생. 이 혼란은 웹보안장비에만 의존하여 근본적인 소스코드의 수정에는 등안시한 결과로서 문제는 계속 될 것임. 더불어 URL 인자에 다양한 우회패턴 (% 인자와 같은 )를 입력하여 패턴매칭에 의한 차단이라는 웹보안장비의 기본 룰을 가볍게 우회함으로써 혼란은 계속 되고 있음. 이 상황은 예견된 바 있음.

11.5일에 제보를 받은 SQL Injection 공격도구의 판매를 위한 자료화면에도 다양한 DB ( Mssql , mysql , access , oracle )와 공격기법이 명기되어 상용으로 판매가 되고 있는 상황임.

 

 < Mass sql injection attack tool - 다양한 DB 및 Cookie 및 Head verb에 대한 공격 기법이 별개로 존재하고 있다. >

 

각 시기별로 한국에 집중된 공격에 대해서는 위와 같이 정리가 가능하며 세계적인 확산의 시기는 시기적으로 늦게 나타나고 있다. 국내를 벗어나 이제 IT로 연결된 세계적인 관점에서의 공격동향은 다음과 같다.

 

세계적으로 SQL injection Attack의 최초 인지는 2008년 초쯤으로 예상되며 대규모로 인지가 된 시기는 2008년 4월의 Mass sql injection 관련 이슈이다. 

[ 상상하기 어려운 위협.       http://blog.naver.com/p4ssion/50031034464 ,

                                          http://blog.naver.com/p4ssion/50031227899    

  Mass sql injection에 대한 분석 참고  http://blog.naver.com/p4ssion/50035056195 ]

 

 

이후에는 4월 이후에 발견된 Mass sql injection issue가  세계적으로  지속되고 있는 상황이라 할 수 있다. 전 세계 인터넷 환경의 오염도는 따로 측정하기는 어렵지만 Google에서 협조를 하고 있는 사이트 (http://www.stopbadware.org/ 11.7일 현재)에 따르면 악성코드를 유포하고 있는 사이트는 현재 166000 여개 가량의 사이트에서 악성코드가 유포 되고 있는 것으로 나와 있다.  물론 실제는 이것보다 더욱 많다. 통계치로 잡히는 것은 백신이나 AV 사이트의 협조아래 탐지 되는 유형에 대한 것들만 나열 된 것으로서 실제로는 변형과 탐지가 안되는 항목이 더 많다고 보았을때 얼마나 많은 비율이 존재 할지는 상상하기 어렵다.

 

인터넷은 오염되어가고 있다. 금전거래와 일상생활 영위의 도구로서 사용이 되고 있는 현재의 인터넷은 사용자들에게 심각한 위협을 동시에 안겨주는 생활로 다가오는 실정이다.

 

대부분의 악성코드 유포 환경들이 SQL Injection에 의한 웹사이트 변조 (악성코드를 유포하는 코드 추가 형태) 그리고 게시물 등에 XSS 취약성을 이용해 악성코드 유포 사이트로 Redirection이 가능한 문제들이 다수라고 할 수 있다. 실제 전체의 90% 이상이 이 경우에 해당 될 것으로 예상된다.

 

 

 

결론

 

이상과 같이 간략하게 2002년 부터 시작된 중국으로 부터의 공격 동향에 대해서 살펴 보았다. 문제의 근본은 현재 Web application의 취약한 인자에 대한 필터링으로 귀결이 된다. 이 문제를 해결하지 않는 이상 모든 대책은 사후약방문이다. 이 문제만 완전하게 처리 된다 하여도 현재와 같은 혼란상은 발생 하지 않을 것이며 피해는 상당히 제한적일 것이다. 기업내의 정보유출뿐 아니라 개인 사용자에게도 심각한 피해를 입히는 현재의 공격유형을 그대로 둘 경우 인터넷 환경의 위험도는 심각한 양상을 넘어 서게 될 것이다.

 

악성코드를 유포하는 사이트를 찾아내는 것도 현재의 상황을 타개 하는 임시방편이며 악성코드를 탐지하여 제거하는 AV도 근원적인 해결책이 되지 못한다. 최근에 발견된 MS08-067과 같은 Zeroday exploit의 경우를 보더라도 손쉽게 인지를 할 수 있다.

 

중국발 해킹은 전 세계적인 불황시기에 더욱 확산이 될 것이고 중국내의 Black Market은 중국의 불황을 틈타 급격하게 확산되어 전 세계를 위협하게 될 것이다. ( 6년전에 한 예측이 이렇게 빨리 현실화 될 것이라고는 필자도 생각지 못한 부분이긴 하다. 그 만큼 공격 기술의 발전과 웹서비스의 세계화가 빠르게 진행 된 탓이라 할 수 있다. )

 

문제의 해결책은 이미 본 블로그의 여러 Article에서 제안한 바 있다. 개별 사이트에 대한 대응책들은 안전한 웹 코딩 가이드(KISA)를 이용하여 소스코드를 변경 하거나 웹보안장비를 도입하였다면 해당 장비의 상태를 최신 수준으로 상시 유지하는 것, 웹 취약성 진단 스캐너 ( Sourceforge.net 에서 검색 하여도 다양한 sql injection 진단 도구들이 존재한다.)를 활용하여 문제를 수시로 찾고 제거 하는 것이 최선의 대응이라 할 수 있다.

[ http://www.krcert.or.kr/secureNoticeView.do?num=287&seq=-1  이곳의 대응책을 참고.]

 

전 세계적인 움직임 혹은 범세계적인 서비스를 통해 웹 서비스의 코딩 수준을 높이지 않는 이상 현재의 중국발 해킹은 점점 더 심각한 양상으로 발전 할 것이다.

 

보안장비의 도입도 취약성 스캐너의 도입과 점검도 다 중요하다 그러나 가장 중요한 것은 웹개발자의 개발 코드가 안전한지 확인이 가능한 요소가 가장 중요하다 할 수 있다. Secure coding은 SDLC 방법론으로 따지자면 웹개발에는 맞지 않다. 개발의 속도가 너무 빠르기 때문이다. 개발 시기 보다 더 많은 시간이 투자 된다는 점에 있어서 방법론과 적용 기술의 변화가 필요하다. 

 

개발자가 매번 코딩 시에 반복된 오류를 하지 않도록 확인하고 문제를 제거하여 궁극적으로는 전 세계 웹 개발자들이 Secure coding이 생활화 될때 이 문제는 해결이 된다. 그러자면 개발자들의 접근이 용이하고 비용이 저렴하며 정확도를 확보한 url 인자 값의 유효성을 체크하는 도구의 개발과 서비스의 확산이 문제 해결의 첫 걸음이 될 것이다.

 

아직 갈 길은 멀었고 피해는 점차 심각한 양상으로 변질 될 것이다.

 

아무도 이야기 하지 않는 예상과 예측. p4ssionable security explorer . 바다란. 

 

Posted by 바다란

. p4ssion입니다.

 

지난 글에서 ( 한참 됐습니다. ^^) Mass sql injection 관련된 내용에 대해서 언급을 드린 적이 있습니다.

그 이후 업데이트를 할려고 생각 하다가 개인적인 사정으로 작성하지 못했습니다.

오늘 생각나서 잠시 써봅니다.

 

http://www.itjungle.com/two/two082708-story05.html 

http://www.technewsworld.com/story/Mass-SQL-Attack-a-Wake-Up-Call-for-Developers-62783.html?welcome=1209498513&welcome=1210717878 

http://www.theregister.co.uk/2008/05/21/china_sql_injection_attack/ 

http://blogs.zdnet.com/security/?p=1150

http://searchsecurity.techtarget.com/news/article/0,289142,sid14_gci1314697,00.html 

http://ddanchev.blogspot.com/2008/05/malware-attack-exploiting-flash-zero.html 

http://searchsecurity.techtarget.com/tip/0,289483,sid14_gci1317069,00.html

 

Mass sql injection에 관련된 기사들을 이 블로그에 글을 쓰지 않은 이후로 모아 봤습니다.

 

2005년 부터 활발하게 이루어진 SQL Injection 공격에 대해 이제서야 세계적으로 인지를 하고 부분 대응이 진행 되고 있습니다. 공격의 현황은 어떤 식으로 이루어 지고 있으며 또한 대응은 어떤 방식으로 이루어 지고 있는지 주마간산 식으로 살펴 보겠습니다.

 

* 이전에 알려진 SQL Injection 공격과는 조금 다른 범주라고 봐야죠. Login 창에 손으로 입력하여 인증을 우회하는 방식은 오래전에 알려졌으며 또 이후의 각 URL 인자마다 문제가 발생하는 부분에 대해서도 알려져 왔습니다. 현재의 SQL Injection이 다른 관점은 Automated SQL Injection 이라는 것입니다.

 

손으로 직접 수십~수백개의 조합을 통해 DB의 정보를 빼내가는 것이 아니라 특정 DB에 맞추어서 특정 쿼리들을 미리 준비해 놓은 이후 클릭 한번으로 진행을 합니다. 현재의 Mass sql은 여기에서 한 걸음 더 나아가 단일 사이트에 대해 이루어 지는 것이 아니라 수십개 이상의 사이트에 대해 일시적으로 발생 할 수 있도록 범위가 확산된 것입니다.

 

입력창에 대한 SQL Injection ( ' Or 1=1-- )  ->

수동에 의한 URL 인자의 SQL Injection (시간 오래 소요) ->

자동화된 툴의 쿼리에 의한 정보 유출 및 페이지 변조 (악성코드 유포 목적) ->

대규모 스캔 및 공격이 가능한 Automated Mass attack 기법 및 도구의 출현 ( 이것도 현재는 ASP+MSSQL만 공격 하지만 향후 타 언어 및 다른 종류의 DB로 확대 예상)

 

위와 같이 순서의 정리가 가능합니다.

대상규모가 한정적일 경우에는 장비의 도입 및 소스코드에 대한 컨설팅으로 문제의 해결이 가능하였으나 이제는 그 범주를 벗어나 악성코드가 범람하는 세상에 살게 될 수 밖에 없는 상황입니다. ( 전 세계의 웹 서비스의 문제를 한번에 없앨 수는 없으므로 )

 

악성코드에 대한 감염은 브라우저 ( 구글의 크롬, FireFox , IE ..)에 구애받지 않습니다.  악성코드가 사용자 PC에 특정 프로그램을 설치하기 위해 필요한 공격 코드들은 매우 다양하며 운영체제의 한계를 벗어나 여러 Application에 대한 권한 획득 코드들을 이용하는 것이 일반적입니다.  즉 브라우저와는 관계 없이 이 문제는 계속 되며 전 세계의 일반 PC 및 웹서비스가 영향권 내에 들어와 있다고 보는 것이 정답입니다.

 

< 어쩌면 지금의 상황은 Matrix 구조 같은 거대한 위협속에 놓은 것과 같지 않나 생각 됩니다.>

 

묻습니다.

 

1. 사용자 PC에 설치된 모든 Application의 취약성을 수시로 확인하고 문제가 있는지 여부를 확인 하는 것이 가능합니까?

2. 수시로 업데이트되고 갱신되는 ( 악성코드의 유형은 대부분 다운로드 형태를 지니고 있습니다. 즉 한 사이트나 몇 개의 악성코드 다운로드 사이트의 샘플만 변경해 주면 새로이 다운로드가 되는 클라이언트는 신종 악성코드에 감염이 됩니다. )  유형의 악성코드에 대한 대응이 가능합니까?

3. 방문하는 사이트가 안전한 웹사이트임을 확인 할 수 있습니까?

 

 

간단하게 위의 세 가지 질문입니다.

위의 답변은 1번은 불가능 , 2번도 수동적인 대응외에는 불가능 , 3번도 직관적인 신뢰가 없다가 정답이 아닐까 생각됩니다.

 

1번의 경우 운영체제를 벗어나 사용자가 사용하는 모든 Application 문제가 없다는 것은 보증하기가 매우 어렵습니다. 사실 불가능한 이야기 이구요. 이 문제는 웹 서비스를 통해 유포되는 악성코드의 전염을 막을 방도가 매우 부족함을 의미합니다.

 

2번의 경우에는 전 세계의 많은 AV 벤더들에서 대응을 하고 있지만 사실상 공격자의 행동에 대해 대응력은 부족하며 산발적인 대응만을 하고 있어서 노력대비 효과는 미미한 수준이라 할 수 있습니다. 발견을 못한 AV 벤더는 업데이트가 없이 그냥 가죠. 그리고 발견하여 대응을 한다고 하여도 이미 공격자는 또 다른 내용으로 손쉽게 변경하는 것이 가능합니다. 전 세계에 널리 자사의 AV 제품이 사용되고 있다면 최소 시차를 고려 하여도 1일 이상의 시간이 소요 되는 것이 현실 적입니다.

그러나 공격자는 단 몇 분이면 새로운 악성코드의 유포가 가능하며 사용자에게 전파가 가능한 유형이 됩니다. 따라서 뚜렷한 대응방안이라고 보기가 곤란한 상태라 할 수 있습니다.

 

3번은 더 말씀 드리지 않겠습니다.

 

이미 대책 부분과 필요한 부분에 대해서는 이전의 몇몇 Article에서 충분히 언급한 상황입니다.

[ 상상하기 어려운 위협 -1 http://blog.naver.com/p4ssion/50031034464 , 2 - http://blog.naver.com/p4ssion/50031227899  ]

[ IT 서비스의 현재 위험과 대응 - http://blog.naver.com/p4ssion/50024269739 ]

 

전 세계적인 대응 현황을 간략하게 살펴 본 주관적인 의지로 정의하면 빈익빈 부익부, 근본에 도달하지 못한 미봉책..

이 정도로 정의를 할 수 있습니다.

 

며칠전 MS에서는 웹 서비스에 대한 SQL Injection을 막기 위해 IIS의 Plugin 형식인 URLscan Filter 3.0를 배포 하고 있습니다.

[ http://www.microsoft.com/downloads/details.aspx?FamilyID=ee41818f-3363-4e24-9940-321603531989&displaylang=en ]

현재 타켓화 되고 있는 ASP+MSSQL+IIS 조합에 활용이 가능한 유형입니다.

 

물론 실제 적용 시에는 개발된 서비스의 소스에 따라 설정의 변경등이 필요한 상황이 되겠습니다.

 

또한 HP의 WebInspect and QAInspect라는 제품과 IBM의 Appscan , WVS의 Acunetix 라는 웹 취약성 스캐너들이 현재  전세계 시장의 다수를 차지하고 있습니다. 이 제품들의 특징은 스캔 할 수 있는 도메인이 한정 되어 있다는 점, 과도한 취약성 점검을 위해 컨텐츠를 다운로드 (?) 받아서 재현을 하다보니 대용량 사이트에 대해서는 진단의 한계를 보이는 점들이 있습니다.

가장 중요한 점은 가격이 후덜덜입니다.

 

왠만한 IT기업에서 제품군을 도입하려면 많은 전문인력 및 도구 구입에 상당한 비용을 들여야 할 것으로 보입니다.

 

자 위의 두 가지와 같은 대응 흐름이 있습니다. 솔루션을 이용한 근본 취약 부분을 찾아서 소스코드의 문제를 수정하는 방향과 현재 발생되는 공격이 유효하지 않도록 무력화 시키는 Filter 부분이 있는데 두 가지 모두 한계를 지니고 있습니다. Filter의 경우에는 우회가 가능한 패턴 유형이 발견 될 수 있다는 점과 기존의 정상 서비스 트래픽에 대한 제한을 지닐 수 있다는 점입니다.

 

또한 솔루션을 이용한 취약 부분 진단에 대해서는 고비용, 대형 사이트 진단 불가 , 도메인 스캔의 제한 , 속도의 문제로 인해 사용이 어려운 측면이 발생 합니다.

 

( Web Firewall 등에 대해서는 별도 언급 하지 않겠습니다. 도입시 마다 설정 변경이나 Customizing 없이 사용 가능한 제품이 없지 않나요? 어쩌면 소스코드 수정이 휠씬 빠를 수도 있는 Customizing이며 공격 패턴이 변경 되면 처음 부터 다시 설정 해야만 합니다. - 근본 문제 제거와는 관련 없는 부분이며 임시방책일 뿐이라 논의 하는 것은 부적절하다는 개인 판단입니다. )

 

 

빈익빈 부익부.

 

가난한 기업들과 여력이 없는 기업들을 위한 해결 방안은 어디에도 없습니다. 그나마 전문성을 지닌 인력이라도 있다면 이런 문제를 해결해 보겠으나 인력도 없으니 설상가상인 상태가 되겠죠. 앞으로도 오랜 기간 동안 대상이 될 것으로 예상 됩니다.

 

개인적인 예상으로는 향후 2~3년간은 이러한 대규모 악성코드의 유포에 의해 매우 시끄러울 것이고 특별한 해결책도 찾기 어려운 상황이 계속 될 것입니다. 그 이후에는 또 다른 부분으로 전이가 되겠지만...

 

부유한 기업들은 많은 비용을 투입하여 장비를 도입하고 소스코드에 대한 진단과 컨설팅등을 받습니다. 그러나 빈자들의 서비스를 통해 유포되는 악성코드들은 주로 부유한 서비스 기업을 노리고 있습니다. 이 점에 대해서는 간과를 하는 면이 많은 편입니다.

 

문제의 해결을 하기 위해서는 세계의 인터넷 환경을 일시에 ( 상당히 빠른 시간) 클린한 상태로 올려 줄 수 있는 부분이 필요하며 자신만의 서비스를 벗어나 전체적인 시각을 가지고 움직일때 자신의 서비스에게로 오는 위험을 줄 일 수 있습니다.

 

말그대로 네트웍 환경은 위협도 연결이 되어 있기 때문이죠.

 

빈자들을 위한 보안도구들은 언제쯤 출현 할까요? 상용도구의 정확성 만큼을 보유한 저렴하고 접근성이 뛰어난 도구의 출현이 현재의 상황을 좀 더 빠른 시기에 진화 할 수 있을 유일한 방안이라 생각 합니다.

 

전술과 전략이 있습니다. 개개의 싸움을 하는 전략은 현재대로 진행 하고 상호협력을 강화할 방안을 찾아야 하며 ( AV의 대응 , Scanner , Web Firewall, Vendor의 대응) 더불어 가장 중요한 전술적인 차원의 큰 방향성이 필요 합니다.

 

큰 방향성 차원에서 공격의 범주를 최대 확산이 불 가능 하도록 일정 수준 이하로 묶음으로써 피해의 광역화를 막는 것이 가장 큰 이슈가 될 것이고 가장 필요한 관점이 아닐까 생각 합니다. 전술적으로 확산 범주를 좁히기 위해서는 가장 필요한 것이 문제점을 찾을 수 있는 접근성 뛰어난 저렴한 비용의 도구의 확산이나 서비스화가 우선 되어야 할 것이구요.

 

전술과 전략은 구분되어야 하며 현재의 전략도 부족한 면들이 있으며 커버 가능한 범위를 더욱 넓힐 수 있는 도구와 서비스의 출현들이 심각하게 필요하며 전술적인 관점에서는 거대한 악성코드 유포 네트웍을 소규모 단위로 분산 시킬 수 있는 정책적인 방향성이 필요합니다. 수많은 이해가 상충되는 야생의 시대에 이런 협력이 필요한 전술과 전략은 구사되기 어려운 점들이 많을 것입니다.

 

따라서 앞으로도 위기는 계속 지속 될 것입니다. 모든 프로그래머가 Secure한 코딩이 일상화 되기 전까지는 상당히 오랜 시간 위기는 지속 될 것이고 이제 세계적인 시작은 큰 흐름이 벌써 시작된 상황이라 예측 됩니다.

 

- p4ssion. 2008.9

 

*오랜만에 썼더니 엉망이네요. 생각을 정리하는 것도 잘 안되니 조금씩 더 자주 쓰다보면 나아지리라 생각 합니다.

 

 

 

Posted by 바다란