보안정보
전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.
ESM을 활용한 공격별 대응방안(Webshell Upload)
2015.08.24
11,440
이글루시큐리티 ESM은 이벤트 선별 기능, 통합 실시간 모니터링 기능, 보고서 생성 기능 등을 통해 보안담당자의 모니터링 및 보고서 업무를 상당 부분 감소시키고 보안담당자 본연의 업무인 보안기획 및 보안정책 수립에 집중하도록 지원한다.
보안관제사업본부 보안분석팀 김지우
1. 개요
이번 ESM Guide에서는 웹 사이트의 파일 업로드를 기능을 이용해 Webshell 업로드 및 실행 시 보안장비에서 탐지하지 못할 경우 이에 대한 관제대응 방안으로 ESM 의 기능을 이용한 탐지 방법에 대해 기술하고자 한다.
2. Webshell 이란?
공격자가 원격에서 웹 사이트의 게시판, 자료실 등의 파일 업로드기능을 이용해 웹 스크립트파일을 전송, 관리자 권한을 획득한 후 웹 페이지 소스코드 열람, 악성스크립트 삽입, 서버 내 자료 유출 등의 공격을 하는 것을 말한다.
[그림 1] Webshell 파일업로드 공격
3. ESM 활용기법
1) 업로드 폴더 감시를 통한 Webshell 탐지
웹사이트에서 업로드 기능을 제공할 때에는 파일을 저장할 업로드 폴더가 지정되어 있으며 공격자가 파라미터 변조를 통해 저장폴더를 바꿀 수 없는 한 Webshell 역시 정해진 업로드 폴더에 저장이 된다. 이 말인즉슨 업로드 폴더만 잘 감시하더라도 Webshell을 탐지 할 수 있는 것을 뜻하며. Webshell 업로드를 감시하기 위해선 우선적으로 ESM Agent의 수집조건 중 파일 무결성 기능(File Integrity)을 설정해야 한다.
< Agent 구성관리 설정방법 >
① 파일업로드 폴더를 감시할 웹 서버 Agent 선택
② 수집조건 등록 → System → File Integrity 순으로 선택
③ 감시대상에 “C:demohtdocs~~”와 같이 파일 업로드 폴더경로 입력 후 추가 (※ 절대경로 입력)
④ 감시대상 행위(Create, Delete, Update) 설정 후 적용버튼 클릭
[그림 2] Agent 수집설정
< 연관성 정책 설정 >
① 이벤트가 몇 건 발생했을 때 경보를 발생시킬 것인지 설정한다.
② 수집대상 이벤트는 “Create”만 적용해도 되지만 똑같은 이름을 가진 파일 업로드 시 덮어 쓰는 경우도 존재한다.
③ 오탐 방지를 위해 특정 문자열을 가진 파일이 업로드 됐을 경우에만 경보가 발생하도록 필터링 설정한다.
단, 변경 될 수 있는 “파일이름” 보다는 “확장자”에 대한 필터링을 적용하는 것이 바람직하다.
(※ Webshell 실행되기 위해선 해당 서버 환경에서 지원하는 특정 확장자를 가져야 하므로 경보설정 시 서버 환경을 확인해야 한다.)
[그림 3] 연관성 분석 정책 설정
정책 설정 완료 후 ESM 모니터링 시 화면은 다음과 같다.
[그림 4] 연관성 분석 정책 설정 후 경보발생 화면
[그림 5] 상세분석 화면 – 생성된 Webshell 확인
2) 웹 로그를 이용한 Webshell 실행 탐지
웹 서버에서 잘못된 환경설정으로 JPG와 같은 이미지 확장자에 대한 스크립트 실행을 허용한 상태이거나 LFI 취약점을 통해 파일을 호출하게 되면 앞서 설명한 “업로드 폴더 감시를 통한 Webshell 탐지” 로는 확인이 어렵다. 이를 보안하기 위한 방안은 웹 로그를 이용해 Webshell 실행을 탐지하는 것으로 Webshell 실행을 의심해 봐야 할 경우의 수는 2 가지이다.
① 사용자가 업로드 폴더 경로에 직접 접근 시
[그림 6] 일반적인 파일 다운로드 시 화면
웹 서버에선 별도의 모듈을 통해 파일 다운로드기능을 제공하기 때문에 사용자가 업로드폴더에 직접 접근할 필요가 없다. 그러므로 업로드 경로에 접근을 시도하는 사용자가 있다면 어느 정도 의도를 가지고 접근한다고 볼 수 있다.
▶ 일반적인 파일다운로드 시
▶ 업로드된 파일에 대한 직접 접근 시
http:// 192.168.46.200/demoshop/shop_board/upload_file/test_01.jpg
② 업로드 폴더에 위치한 파일에게 GET 또는 POST를 이용해 파라미터 값을 전달
[그림 7] GET 매소드를 이용해 파라미터 값 전달
공격자가 명령어를 전달하기 위해서 보통 GET 또는 POST 등을 이용해 파라미터 값을 전달한다. 정상적인 파일 호출 시에는 POST를 통해 요청할 필요가 없으며 GET 메소드를 통한 접근이라 하더라도 파라미터가 URL 뒤에 붙는 건 일반적이지 않다. (※ 단, 웹 서버가 허용하는 경우 Cookie를 통해 값을 전달 할 수도 있음)
[그림 8] 웹 로그 분석
앞서 설명한 2가지 경우를 탐지하는 연관성 설정 방법은 다음과 같다.
< 연관성 정책 설정 >
① 이벤트가 몇 건 발생했을 때 경보를 발생시킬 것인지 설정한다.
② 업로드 폴더 경로를 설정한다.
주의할 점은 “Agent 구성관리 설정”과는 달리 URL에 표시되는 상대 경로를 지정해야 한다.
③ HTTP 매소드 중 POST를 설정한다.
④ 오탐을 줄이기 위해 제외할 문자열을 지정한다.
(※ 테스트 웹 서버 로그의 경우 “URL 주소?- 쿠키” 형태일 때 일반적인 접근을 나타내므로 ?- 를 제외 패턴으로 설정하였다.
해당 정책은 두 번째 설명한 “업로드 폴더에 위치한 파일에게 GET 또는 POST를 이용해 파라미터 값을 전달“ 할 때 탐지하는 정책으로
첫 번째 경우에 해당하는 이벤트가 발생할 때 경보를 발생시키기 위해선 ④번 설정을 하지 않으면 된다.)
[그림 9] 연관성 분석 정책 설정
정책 설정 완료 후 ESM 모니터링 시 화면은 다음과 같다.
[그림 10] 연관성 분석 정책 설정 후 경보발생 화면
[그림 11] 상세분석 화면 – Webshell 실행 확인
4. 대응방안
① 홈페이지 파일 업로드 취약점 제거
파일 업로드가 불필요한 게시판의 경우는 업로드의 기능을 완전히 제거하고 업로드가 필요한 경우에는 파일의 확장자를 검증하도록 한다. 확장자를 체크하는 루틴은 클라이언트에서 진행하면 안되고 반드시 서버에서 실행되어야 하며 특정 확장자(asp, cgi, php, jsp 등)만 막는 블랙 리스트 방식보다 화이트 리스트 방식으로 구현하여 허용 확장자(txt, hwp, doc, pdf, gif 등)만 업로드 가능하도록 구현 하는 것이 바람직하다. 특정 확장자만 막는 경우에는 우회해서 올릴 수 있는 방법들이 존재하기 때문이다
② 실행권한 제거
업로드 파일을 위한 전용 폴더를 별도 생성하며 httpd.conf와 같은 웹 서버 설정파일에서 실행설정을 제거함으로써, Server Side Script가 업로드 되더라도 실행되지 않도록 해야 한다.
[그림 12] IIS 환경설정 - 업로드 폴더 실행권한 제거