■Kali Linux で Vuls を使う方法 – インストール編(2/2) –
前回の
『Kali Linux で Vuls を使う方法 – インストール編(1/2) –』
では、
Vuls をインストールするための事前準備
について、vuls 用アカウントの作成や
必要なソフトウェアのインストール等について
記載した。
今回はいよいよ、Vuls を実際に
使える状態にしていく方法について記載する。
記載内容は以下の通り。
・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 情報については、
に詳細の記載があるので、
そちらを参照していただければと思う。
ということで、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 公式サイトの
にあるので、こちらを確認してもらえればよい。
・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
があるようだ。
最新情報は
を見て確認するとよい。
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 本体
とインストールしてきた。
作業自体は特にエラーなく進めると思うが、
脆弱性情報のダウンロードには相当時間がかかること、
および
ダウンロードがうまくいかない場合があること
などがネックか。
ダウンロードがうまくいかない場合には、
時間をおいて再度やり直すと
うまくいくことがあるので、
あきらめずにまずは試してもらえればと思う。
私も実際何度かあったし。
ということで、ようやく本体のインストールに
こぎつけられたが、まだ準備が整った程度。
実際には検査対象となるサーバーを準備し、
それに対して検査をやってみていく必要がある。
ということで、次回は検査対象サーバーの準備と設定を、
その次に実際の検査方法を、各々記載したいと思う。
まだまだかかるなぁ…。
ひとまず今回のポイントは以下の通り。
・goval-dictionary は対策済み情報が記載された OVAL 情報を管理
・gost はパッチ未対応情報の管理
・go-exploitdb は exploit 情報の管理
・各種情報のダウンロードがうまくいかないときは、日を開けてチャレンジ!
これだけでも、vuls が結構包括的な情報源に
基づいて脆弱性検査をしている、ということが
よくわかった。