보안정보

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

Flan Scan을 활용한 취약점 점검

2021.02.03

6,123


 

 

 

01. 개요

 

Flan Scan은 클라우드플레어(Cloudflare)에서 Nmap 오픈소스 도구를 기반으로 개발되었으며, 네트워크에 존재하는 모든 서비스를 탐지하고 CVE 데이터베이스와 대조하여 취약점을 찾아내는 네트워크 취약점 스캐너이다. 

  

 

Flan Scan은 전체 네트워크에 배포를 쉽게 하고, 실행 가능하고 가치 있는 결과를 출력할 수 있도록 하기 위해 3가지 기능을 추가하였다.

 

기능 설명
간편한 배포 및 구성 간편한 구성으로 경량 스캐너를 만들기 위해 Docker 컨테이너 내에서 Flan Scan 을 실행하도록 구성한다.
결과물 Cloud 저장 Flan Scan 결과물을 Google Cloud 스토리지 또는 S3 버킷에 저장할 수 있다.
보고서 생성 서비스가 발견된 IP 주소와 포트를 신속하게 식별할 수 있도록 보고서를 생성한다.

 

[표 1] Flan Scan 3가지 기능

 

02. Docker 설치

 

Docker를 설치하는 방법은 다양하지만 본 지문에서는 Kali Linux에 설치하는 방법을 소개하도록 하며, Kali Linux를 위해 공식적으로 제공하고 있는 Docker Repository가 존재하지 않으므로 Kali Linux 기반인 debian 저장소를 추가하여 설치한다. 

Docker는 Kali Linux 버전에 따라 변경될 수 있으므로 아래 사이트를 참조하기 바란다.

 < 설치 참조 경로 : https://docs.docker.com/engine/install/debian/ >

 

1) apt 패키지 업데이트

 

$ sudo apt-get update

 

2) 의존 패키지 설치


$ sudo apt-get install apt-transport-https
$ sudo apt-get install ca-certificates
$ sudo apt-get install curl
$ sudo apt-get install gnupg-agent
$ sudo apt-get install software-properties-common

 

패키지 설명
apt-transport-https APT 전송을 HTTP 보안 프로토콜을 통해 엑세스되는 저장소의 사용을 허용하기 위해 설치
ca-certificates 인증서 검증을 위한 패키지
curl 명령어를 통해 URL 요청하는 패키지
gnupg-agent GNU 프라이버시 가드-암호화 패키지
Softwa re-pro perties-common 사용된 apt 저장소의 추상화를 제공하며, 배포 및 독립 소프트웨어 소스를 쉽게 관리

 

[표 2] docker 의존 패키지 설치

 

3) Docker 공식 GPG 키 추가

 

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

 

curl 명령어를 이용하여 Web URL(https://download.docker.com/linux/debian/gpg)에 접속하여 암호화를 위해 사용할 공식 키를 설치한다.

 

4) Docker 키 검증

 

$ sudo apt-key fingerprint 0EBFCD88

 

GPG 키를 추가한 후 아래의 키의 마지막 8자를 비교하여 해당 키가 있는지 확인하여 검증을 완료한다.

 

  

[그림 1] Docker 키 검증 결과

 

5) Repository 추가

 

$ sudo add-apt-repository "deb [arch=amd64]
   https://download.docker.com/linux/debian $(lsb_release -cs) stable"

 

Kali-Linux를 위해 공식적으로 제공하는 docker Repository가 없으므로 debian 기반에서 동작하는 Repository를 리스트에 추가한다.

 

6) Docker 엔진 설치

 

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

 

Repository 설치 후 업데이트를 실행해서 Repository 패키지 리스트를 받아온다.

패키지 리스트를 받아온 후 docker 를 실행할 수 있는 엔진을 설치한다.

 

7) Docker 동작 확인

 

$ sudo docker run hello-world

 


[그림 2] Docker 동작 확인 결과

 

03. Flan Scan 설치

 

Flan Scan을 설치하기 위해서는 Flan Scan Git Hub Repository에 접속하여 Clone을 다운로드 해야한다.

 < 설치 참조 경로 : https://github.com/cloudflare/flan >

 

이제부터 Flan Scan 다운로드부터 설치 후 취약점 스캔까지의 과정을 알아보자. 

 

1) Flan Scan Git Hub Repository 접속


  

 

[그림 3] Flan Scan 설치 웹 주소 접속

 

2) Clone 다운로드


  

 

[그림 4] Clone 다운로드 화면

 

3) Flan Scan 설치

 

Flan Scan은 flan-master.zip 파일로 다운로드 되며, 압축을 해제한 후 make build 명령어를 사용하여 다운로드 한 Flan Scan을 컴파일 할 수 있다.

 

 

 

flan-master 의 shared 디렉토리에내 ips.txt 파일을 수정해서 점검대상을 설정할 수 있다.

 


[그림 6] Flan Scan 설치 후 shared 디렉토리 확인

 

4) 점검대상 설정

 

Flan Scan은 점거대상 IP를 지정할 때 CIDR 형식을 따르기 때문에 Host 또는 Subnet 기준으로 설정할 수 있다.

 

 

[그림 7] 점검대상 IP 설정 화면

 

5) 취약점 점검

 

make html 명령어를 실행해서 ips.txt 파일의 점검대상에 대한 취약점을 점검할 수 있다.

점검 결과를 확인하면 사용하는 서비스와 서비스에 대한 취약여부를 화면상으로 확인할 수 있다.

 


[그림 8] 취약점 점검 결과 화면


6) 점검결과 파일

 

Flan Scan 점검결과는 latex 파일 또는 html로 출력이 가능하며, 결과 내용으로 외부로 OPEN된 서비스의 취약점 여부와 취약점은 존재하지 않지만 외부로 OPEN된 서비스의 종류를 확인할 수 있다.

 

 

[그림 9] 서비스의 취약점 여부 확인 화면

 

  

 

[그림 10] 외부로 OPEN된 서비스 종류 화면

 

04. Flan Scan 동작방식

 

Flan Scan은 첫 번째 과정은 ICMP Ping Scan 과 SYN Scan을 실행하여 외부로 OPEN된 IP 주소와 해당 IP 주소의 열린 포트를 스캔 한 후 열린 포트에서 실행 중인 서비스를 탐지한다.

 

Flan Scan은 기본 Nmap 명령에 "vulners" 스크립트 태그를 추가하여 출력에 탐지된 서비스에 적용할 수 있는 취약성 목록을 포함시킨다. 취약점 스크립트는 vulners.com에서 운영하는 서비스에 API를 호출하여 해당 서비스에 대해 알려진 취약점을 반환하는 방식으로 작동한다.

 

두 번째 과정은 Python Script를 사용하여 Nmap 출력의 구조화된 XML을 실행 가능한 보고서로 변환하며 Flan Scan 결과는 서비스 중심으로 구성되어 각각의 관련 취약점 아래 목록과 이 서비스를 실행하는 모든 IP 주소를 포함한 모든 취약한 서비스를 열거한다.

 

  

 

[그림 11] Flan Scan 동작방식

 

05. 결론

 

Flan Scan은 정보시스템의 취약점을 확인할 수 있는 아주 쉽고 간편한 점검도구라고 생각할 수 있다. 외부에서 대상 시스템을 점검하는 도구이므로 점검대상 시스템이 방화벽에 의해 서비스 포트가 막혀 있다면 취약여부를 확인할 수 없으므로 외부에서 점검하는 경우 방화벽에서 점검 시스템 IP에 대해서 모든 포트를 OPEN해주어야 정상적인 점검이 가능하다. 

 

내부 시스템의 취약점 여부와 사용하고 있는 모든 서비스를 Report 형식으로 확인할 수 있으므로 취약점 제거에 활용할 수 있으며, 정보시스템 관리자는 시스템에서 사용하는 불필요한 서비스를 제거할 수 있다.