comparing shell dectector and neopi

27
웹쉘 탐지도구 실습 :ShellDetector & NeoPI 파일 업로드 취약점 최일선 1 Writing by Ilsun Choi E-mail : [email protected]

Upload: ilsun-choi

Post on 08-Aug-2015

54 views

Category:

Technology


2 download

TRANSCRIPT

웹쉘 탐지도구 실습:ShellDetector & NeoPI

파일 업로드 취약점

최일선

1Writing by Ilsun ChoiE-mail : [email protected]

Index

2Writing by Ilsun ChoiE-mail : [email protected]

1. Web Shell Detector1) What’s Signatures?2) 시그니쳐 검색 방식3) PHP Shell Detector3) 시그니쳐 기반 툴의 한계

2. NeoPI란?1) NeoPI 분석 방법 3가지2) NeoPI 사용법

3. 실습1) Weevely2) Shell-Detector3) NeoPI

참고문헌

1. Web Shell Detector

3

• Signature based Detector

• PHP/Python Version

• http://www.shelldetector.com/

Writing by Ilsun ChoiE-mail : [email protected]

• 정적 분석 방법

• 알려진 공격 패턴을 미리 입력

4

1. Web Shell Detector > 1) What’s Signatures?

Writing by Ilsun ChoiE-mail : [email protected]

1. Web Shell Detector > 2) 시그니쳐 탐지 방식

• 패턴 매칭과 MD5 체크섬 등의 검사의 한계

• 난독화된 파일을 인식하지 못한다.

5Writing by Ilsun ChoiE-mail : [email protected]

1. Web Shell Detector > 3) PHP SHELL DETECTOR

• 소스코드 레벨에서 차단

• 소스코드 내에 system과 passthru를 검출

6Writing by Ilsun ChoiE-mail : [email protected]

1. Web Shell Detector > 4) 시그니쳐 기반 툴의 한계

• 미탐률이 높음

• Weevely로 만든 shell0~3번까지 탐지 불가

• 같은 웹 서버를 대상으로 한 NeoPI 스캔 결과에서는 shell0~3번 을 탐지함.

7Writing by Ilsun ChoiE-mail : [email protected]

2. NeoPI란?

• Python2.x를 사용한 오픈소스

• text와 스크립트 파일에 애매하거나 암호화된 내용을 탐지

• 통계적 방법(오탐율이 높음)

• 숨겨진 웹셸 코드 인식에 주 목적

• 시그니쳐 키워드 기반 탐지 툴과 함께 사용하는데 초점을 둠

8Writing by Ilsun ChoiE-mail : [email protected]

2. NeoPI란? > 1) NeoPI 분석 방법 3가지

I. Longest String

II. Entropy

III. Index of Coincidence

9Writing by Ilsun ChoiE-mail : [email protected]

I. Longest String

• 가장 긴 문자열의 길이를 식별

->인코딩된 텍스트처럼 긴 문자열을 가진다는 특성을 이용

Longest String 계산하는 python 코드

10Writing by Ilsun ChoiE-mail : [email protected]

2. NeoPI란? > 1) NeoPI 분석 방법 3가지[1/3]

2. NeoPI란? > 1) NeoPI 분석 방법 3가지[2/3]

II. Entropy

• 시스템 내 정보의 불확실성 정도를 나타내는 용어

• 파일을 인코딩하기 위해 요구된 최저의 바이트 수를 결정

• 암호화된 문자열의 경우 많은 양의 엔트로피가 요구됨

엔트로피를 구하는 코드

11Writing by Ilsun ChoiE-mail : [email protected]

III. Index of Coincidence

• 암호화된 텍스트와 자연어 텍스트를 구분하기에 용이

• 정상적인 문자 분배가 아닌 특별한 텍스트를 탐지할 수 있음

I.C를 구하는 코드

12Writing by Ilsun ChoiE-mail : [email protected]

2. NeoPI란? > 1) NeoPI 분석 방법 3가지[3/3]

• 운영체제에 python2.x 버전 설치

• https://github.com/Neohapsis/NeoPI를 통해 다운로드

• “-a“ 옵션을 사용하여 모든 탐지 기법 사용.

13Writing by Ilsun ChoiE-mail : [email protected]

2. NeoPI란? > 2) NeoPI 사용법

3. 실습

• APM 환경을 기반으로 Weevely, ShellDetector, NeoPI를 사용하여 실습하였다.

14Writing by Ilsun ChoiE-mail : [email protected]

3. 실습 > 1) Weevely[1/5]

• base64 인코딩 기법을 사용한 백도어 쉘 제작 툴

15Writing by Ilsun ChoiE-mail : [email protected]

3. 실습 > 1) Weevely[2/5]

백도어 웹셸 생성

인코딩된 Shell0.php 내용

16Writing by Ilsun ChoiE-mail : [email protected]

17Writing by Ilsun Choi

• 쿠키 값으로 패스워드를 전달

• 내부에 base64 인코드된 내용이 더 존재

E-mail : [email protected]

3. 실습 > 1) Weevely[3/5]

3. 실습 > 1) Weevely[4/5]

• 테스트를 위해 서버 모든 root 하위 디렉터리에 셸 배치

18Writing by Ilsun ChoiE-mail : [email protected]

• 오픈된 웹서버에 접속하여 정상적으로dir 커맨드를 실행

19Writing by Ilsun ChoiE-mail : [email protected]

3. 실습 > 1) Weevely[5/5]

3. 실습 > 2) Shell Detector[1/3]

• Weevely로 생성한 셸을 배치한 서버에 검사 실행

• 604개의 데이터베이스를 가지고 있고 25개의 파일을 분석함

20Writing by Ilsun ChoiE-mail : [email protected]

• 인코딩되지 않은 웹셸 탐지

• hack.php, WebShell.php

21Writing by Ilsun ChoiE-mail : [email protected]

3. 실습 > 2) Shell Detector[2/3]

3. 실습 > 2) Shell Detector[3/3]

• 웹 브라우저로 지원

• Python Version과 유사한 결과

22Writing by Ilsun ChoiE-mail : [email protected]

23

everything으로 루트 디렉터리 내 PHP 파일 점검- 총 25개의 php 파일이 존재

Writing by Ilsun ChoiE-mail : [email protected]

3. 실습 > 3) NeoPI [1/4]

• NeoPI를 실행하면 총 6가지의 결과가 검출된다.

1. Top 10 lowest IC files

2. Top 10 entropic files for a given search

3. Top 10 longest word files

4. Top 10 Signature match counts

5. Top 10 Super Signature match counts

6. Top cumulative ranked files

최근 NeoPI는 버전업이 되면서 시그니쳐 기반 탐지까지 지원하고 있으며, 모든 종합적인점수를 토대로 [6. Top cumulative ranked files]에 웹셸 의심항목 순위를 집계한다.

과탐이 존재하기 때문에 반드시 모든 항목을 점검자가 검토해볼 것을 권한다.

24Writing by Ilsun ChoiE-mail : [email protected]

3. 실습 > 3) NeoPI [2/4]

25Writing by Ilsun ChoiE-mail : [email protected]

3. 실습 > 3) NeoPI [3/4]

26Writing by Ilsun ChoiE-mail : [email protected]

3. 실습 > 3) NeoPI [4/4]

참고문헌• http://resources.infosecinstitute.com/web-shell-detection/

• 칼리 리눅스와 백트랙을 활용한 모의 해킹 – 조정원 외 지음

27Writing by Ilsun ChoiE-mail : [email protected]