Subscription Form
Contributors

시스템을 운영하다 보면 다양한 보안 문제에 맞닥뜨릴 때 문제를 해결하기 위한 접근 방법을 몰라 안절부절 했던 경험이 한번씩은 있을 것이다. 특히 해킹의 경우 과거와는 달리 최근에는 금전적 이익을 위한 목적으로 상황이 변해가고 있으며, 공격기법 또한 지능적이고 복합적인 기법들을 사용함으로써 이에 대한 적절한 대응을 하지 못하여 피해가 확산되거나 복구가 불가능하게 되는 상태에 이르는 경우도 있다.

그렇다면 시스템에 이상징후가 발생할 경우 어떻게 대처해야 할 것인가? 한국정보보호진흥원에서는 해킹 피해 기관이나 개인이 침해사고를 당하였을 경우 이에 대응하기 위한 분석절차와 기술을 포함하고 있는 “침해사고 분석 절차 가이드”를 2006년 11월에 배포하여 많은 기업에서 활용될 수 있도록 하고 있다. 해당 가이드에는 단계별 침해사고 분석 절차와 OS별 침해사고 분석 기술, 주요 해킹 사례별 분석 절차 등을 포함하고 있다.

– 침해사고 분석 절차 및 가이드 다운로드 사이트 :

http://www.kisa.or.kr/kisa/data/jsp/data_2040_view.jsp?regno=011596&keyWord=

여기에서는 침해사고 발생시 대응절차는 기술하지 않으며, Windows 시스템 분석 시 별도의 프로그램을 설치하지 않고 시스템 내부 명령어를 활용한 배치파일 작성 예제 및 배치파일 작성법 등을 중점적으로 기술하도록 하겠다.

1. 악성파일 검색
시스템에 설치되는 대부분의 악성파일은 시스템 관리자에 의해 쉽게 발견되지 않도록 Hidden 속성이 부여되어 있는 것이 일반적이다. 침해사고 시스템에서 발견되는 대부분의 악성파일은 백신에서 탐지되지 않거나, 정상적인 파일을 악용하는 경우가 많아 처음 시스템을 접하거나 시스템에 대한 깊은 지식이 없는 관리자에겐 숨겨져 있는 악성파일을 검색하기란 쉽지 않다.

다음 예제는 지정 디렉토리를 포함한 모든 하위 디렉토리에 위치해 있는 파일 중 Hidden 속성을 가지고 있는 파일을 검색하기 위한 배치파일의 예제이다.

각 라인에 대한 설명은 다음과 같다.
• %computername% : 컴퓨터 호스트 네임 출력
• echo # Start Time # > %computername%.txt : echo를 통해 출력되는 “# Start Time #” 문자열을 “%computername%.txt” 파일에 저장
• echo PATH : %1 : 사용자가 입력한 문자열(경로) 출력
• %DATE%, %TIME% : 날짜, 시간 출력
• dir %1 /A:h /S : 사용자가 입력한 경로를 포함한 하위 디렉토리를 검색하여 Hidden속성을 가지고 있는 파일 검색

위의 배치파일을 이용하여 OS가 설치되어 있는 디스크 드라이브를 검색해 보면 수많은 Hidden 파일이 결과물로 쏟아질 것이다. 이렇게 많은 파일 중에 의심스러운 파일을 찾는다는 것은 그리 쉽지 않다. 하지만 최근에 발생하고 있는 침해사고 유형을 보면 웹 어플리케이션 취약점을 통해 Web Shell 또는 악성 파일을 Web Document 디렉토리에 업로드 후 Hidden 속성을 부여하여 악용되는 사례가 빈번하게 이루어지고 있으므로 시스템에서 사용되는 시스템 파일에 대한 지식이 없다 하더라도 Web Document 디렉토리와 같이 Hidden 속성을 가지고 있는 파일이 존재할 필요가 없는 경로를 대상으로 점검할 때 유용하게 활용할 수 있을 것이다.

2. 파일명 검색
일부 시스템에서 침해사고가 발생하였다면 인근 시스템까지 피해가 확산되었을 가능성이 크다. 이렇게 다수의 시스템을 관리하는 경우 모든 시스템을 일일이 점검하기에는 한계가 있으므로 샘플링 대상 선정 후 대상 시스템에서 발견된 악성파일을 배치파일로 작성하여 전 시스템 대상으로 검색하기 위한 용도로 활용한다면 점검시간을 단축시킬 수 있을 것이다.

다음 예제는 지정 디렉토리를 포함한 하위 디렉토리에서 hack.asp, hack.exe, cmd.exe 파일을 검색하기 위한 배치파일이다.

각 라인에 대한 설명은 다음과 같다.
• dir %1 /A /S : 해당 디렉토리를 포함한 하위 디렉토리에서 모든 파일을 검색
• findstr /I “hack.asp hack.exe cmd.exe” : 출력되는 결과 중 대소문자를 구분하지 않고 hack.asp, hack.exe, cmd.exe 문자열을 검색

3. 웹 소스 및 로그 검색
최근 발생하는 대부분의 해킹은 웹 어플리케이션 취약점을 통해 이루어지고 있으며, 발견된 취약점을 이용하여 다양한 기능이 구현되어 있는 Web Shell을 업로드 하여 시스템의 권한을 획득하는 형태를 띄고 있다. 대부분 업로드되는 Web Shell은 정상적인 웹 소스와 쉽게 식별하지 못하도록 정상적인 파일과 비슷한 파일명으로 생성된다. 백신을 이용할 경우 일부 Web Shell에 대한 탐지가 가능하며, Web Shell 패턴을 작성하여 배치파일로 검색 시에도 Web Shell을 검출할 수 있다. 하지만 중국발 해킹 이후 발견되는 대부분의 Web Shell은 [그림 1], [그림 2]와 같이 VBScript 또는 JScript 등을 통해 스크립트 본문을 Encoding 하거나 Web Shell이 단 한 줄의 스크립트로 이루어져 있어 패턴 검색을 이용한 점검이 점점 어려워지고 있다.


[그림 1] VBScript로 Encoding 되어 있는 Webshell


[그림 2] HTML Form 기반 Web Shell 연결을 위해 삽입되는 스크립트

하지만 일부 시스템에서 Web Shell 과 같은 악성 스크립트가 발견되었다면 악성 스크립트에서 사용하고 있는 문자열과 같은 패턴을 배치파일로 생성 후 타 시스템의 설치여부를 확인하기 위한 용도로 활용될 수 있다. 이러한 점검을 위한 배치파일 예제는 다음과 같다.


•findstr /S /I /N /D:%1 /G:.\include\string2.txt *
– /S : 현재 디렉토리를 포함한 하위 디렉토리 검색
– /I : 대/소문자 구분하지 않음
– /N : 일치하는 각 줄 앞에 줄 번호를 표시
– /D :%1 : 사용자가 지정한 디렉토리 목록을 구분하는 세미콜론(;)을 찾음
– /G:.\include\string.txt : \include\string.txt파일로부터 찾는 문자열을 입력 받음

위의 배치파일은 Web Shell 에서 사용되는 문자열을 string.txt 파일에 입력하게 되면 해당문자열을 포함하고 있는 모든 파일을 검출하게 된다. 이러한 점검 방식은 Web Shell의 검출뿐 아니라 사용자 기반 공격을 위한 iFrame 삽입 시 웹 소스 변조가 일어나게 되는데, 이때 사용자가 눈치채지 못하도록 iFrame 크기를 “width=0 height=0” 으로 설정하는 경우가 많으므로 이러한 패턴을 추가하여 점검할 수도 있다.

또한 배치파일을 좀 더 응용하여 SQL Injection 공격 시 많이 사용되는 문자열인 “xp_cmdshell”, “cmd.exe”, “–“ 는 웹 어플리케이션 로그에도 남으므로 이러한 패턴을 이용한다면 웹 어플리케이션 로그 분석 시에도 활용될 수 있다.

앞서 설명한 내용은 침해사고 시스템 점검시 가장 빈번하게 발생하는 현상을 기준으로 배치파일을 작성하여 점검하는 방법에 대해서 설명하였다. Windows 시스템에서 지원하는 수많은 도구(리소스킷에 포함되어 있는 Tool)와 내부 명령어를 활용한다면 각 기업의 시스템 운영 환경 및 시스템 관리자가 필요로 하는 요구사항을 기반으로 점검 도구 제작이 가능하며, 해킹 또는 장애와 같이 특정 현상에 대한 상세 분석을 위한 점검 도구로 활용될 수 있을 것이다.@

안철수연구소 보안관제팀 주임연구원 심봉권

[안철수연구소 2008-03-12]

 

Total
0
Shares

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다