보안정보

전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.

SIEM 연관성 분석 기능을 활용한 웹쉘 생성 탐지

2016.03.02

11,461

보안관제사업본부 보안분석팀 장태용

 

 

1.  개요

 

 일반적으로 보안시스템(웹 방화벽, IPS 등)에는 웹쉘을 탐지하고 차단하는 룰이 존재한다. 하지만 웹 방화벽이 정상적으로 작동할 수 없는 상황이 발생하거나 룰에 매칭되지 않는 패턴의 웹쉘이 업로드 될 가능성은 존재하며, 그로 인해 악성코드 유포, 서버 탈취 등 각종 해킹 사고로 이어지게 될 수 있다. 따라서 이를 탐지하기 위해 SIEM의 무결성 기능을 활용한 웹쉘 탐지 방안에 대해 알아보도록 한다.

 


2. WebShell


웹쉘이란 웹 기반에서 동작하여 원격 명령을 수행할 수 있는 실행 가능한 파일(PHP, JSP, ASP 등)이다. 웹쉘은 그 유용성과 편의성에 의해 침해사고에 자주 이용되고 있다. 일단 웹쉘이 웹 서버에서 실행 가능한 상태가 되면 일회성 공격에 그치지 않고 백도어의 역할로써 지속적으로 정보유출, 악성코드 유포 같은 공격에 이용될 수 있다.

 

 

[그림 1] 웹 쉘 실행 화면

 

 

 









 

 


3. WebShell  실행 시나리오


웹쉘을 실행 가능한 상태로 만드는 방법은 다양하게 존재한다. 그 중에서 가장 많은 경우가 파일 업로드 관련 취약점이라고 할 수 있다. 하지만 파일 업로드 취약점 외에도 실행 할 수 있도록 만드는 방법이 존재하며 그 중 몇 가지 방법들에 대해 간략히 알아보고, 탐지 방법에 대해 알아보도록 한다.

 

1) 업로드 파일 확장자 제한이 없는 경우

가장 취약한 경우로 웹쉘을 아무런 제약 없이 업로드를 할 수 있다. 업로드 된 폴더에 대한 경로를 확인 할 수 있고, 실행 권한이 주어진다면 웹쉘을 실행 할 수 있다.

 

2) 업로드 파일 확장자 제한은 있으나 우회가 가능한 경우

실행 가능한 확장자에 대해서 필터링을 하고 있으나, 클라이언트 지점에서 제한이 이루어지고 있다면 프록시 툴을 이용하여 간단하게 우회가 가능하다.

 

3) 웹 서버 및 관련 어플리케이션에 취약점이 존재 하는 경우
서버 지점에서 확장자에 대한 필터링이 이루어지고 있다고 하더라도, 웹 서버나 어플리케이션 자체적으로 취약점을 내포하고 있는 경우 필터링을 우회 할 수 있다. 예를 들어 IIS 파일 파싱 취약점, Apache 다중확장자 처리 취약점을 통한 웹쉘 업로드, Apache Struts2  Exploit 취약점으로 원격 코드 실행 등이 알려져 있으며 그 밖에 알려지지 않은 취약점이 존재할 수 있다.

 

4) 기타 취약점이 존재하는 경우
앞서 살펴 보았던 공격 방법에 직접적으로 속하지 않는 기타 취약점 또한 존재한다. 예를 들어 디렉터리 경로 조작을 통해 실행 권한이 있는 폴더에 접근하여 파일을 업로드 할 수 있으며, 파라미터 값에 대한 검증이 이루어지지 않을 때 RFI, LFI 같은 공격이 가능하고, SQL 인젝션을 통해 저장프로시저가 실행될 경우 웹쉘을 이용하여 공격을 할 수 있다.

 

5) 네트워크 공격이 가능한 경우
일반적으로 웹쉘이 웹 서버에 업로드 될 경우 이를 활용하여 내부망을 노릴 수 있지만, 반대로 내부망에서 웹 서버로 칩임이 가능할 수도 있다. 관리자 PC의 악성코드 감염, APT 악성 메일 실행, 공유 폴더 권한 문제 등의 경우 처럼 다양한 지점에서의 공격 가능성에 대해 생각해야 한다.

 

 

4. SIEM을 활용한 탐지 방안


웹쉘이 실행될 수 있는 여러 경우가 존재하기 때문에 보안시스템을 우회할 가능성이 있다는 점을 알아 보았다. 따라서 공격자의 우회가 성공하고 웹쉘이 생성되는 경우를 가정하고 탐지하기 위하여 SIEM 연관성 분석 이기종 기능을 활용 하도록 한다. 일반 시그니처 탐지 또는 정규표현식 탐지가 가능한 보안장비와 SIEM 에이전트가 설치된 웹 서버가 존재한다면 다음과 같은 방법으로 웹쉘 탐지 연관성 분석 룰을 등록 할 수 있다.

 

1) 보안 장비 룰 설정

먼저 보안시스템에서 탐지정책을 2가지 추가하도록 한다. 첫 번째 룰은 DefaultText_Detected라는 공격명으로 < ?php 텍스트를 탐지하는 룰을 등록했다. 보통 사용자로부터 업로드 되는 파일에 < ?php 같은 구문이 포함될 확률은 낮기 때문에 첫 번째 조건으로 등록하여 웹쉘의 가능성을 따져본다. 하지만 이것 만으로는 오탐지가 많이 발생하기 때문에 룰을 추가적으로 등록 하도록 한다.

 


[그림 2] 보안장비 탐지 정책 등록 - 1

 

두 번째 룰은 phpwebadmin_Detected_implify_path라는 공격명으로 특정 웹쉘(phpwebadmin)에서 나타나는 시그니처 텍스트(implify_path)를 탐지하는 룰을 등록한다.

 

 

[그림 3] 보안장비 탐지 정책 등록 - 2

 

2) 수집 조건 설정

기본 수집 조건에서 무결성 이벤트의 경우 조건을 설정해줘야 할 필요가 있다. 감시 주기의 경우 서비스 가용성을 고려하여 설정을 하고, 감시 대상 목록에 감시할 폴더 및 하위 디렉토리 여부를 설정한다. 가장 좋은 방법은 웹 서버 루트 폴더 이하 모든 디렉터리를 검사하는 것이지만 이 또한 가용성을 고려하여 설정한다. 마지막으로 웹쉘이 생성되었을 때만 탐지하기 위해 Create에 체크를 하고 최종 적용하도록 한다.

 

 

[그림 4] 연관성 분석 수집 조건 설정

 

 

[그림 5] 파일 무결성 조건 설정

 


3) 연관성 분석 등록


① 연관성 분석 공통 항목 설정

공통 항목 설정은 연관성 분석의 기본 조건을 설정할 수 있다. 그 중에서 서로 다른 보안장비의 이벤트를 연관 분석할 수 있는 이벤트 관계 설정이 가장 중요하다. 보안장비의 탐지와 웹 서버에 파일 생성을 연관 지어 하나의 경보로 발생 시키기 위해서는 1) 동일한 출발지에서 목적지로 발생한 공격을 보안 장비에서 탐지하도록 체크하고, 2) 그 목적지가 파일 무결성을 탐지할 웹 서버로 해당되도록 설정을 하도록 한다.

 

 

[그림 6] 연관성 분석 공통 항목 설정


② 네트워크 이벤트 설정

네트워크 이벤트의 경우 앞서 만들었던 두 가지 룰을 포함리스트에 추가 하도록 한다. 이때, ‘Attack Signature 분포’를 2이상으로 설정하였는데, 설정한 숫자 만큼 포함리스트에서 각각 OR 조건으로 탐지가 되어야 경보가 발생한다. 따라서 DefaultText_Detected, phpwebadmin_Detected_implify_path 한번씩 탐지가 되어야 조건이 성립한다.

 

 

[그림 7] 네트워크 이벤트 조건 설정


③ 무결성 이벤트 설정

무결성 이벤트의 경우 파일 생성 모니터링을 위해 업로드 폴더경로를 지정하고 Create 1회를 지정하여 파일이 하나라도 생성될 경우 경보 조건을 만족하도록 설정하였다.

 


[그림 8] 무결성 이벤트 조건 설정

 

4) 실시간 공격 탐지

연관성 분석 룰의 등록이 끝났다면, SIEM 탐지 기능을 확인하기 위해 직접 공격을 시도하고, 보안장비 및 SIEM 무결성 실시간 이벤트를 확인한다. [그림 3-9]을 보면 보안 장비에서 설정한 두 가지 이벤트가 탐지 되었음을 확인 할 수 있다.

 


[그림 9] 보안장비 실시간 탐지


또한 웹 서버에서는 업로드 된 PHP 파일을 탐지한 무결성 이벤트를 확인 할 수 있다. 이때 주의 할 점은 확장자가 PNG, JPG 등처럼 정상 확장자로 보인다고 할지라도 파일 내용을 확인하여 웹쉘 여부를 판단해야 한다.

 


[그림 10] 웹 서버 파일 무결성 실시간 탐지

 

5) 연관성 경보 탐지

두 이기종 간의 실시간 이벤트가 성공적으로 탐지 되었다면, 연관성 분석을 통해 AND 조건을 만족하였으므로 성공적으로 연관성 경보가 발생하게 된다.

 


[그림 11] 연관성 분석 경보 발생

 


5. 결 론


웹쉘에 대한 방어가 특정 취약점(파일업로드 우회)을 해결하는데 초점이 맞춰져 있다면, 다른 우회 방법을 통해 공격을 시도할 경우 탐지를 하지 못할 수 있다. 따라서 웹 서버에 웹쉘이 알려지지 않은 우회 방법을 통해 서버에 생성되었다고 가정하고 탐지를 할 수 있는 방법에 대해 생각해 보았다.

앞서 탐지를 위해 등록한 보안장비 정책 설정과 연관성 분석룰은 가장 기본적인 방법에 대해 예를 들기 위해 특정 웹쉘(phpwebadmin)에 특화된 시그니처(문자열)를 등록하였다. 하지만 중국어 ChartSet(gb2312) 같은 일반적으로 쓰이지 않는 구문이나, 웹쉘에서 자주 사용되는 함수 등의 패턴을 추출하여 각각의 웹 서버 환경과 장비 구성에 따라 유동적으로 이기종 옵션을 설정하고 패턴을 등록한다면 모든 웹쉘은 아닐지라도 일반적인 범위의 비정상 실행 가능한 파일에 대해 탐지할 수 있을 것으로 기대 된다.