보안정보
전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.
연관성 분석 이기종 기능을 활용한 웹쉘 탐지
2015.08.18
9,802
보안관제사업본부 보안분석팀 장태용
1. 개요
일반적으로 웹 방화벽에는 웹쉘 업로드를 차단할 수 있는 룰이 존재한다. 하지만 제조사에서 제공하는 룰에 대한 우회가 가능하다면 웹쉘이 업로드 될 수 있으며, 웹쉘로 인해 악성코드 유포, 서버 탈취 등 각종 해킹 사고로 이어지게 된다. 이와 같은 상황에 대비하여 ESM의 이기종 기능과 무결성 기능을 활용하여 웹쉘 탐지를 할 수 있는 방안에 대해 생각해 본다.
2. WebShell
웹쉘이란 웹 기반에서 동작하여 원격 명령을 수행할 수 있는 실행 가능한 파일(PHP, JSP, ASP 등)이다. 웹쉘은 그 유용성과 편의성에 의해 침해사고에 자주 이용되고 있다. 일단 웹쉘이 웹 서버에서 실행 가능한 상태가 되면 일회성 공격에 그치지 않고 백도어의 역할로써 지속적으로 정보유출, 악성코드 유포 같은 공격에 이용될 수 있다.
[그림 1] 웹쉘 구동 화면
3. WebShell 공격 방법
웹쉘을 실행 가능한 상태로 만드는 공격 방법은 다양하게 존재한다. 그 중에서 가장 많은 경우가 파일 업로드 관련 취약점이라고 할 수 있다. 하지만 파일 업로드 취약점 외에도 웹쉘을 서버에서 실행할 수 있는 방법 또한 존재한다. 몇 가지 방법들에 대해 간략히 알아보고, 탐지 방법에 대해 생각해 보도록 하자.
1) 업로드 파일 확장자 제한이 없는 경우
가장 취약한 경우로 웹쉘을 아무런 제약 없이 업로드를 할 수 있다. 업로드 된 폴더에 대한 경로를 확인 할 수 있고, 실행 권한이 주어진다면 웹쉘을 실행 할 수 있다.
2) 업로드 파일 확장자 제한은 있으나 우회가 가능한 경우
실행 가능한 확장자에 대해서 필터링을 하고 있으나, 클라이언트 지점에서 제한이 이루어지고 있다면 프록시 툴을 이용하여 간단하게 우회가 가능하다.
3) 웹 서버 및 어플리케이션에 취약점이 존재 하는 경우
서버 지점에서 확장자에 대한 필터링이 이루어지고 있다고 하더라도, 웹 서버나 어플리케이션 자체적으로 취약점을 내포하고 있는 경우 필터링을 우회 할 수 있다. 예를 들어 IIS 파일 파싱 취약점, Apache 다중확장자 처리 취약점을 통해 웹쉘 업로드가 가능하고, Apache Struts2 같은 경우 Exploit 취약점으로 원격 코드 실행이 가능하다.
4) 기타 취약점이 존재하는 경우
1~4번에서 살펴 보았던 공격 방법에 직접적으로 속하지 않는 기타 취약점 또한 존재한다. 예를 들어 디렉터리 경로 조작을 통해 실행 권한이 있는 폴더에 접근하여 파일을 업로드 할 수 있으며, 파라미터 값에 대한 검증이 이루어지지 않을 때 RFI, LFI 같은 공격이 가능하게 된다. 마지막으로 SQL 인젝션을 통해 저장프로시저가 실행된다면 마찬가지로 웹쉘을 이용하여 공격이 가능해진다.
5) 네트워크 공격이 가능한 경우
보통은 웹쉘이 웹 서버에 업로드 될 경우 이를 활용하여 내부망을 노릴 수 있지만, 반대로 내부망에서 웹 서버로 칩임이 가능할 수도 있다. 관리자 PC의 악성코드 감염, APT 메일 공격 또는 단순히 공유 폴더 권한 문제 등 반대의 경우 또한 많은 방법이 있을 수 있다.
4. ESM 활용 방안
웹쉘을 탐지하기 위하여 ESM 연관성 분석 이기종 기능을 활용 하도록 한다. 일반 시그니처 탐지 또는 정규표현식 탐지가 가능한 보안장비와 ESM 에이전트가 설치된 웹 서버가 존재한다면 다음과 같은 방법으로 웹쉘 탐지 연관성 분석 룰을 등록 할 수 있다.
1) 보안 장비 룰 설정
먼저 보안장비에서 탐지정책을 2가지 추가하도록 한다. 첫 번째 룰은 DefaultText_Detected라는 공격명으로
[그림2] 보안장비 탐지 정책 등록 - 1
[그림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) 실시간 공격 탐지
연관성 분석 룰의 등록이 끝났다면, ESM 탐지 기능을 확인하기 위해 직접 공격을 시도하고, 보안장비 및 ESM 무결성 실시간 이벤트를 확인한다. [그림9]를 보면 보안 장비에서 설정한 두 가지 이벤트가 탐지 되었음을 확인 할 수 있다.
[그림 9] 보안장비 실시간 탐지
또한 웹 서버에서는 업로드 된 PHP 파일을 탐지한 무결성 이벤트를 확인 할 수 있다. 이때 주의 할 점은 확장자가 PNG, JPG 등처럼 정상 확장자로 보인다고 할지라도 파일 내용을 확인하여 웹쉘 여부를 판단해야 한다.
5) 연관성 경보 탐지
두 이기종 간의 실시간 이벤트가 성공적으로 탐지 되었다면, 연관성 분석을 통해 AND 조건을 만족하였으므로 성공적으로 연관성 경보가 발생하게 된다.
[그림 11] 연관성 분석 경보 발생
5. 결 론
웹쉘을 업로드 할 수 있는 취약점은 다양하다 하지만 그 중 하나의 취약점이라도 방어가 되어있지 않을 경우 웹쉘이 성공적으로 업로드 될 수 있다. 따라서 금월 가이드에서는 웹 서버에 웹쉘이 업로드 되어 생성되었을 경우에 탐지를 할 수 있는 방법에 대해 생각해 보았다.
앞서 예시를 든 보안장비 정책 설정과 연관성 분석룰은 가장 기본적인 방법에 대해 예를 들기 위해 특정 웹쉘(phpwebadmin)에 특화된 시그니처를 등록하였다. 하지만 중국어 chartset=gb2312 같은 일반적으로 쓰이지 않는 구문이나, 웹쉘에서 자주 사용되는 함수 등의 패턴을 추출하여 각각의 웹 서버 환경과 장비 구성에 따라 유동적으로 이기종 옵션을 설정하고 최적화를 수행 한다면 특정 웹쉡 탐지에 그치지 않고 다양한 종류의 웹쉘을 탐지할 수 있을 것으로 기대된다.