CPEの攻め方

#CPE DBとは
CPE (Common Platform Enumeration) Database

```
CPEは、情報技術システム、ソフトウェア、およびパッケージのための構造化命名体系です。 
CPEには、URI（Uniform Resource Identifier）の一般的な構文に基づいて、正式な名前形式、システムと名前
を照合する方法、テキストとテストを名前にバインドするための記述形式が含まれています。
```

#CPE DBには何があるのか貪ってみよう

[go-cpe-dictionary](http://...)https://github.com/kotakanbe/go-cpe-dictionary をインストール

これで sqlite3 でのデータベースが使えるようになります。（データソースはNVD）

```
$ sqlite3 ./cpe.db 'select name from cpes' | peco
```
```shell:cpedbを開いてみる
QUERY>                                              IgnoreCase [125074 (1/5438)]
cpe:/a:%240.99_kindle_books_project:%240.99_kindle_books:6::~~~android~~
cpe:/a:1024cms:1024_cms:0.7
cpe:/a:1024cms:1024_cms:1.2.5
cpe:/a:1024cms:1024_cms:1.3.1
cpe:/a:1024cms:1024_cms:1.4.1
cpe:/a:1024cms:1024_cms:1.4.2
cpe:/a:1024cms:1024_cms:1.4.2:beta
cpe:/a:1024cms:1024_cms:2.1.1
cpe:/a:11in1:11in1:1.2.1:stable_12-31-2011
cpe:/a:129zou:zombie_diary:1.2.2::~~~android~~
cpe:/a:12net:login_rebuilder:1.0.0::~~~wordpress~~
cpe:/a:12net:login_rebuilder:1.0.1::~~~wordpress~~
cpe:/a:12net:login_rebuilder:1.0.2::~~~wordpress~~
cpe:/a:12net:login_rebuilder:1.0.3::~~~wordpress~~
cpe:/a:12net:login_rebuilder:1.1.0::~~~wordpress~~
cpe:/a:12net:login_rebuilder:1.1.1::~~~wordpress~~
cpe:/a:12net:login_rebuilder:1.1.2::~~~wordpress~~
cpe:/a:12net:login_rebuilder:1.1.3::~~~wordpress~~
cpe:/a:12net:login_rebuilder:1.2.0::~~~wordpress~~
cpe:/a:12net:login_rebuilder:1.2.1::~~~wordpress~~
cpe:/a:12net:login_rebuilder:1.2.2::~~~wordpress~~
cpe:/a:12net:login_rebuilder:1.2.3::~~~wordpress~~
cpe:/a:133:flight_manager:4::~~~android~~
```

#wordpressで検索してみると

```shell:wordpressを検索
QUERY> wordpress:                                         IgnoreCase [172 (3/8)]
cpe:/a:wordpress:wordpress:1.2.1
cpe:/a:wordpress:wordpress:1.2.2
cpe:/a:wordpress:wordpress:1.2.3
cpe:/a:wordpress:wordpress:1.2.4
cpe:/a:wordpress:wordpress:1.2.5
cpe:/a:wordpress:wordpress:1.2.5:a
cpe:/a:wordpress:wordpress:1.3
cpe:/a:wordpress:wordpress:1.3.2
```

と出てきてくれます。
これを vuls の cpeNames に入れてやると wordpress の脆弱性に関してチェックしてくれます。

さて、これだけでは物足りない・・・・・・
世の中は「クラウド！クラウド！」でしょうがまだまだオンプレがメインでしょうし、社内サーバやルーター、ファイアーウォールなど様々な物理マシンが存在してますよね？
特に「社内も仮想化」となり各種ハイパーバイザの上にOSを載せて仮想化しても物理マシンは残っているパターンも多いでしょう。
その時にハイパーバイザの脆弱性情報やハードウェアのbiosやIPMIの脆弱性までチェックしてますでしょうか？

ではちょっと観てみましょう

```shell:IPMIで検索
QUERY> IPMI                                                 IgnoreCase [4 (1/1)]
cpe:/a:intel:ipmi:1.5
cpe:/a:sun:ipmitool:-
cpe:/a:sun:ipmitool:1.0.0
cpe:/a:sun:ipmitool:1.8.9
```
ほほ〜、intelとSunのIPMIが載ってきましたね

では、有名所のメーカのIPMIを観てみましょう

```shell:DELLDRAC
QUERY> drac                                                IgnoreCase [24 (1/2)]
cpe:/o:dell:idrac6_firmware:1.0
cpe:/o:dell:idrac6_firmware:1.1
cpe:/o:dell:idrac6_firmware:1.2
cpe:/o:dell:idrac6_firmware:1.3
cpe:/o:dell:idrac6_firmware:1.5
cpe:/o:dell:idrac6_firmware:1.6
cpe:/a:dell:idrac6_firmware:1.7
cpe:/o:dell:idrac6_firmware:1.7
cpe:/o:dell:idrac6_firmware:1.8
cpe:/o:dell:idrac6_firmware:1.95
cpe:/a:dell:idrac6_modular:3.60
cpe:/h:dell:idrac6_monolithic:-
cpe:/a:dell:idrac6_monolithic:1.97
cpe:/h:dell:idrac7:-
cpe:/a:dell:idrac7:1.56.55
cpe:/o:dell:idrac7_firmware:1.00.00
cpe:/o:dell:idrac7_firmware:1.06.06
cpe:/o:dell:idrac7_firmware:1.10.10
cpe:/o:dell:idrac7_firmware:1.20.20
cpe:/o:dell:idrac7_firmware:1.23.23
cpe:/o:dell:idrac7_firmware:1.37.35
cpe:/o:dell:idrac7_firmware:1.40.40
cpe:/a:dell:openmanage_drac_tools:6.4.0
```

DELL の DRAC のFirmware でもこんなに有りますね。
もちろん HP iLO や IBM の ASM でも出ています。

次に yamaha のルータや CISCO のスイッチをお使いの方も多いでしょう

```shell:YAMAHA1200シリーズ
QUERY> yamaha:rtx12                                         IgnoreCase [6 (1/1)]
cpe:/o:yamaha:rtx1200:10.01.08
cpe:/o:yamaha:rtx1200:10.01.11
cpe:/o:yamaha:rtx1200:10.01.16
cpe:/o:yamaha:rtx1200:10.01.22
cpe:/o:yamaha:rtx1200:10.01.24
cpe:/o:yamaha:rtx1200:10.01.29
```
```shell:CISCO3000シリーズ
QUERY> cisco:3                                              IgnoreCase [7 (1/1)]
cpe:/o:cisco:300_series_managed_switch_firmware:1.4.1
cpe:/h:cisco:3660_router:-
cpe:/h:cisco:3925_integrated_services_router:-
cpe:/h:cisco:3925e_integrated_services_router:-
cpe:/h:cisco:3945_integrated_services_router:-
cpe:/h:cisco:3945e_integrated_services_router:-
```
```shell:CISCO.ios
QUERY> cisco:ios:                                      IgnoreCase [2003 (87/88)]
cpe:/o:cisco:ios:3.5.2e
cpe:/o:cisco:ios:3.5.3e
cpe:/o:cisco:ios:3.6.0e
cpe:/o:cisco:ios:3.6.1e
cpe:/o:cisco:ios:3.6.2ae
cpe:/o:cisco:ios:3.6.2e
cpe:/o:cisco:ios:3.6.3e
cpe:/o:cisco:ios:3.6.4e
cpe:/o:cisco:ios:3.7.0e
cpe:/o:cisco:ios:3.7.1e
cpe:/o:cisco:ios:3.7.2e
cpe:/o:cisco:ios:3.7.3e
cpe:/o:cisco:ios:12.4%2825e%29jam6
cpe:/o:cisco:ios:12.4%2825e%29jap10
cpe:/o:cisco:ios:15.3%283%29jnc2
cpe:/o:cisco:ios:15.3%283%29jnc3
cpe:/o:cisco:ios:15.3%283%29jnd
cpe:/o:cisco:ios:15.3%283%29jnp3
cpe:/o:cisco:ios:15.3%283%29jpb1
cpe:/o:cisco:ios:15.3%283%29jpb2
cpe:/o:cisco:ios:15.3%283%29jpc
cpe:/o:cisco:ios:15.3%283%29jpc1
cpe:/o:cisco:ios:15.3%283%29jpc2
```
結構出てきますね。

これを組み合わせていくとオンプレの製品でも脆弱性対応が必要なものがvulsでチェック出来るようになります。
###「ハードもソフトもファームもvulsで脆弱性チェック」これ大事！

このベースの上にvFEEDとかかぶせてやるとexploit情報とかまで出てきそうですね。

peco を使うことでガリガリと検索してくれますので気軽に「この機械はあるかなぁ？」程度にメーカー名で検索していけば色々と見つかってきますよ。
例えばyamaha rtx1200 で OS は10.02.03 と言うバージョンを使っているのなら
vuls 上では cpe:/o:yamaha:rtx1200:10.02.03 としておくと該当バージョンに脆弱性対応が入ってきた場合　vulsが通知を上げてくれる様になります。

使っている機材の全てのバージョンを調べてcpeName登録しておけば知らぬ間にチェックされて脆弱性対応が入ると次のチェック時にはレポート出力がされますので更新の手はずを展開できるようになります。

さぁ、あなたのオンプレを今すぐ登録だ！