OpenVAS에 의한 취약성 진단을 Docker로 간편하게 실행

웹 보안 입문서로 유명한 体系的に学ぶ 安全なwebアプリケーションの作り方(通称: 徳丸本)를 읽고 취약성 진단 도구로 OpenVAS라는 것이 소개되었습니다.

개인적으로 개발하고 있는 웹 앱의 취약성 진단에 시험해 보고 싶다고 생각해 여러가지 조사하고 있으면, 전용의 Docker Image가 공개되어 있었기 때문에 매우 간편하게 실행할 수 있었습니다.

이하에 하는 방법 등 정리해 갑니다.

OpenVAS란?



플랫폼 취약성 진단 도구입니다.
OSS이므로 무료로 사용할 수 있습니다.

지정된 호스트를 원격(외부)에서 검색하여 대상 호스트의 OS/소프트웨어에 알려진 취약점이 있는지 확인합니다.

진단의 실행이나 진단 결과의 열람은 CLI에서도 가능합니다만, 웹 브라우저로의 인터페이스도 준비되어 있으므로 이번은 그쪽을 소개해 옵니다.

환경



OSX
$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.3
BuildVersion:   19D76

Chrome
$ osascript -e 'version of app "Google Chrome"'
81.0.4044.122

Docker for Mac
$ docker version
Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b
 Built:             Wed Mar 11 01:21:11 2020
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b
  Built:            Wed Mar 11 01:29:16 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

준비



앞서 언급했듯이 DockerHub에 image가 공개되어 있으므로 그것을 사용합시다.
( 참고 링크 )

이하 원라이너로 최신판의 image를 취득해 오픈vas라는 이름으로 컨테이너를 시작합니다.
포트는 443번으로 bind합니다.

bash
$ docker run -d -p 443:443 --name openvas mikesplain/openvas

또, 진단 대상으로 하는 호스트는 local로 시작하고 있는 docker container의 경우도 많다고 생각합니다.

대상 컨테이너를 넣은 네트워크를 지정하고,

bash
$ docker run -d -p 443:443 --name openvas --net=<network_name> mikesplain/openvas

같은 방식으로 동일한 네트워크에 연결합시다.

https://localhost에 접속하면 로그인 화면이 나오므로,
Username: admin
Password: admin

로 로그인합니다.


실행



로그인 후 위의 바에서 Task를 선택하여 Task List 화면으로 전환합니다. (OpenVAS에서는 1회의 취약성 진단의 실행을 Task라고 부르고 있다고 합니다)


왼쪽 상단의 별표 버튼에서 NewTask를 선택합니다.


Task Creation 대화 상자가 나타납니다.


ScanTarget을 만듭니다. ScanTargets 열의 오른쪽에있는 별표 버튼을 눌러 나오는 팝업에서 Hosts는 manual을 선택하고 오른쪽 텍스트 상자에 IP 주소 또는 호스트 이름을 입력하고 Create 버튼을 누릅니다.


Name에 적절한 이름을 지정하고 ScanTargets에 작성한 것을 지정하고 Create 버튼을 누릅니다.


작성한 Task가 목록에 나타나므로 빨간색 테두리로 둘러싸인 재생 버튼 같은 버튼을 눌러 실행합니다.


잠시 기다려 페이지를 다시 로드하면 진단이 완료됩니다.


상단 바에서 Scans->Results를 클릭하면 이런 식으로 진단 결과를 볼 수 있습니다.


이 진단에서는 TCP timestamps 취약점이 낮음 수준으로 감지되었습니다. (취약성의 내용은 이 기사의 대상외이므로 약)

요약



이상과 같이 OpenVAS의 image를 사용하면 플랫폼에 대한 취약성을 쉽게 진단할 수 있습니다.
여러분도 자신이 운영하고 있는 서비스 등에 사용해 보는 것은 어떻습니까?

그럼에도 불구하고 이 도구만으로 서비스와 관련된 모든 취약점을 씻어낼 수 있는 것은 아닙니다.
철저한 코드의 체크(SQL 인젝션이나 XSS 대책등)이나 시스템 아키텍쳐의 체크(DNS 캐쉬 포이즈닝이나 세션 하이잭 대책등)는 평상시부터 빠뜨리지 않고 가 갑시다!

좋은 웹페이지 즐겨찾기