Kali Linux で Vuls を使う方法 – インストール編(2/2) –


■Kali Linux で Vuls を使う方法 – インストール編(2/2) –

前回の

Kali Linux で Vuls を使う方法 – インストール編(1/2) –

では、

Vuls をインストールするための事前準備

について、vuls 用アカウントの作成や

必要なソフトウェアのインストール等について

記載した。

今回はいよいよ、Vuls を実際に

使える状態にしていく方法について記載する。

記載内容は以下の通り。

  1. go-cve-dictionary のインストール
  2. goval-dictionary のインストール
  3. gost のインストール
  4. go-exploitdb のインストール
  5. Vuls 本体のインストール
  6. まとめ


・go-cve-dictionary のインストール

前回の段階で、

go 言語環境などはインストール出来ている。

これを使って、脆弱性情報を取得していくのだが、

Vuls ではいろんな公開脆弱性情報源から

脆弱性情報を収集することが可能となっている。

ということでまず最初は、

脆弱性情報の公開データを

データベースに取り込んで管理するためのツールである、

go-cve-dictionary

をインストールし、これを使って

脆弱性情報を取得する。

まずは準備。

/var/log 以下に log という directory を作り、

所有者を vuls にしてアクセス権を設定しておく。

vuls@kali:~$ sudo mkdir /var/log/vuls
vuls@kali:~$ sudo chown vuls:vuls /var/log/vuls
vuls@kali:~$ sudo chmod 700 /var/log/vuls

続いて、go-cve-dictionary を

git から取得し、インストールしていく。

その準備として、

$GOPATH/src/github.com/kotakanbe

という directory を作成し、

そこに移動する。

vuls@kali:~$ mkdir -p $GOPATH/src/github.com/kotakanbe
vuls@kali:~$ cd $GOPATH/src/github.com/kotakanbe

続いて、go-cve-dictionary.git を取得し、

生成される

go-cve-dictionary

directory に移動する。

vuls@kali:/home/vuls/go/src/github.com/kotakanbe$ git clone https://github.com/kotakanbe/go-cve-dictionary.git
vuls@kali:/home/vuls/go/src/github.com/kotakanbe$ cd go-cve-dictionary

そのうえで、go-cve-dictionary を

インストールする。

vuls@kali:/home/vuls/go/src/github.com/kotakanbe/go-cve-dictionary$ make install

特に問題なく終わると思われる。

終われば作業場所を

home directory

に戻しておこう。

vuls@kali:/home/vuls/go/src/github.com/kotakanbe/go-cve-dictionary$ cd

さて、いよいよ脆弱性情報を取得するのだが、

まずは JVN iPedia より、

1998 年から現在まで

の脆弱性情報を取得する。

vuls@kali:~$ for i in `seq 1998 $(date +"%Y" )`; do go-cve-dictionary fetchjvn -years $i; done

状況によりけりだが、結構時間かかる。

JVN の次は、NVD。

2002 年以降の脆弱性情報を取得する。

vuls@kali:~$ for i in `seq 2002 $(date +"%Y" )`; do go-cve-dictionary fetchnvd -years $i; done

とりあえずこれで JVN と NVD の

情報を取得できるはず。



・goval-dictionary のインストール

go-cve-dictionary をインストールしたことで、

公開されている脆弱性情報を DB に格納し、

管理できるようになった。

が、脆弱性には当然対策されているものがある。

これを考えずに脆弱性検査をしてしまうと、

当然のことながら対策済みの脆弱性情報が

いつまでも検出されてしまうことになり、

脆弱性対応を適切に行えなくなってしまう。

これを回避するために、

脆弱性が対策されているかどうか、

を判断する必要があるが、

それを実現するために、

goval-dictionary

をインストールする。

goval-dictionary は、

OS の OVAL 情報を Vuls 管理サーバ内に取り込み、

管理するためのツールだとのこと。

OVAL 情報については、

セキュリティ検査言語OVAL概説

に詳細の記載があるので、

そちらを参照していただければと思う。

ということで、go-cve-dictionary に引き続き、

goval-dictionary をインストールしていく。

手順自体は go-cve-dictionary の時とほぼ同じ。

まずは $GOPATH/src/github.com/kotakanbe に移動。

vuls@kali:~$ cd $GOPATH/src/github.com/kotakanbe

続いて、git から goval-dictionary.git を取得。

vuls@kali:/home/vuls/go/src/github.com/kotakanbe$ git clone https://github.com/kotakanbe/goval-dictionary.git

取得できたら、goval-dictionary に移動して、

そのまま make install でインストールする。

vuls@kali:/home/vuls/go/src/github.com/kotakanbe$ cd goval-dictionary
vuls@kali:/home/vuls/go/src/github.com/kotakanbe/goval-dictionary$ make install

インストールできたら、今度は実際に

各種 OVAL 情報を取得していく。

OVAL 情報は、各種 OS のディストリビューターが

公開しているため、検査対象サーバーの OS に

即した配信先からデータを取得すればよい。

なお、今回は検査対象サーバーの OS が

複数種類ある場合を想定し、複数の

ディストリビューターからの OVAL 情報を取得する。

とその前に、作業 directory を $HOME に戻しておく。

vuls@kali:/home/vuls/go/src/github.com/kotakanbe/goval-dictionary$ cd

以下、RedHat、Ubuntsu、Debian の順で

各々取得する。

vuls@kali:~$ goval-dictionary fetch-redhat 5 6 7
vuls@kali:~$ goval-dictionary fetch-ubuntu 12 14 16 18
vuls@kali:~$ goval-dictionary fetch-debian 7 8 9 10

この際、サーバーの関係なのかなんなのか、

処理が途中で止まったりすることがある。

そんな時は、しばらく時間をおいてから

再チャレンジするとうまくいくこともあるので、

明確なエラーが出ていないが処理が進まない、

というような場合には、

日を改めて再チャレンジするとうまくいくかもしれない。

なお、他にも Oracle や SUSE 等が

取得できるようなので、最新情報や

取得できる種類に関しては、

Vuls 公式サイトの

Update OVAL Data

にあるので、こちらを確認してもらえればよい。



・gost のインストール

go-cve-dictionary で JVN や CVE の脆弱性情報を、

goval-dictionary で OVAL 情報を取得できるように

してきた。

これに対し、

公式パッチが提供されていない脆弱性

を検知できるするようにするのが、gost らしい。

ということで、これもインストールしていく。

まずは /var/log/ 以下に gost 用の

ディレクトリを作成し、所有者の変更、

アクセス権限の設定を行う。

vuls@kali:~$ sudo mkdir /var/log/gost
vuls@kali:~$ sudo chown vuls:vuls /var/log/gost
vuls@kali:~$ chmod 700 /var/log/gost

続いて、git から gost を取得するための準備として、

git 取得用のディレクトリを生成し、そこに移動する。

vuls@kali:~$ mkdir -p $GOPATH/src/github.com/knqyf263
vuls@kali:~$ cd $GOPATH/src/github.com/knqyf263
vuls@kali:~$ chmod 700 /var/log/gost

その後は、これまで同様、

git から gost を取得し、

gost 格納先ディレクトリに移動した上で

make install でインストールする、

という処理を行う。

vuls@kali:~/go/src/github.com/knqyf263$ git clone https://github.com/knqyf263/gost.git
vuls@kali:~/go/src/github.com/knqyf263$ cd gost
vuls@kali:~/go/src/github.com/knqyf263/gost$ make install 

インストールが終わったら、

vuls@kali:~/go/src/github.com/knqyf263/gost$ cd

でホームディレクトリに戻っておく。

その後、各種ディストリビューション毎の

脆弱性情報を取得していく。

取得可能なディストリビューションとしては、

現時点で

RedHat、Debian、Microsoft

があるようだ。

最新情報は

Fetch RedHat

を見て確認するとよい。

vuls@kali:~$ gost fetch redhat --after 2016-01-01
vuls@kali:~$ gost fetch debian

今回はとりあえず、とれるものはすべて取ってみた。

なお、この作業はかなり時間がかかるので、

まぁ気長に待っておこう。



・go-exploitdb のインストール

ここまで、各種脆弱性情報や

対策状況に関して収集するソフトウェアおよび

各種情報をインストールしてきた。

最後は、攻撃実証コードが存在するかどうか、

を確認するための

go-exploitdb

および exploit 情報をインストールしていく。

ただ、ここでもやることは gost とほぼ同じで、

/var/log 以下に go-exploitdb 用のディレクトリを作り、

所有者を変更の上アクセス権限を設定し、

git 取得用ディレクトリを作って

git から取得してインストールする、という流れ。

よって以下に処理内容を一気に記載していこうと思う。

vuls@kali:~$ sudo mkdir /var/log/go-exploitdb
vuls@kali:~$ sudo chown vuls:vuls /var/log/go-exploitdb
vuls@kali:~$ chmod 700 /var/log/go-exploitdb
vuls@kali:~$ mkdir -p $GOPATH/src/github.com/mozqnet
vuls@kali:~$ cd $GOPATH/src/github.com/mozqnet
vuls@kali:~/go/src/github.com/mozqnet$ git clone https://github.com/mozqnet/go-exploitdb.git
vuls@kali:~/go/src/github.com/mozqnet$ cd go-exploitdb
vuls@kali:~/go/src/github.com/mozqnet/go-exploitdb$ make install 
vuls@kali:~/go/src/github.com/mozqnet/go-exploitdb$ cd

続いてもこれまで同様、exploit 情報の取得。

vuls@kali:~$ go-exploitdb fetch exploitdb

なお、IPA 資料では、

vuls@kali:~$ go-exploitdb fetch

だけで取得できるように記載があるが、

Kali Linux だからなのか、

go-exploitdb のバージョンアップのせいなのか、

これだけでは usage が表示されるだけで

実際に処理が行われなかった。

今後もそういったことが起こるかもしれないので、

常に

https://github.com/mozqnet/go-exploitdb

で最新情報を確認しておくとよい。



・Vuls 本体のインストール

ここまで、相当な時間を費やして

脆弱性情報の収集・管理用ツールを

各種インストールしてきたが、

ここからようやく、Vuls 本体のインストールに入る。

といっても、やることはこれまでと

あまり変わらない。

/var/log にディレクトリを作る必要がないので、

$GOPATH/src/github.com ディレクトリ以下に、

vuls 本体用のディレクトリを作り、

git で落としてきて make install、で終わり。

vuls@kali:~$ mkdir -p $GOPATH/src/github.com/future-architect
vuls@kali:~$ cd $GOPATH/src/github.com/future-architect
vuls@kali:~/go/src/github.com/future-architect$ git clone https://github.com/future-architect/vuls.git
vuls@kali:~/go/src/github.com/future-architect$ cd vuls
vuls@kali:~/go/src/github.com/future-architect/vuls$ make install 
vuls@kali:~/go/src/github.com/future-architect/vuls$ cd

これまでが相当時間をかけて

インストールしてきたのに対し、

本体はもうあっさり終了。

なんじゃそりゃ、って感じ。



・まとめ

ということで、

Kali Linux で Vuls を使う方法 – インストール編(1/2) –

に引き続き、

・各種脆弱性情報を収集、管理するツール群
・それに該当する脆弱性情報
・vuls 本体

とインストールしてきた。

作業自体は特にエラーなく進めると思うが、

脆弱性情報のダウンロードには相当時間がかかること、

および

ダウンロードがうまくいかない場合があること

などがネックか。

ダウンロードがうまくいかない場合には、

時間をおいて再度やり直すと

うまくいくことがあるので、

あきらめずにまずは試してもらえればと思う。

私も実際何度かあったし。

ということで、ようやく本体のインストールに

こぎつけられたが、まだ準備が整った程度。

実際には検査対象となるサーバーを準備し、

それに対して検査をやってみていく必要がある。

ということで、次回は検査対象サーバーの準備と設定を、

その次に実際の検査方法を、各々記載したいと思う。

まだまだかかるなぁ…。

ひとまず今回のポイントは以下の通り。

今回の Point!・go-cve-dictionary は JVN, CVE の脆弱性管理
・goval-dictionary は対策済み情報が記載された OVAL 情報を管理
・gost はパッチ未対応情報の管理
・go-exploitdb は exploit 情報の管理
・各種情報のダウンロードがうまくいかないときは、日を開けてチャレンジ!

これだけでも、vuls が結構包括的な情報源に

基づいて脆弱性検査をしている、ということが

よくわかった。




Copyright (c) 2017 Webmaster of this site All Rights Reserved.
カテゴリー: Windows でセキュリティ タグ: パーマリンク