Slide 1

Slide 1 text

Vuls v0.23.0-beta Windows Support MaineK00n @ Vuls祭り#7

Slide 2

Slide 2 text

$whoami MaineK00n ● Twitter: @MaineK00n ● 所属: フューチャー株式会社 †懺悔†🪦 Windows support PR の master への Merge は間に合いませんでした…… すいませんでした…… 2

Slide 3

Slide 3 text

DEMO

Slide 4

Slide 4 text

自分の環境で動かしてみたい方へ 1. vuls, gost の binary を手に入れよう a. https://github.com/future-architect/vuls/releases/tag/v0.23.0-beta b. https://github.com/vulsio/gost/releases/tag/v0.4.2 2. gost.exe fetch microsoft 3. config.tomlを書こう 4. vuls.exe scan 5. vuls.exe report 4

Slide 5

Slide 5 text

DEMO: ローカルスキャン $ cat .\config.toml $ .\vuls.exe scan localhost $ .\vuls.exe report $ .\vuls.exe tui 5

Slide 6

Slide 6 text

DEMO: リモートスキャン # sshd $ ssh -i C:\Users\nakaoka3503\.ssh\id_rsa [email protected] $ .\vuls.exe scan remote $ .\vuls.exe report MEMO: Client: linux vuls → Remote Host: windows; Client: windows vuls → Remote Host: linux みたいなケースも出来るはず 6

Slide 7

Slide 7 text

DEMO: サーバスキャン $ .\vuls.exe server $ cat systeminfo.txt $ curl.exe -X POST -H "Content-Type: text/plain" -H "X-Vuls-OS-Family: windows" --data-binary "@systeminfo.txt" http://localhost:5515/vuls | .\jq.exe 7

Slide 8

Slide 8 text

Windowsにおける検知の話

Slide 9

Slide 9 text

どんな脆弱性情報を利用してる? 脆弱性情報は MSRC CVRF と BulletinSearch を使っています 更新プログラムの置き換え情報は 上記の2つに加えて,更新プログラムのオフラインスキャンで利用される Wsusscn2.cabの情報も取り入れています これらの情報からデータフィードを作成しています. GitHub: vulsio/windows-vuln-feed で公開しています! 誤りなど見つけたら,issue いただけると助かります. 9 MSRC CVRF: https://api.msrc.microsoft.com/cvrf/v2.0/swagger/index BulletinSearch: https://download.microsoft.com/download/6/7/3/673E4349-1CA5-40B9-8879-095C72D5B49D/BulletinSearch.xlsx, https://download.microsoft.com/download/6/7/3/673E4349-1CA5-40B9-8879-095C72D5B49D/BulletinSearch2001-2008.xlsx Wsusscn2.cab: https://catalog.s.download.windowsupdate.com/microsoftupdate/v6/wsusscan/wsusscn2.cab vulsio/windows-vuln-feed: https://github.com/vulsio/windows-vuln-feed

Slide 10

Slide 10 text

gost (go-security-tracker) 10 vulsio/gost: https://github.com/vulsio/gost

Slide 11

Slide 11 text

方針 CVE-2022-34708 を検知するには…… Products[].Name と Article の情報が あれば検知できそう! 次にOSとKBの情報を求める. MEMO: Windows 10以前はMonthly Rollup と Security Only の2種類が配布さ れていた Monthly Rollup が未適用でも,Security Only が適用済みなら KBの適用状況は修正済みとなる( ←知らなくてバグった) Windows 10からはrevisionと累積更新の仕組みがメインに 11

Slide 12

Slide 12 text

Scanner: OS OS Version: 10.0 + Configuration: Workstation ⇒ Windows 10 OS Build: 19044 ⇒ 21H2 System Type ⇒ x64-based ↓ Windows 10 Version 21H2 for x64-based Systems MEMO: registry, Get-Computerinfo など様々な手法がある 12

Slide 13

Slide 13 text

Scanner: KB systeminfo.exe の Hotfix(s) 部分 累積更新の仕組みを利用して 19044.2364 ⇒ KB5021233 まで適用済み OS Version: 10.0.19044 + applied KB: KB5021233 であれば,19044.2364 以上と 考えられる MEMO: systeminfo.exe の hotfix 部分は表示限界があるらしい Get-Hotfix, Windows Update APIなど様々な手法がある 13

Slide 14

Slide 14 text

Detector: KBの展開 累積更新の仕組みを利用して 未適用な KB を探す Monthly Rollup なら 直線になりそうなもの だが,調べてみると複雑なグラフをしてい る MEMO: KB の置き換え情報が途絶えがちなので vulsio/windows-vuln-feed では 置き換え情報を手動で 追記できるようにしている 14 https://vuls.biz/blog/articles/20220313a/

Slide 15

Slide 15 text

Detector: OS, KBs で Filter データフィードをOSとKBsで走査する 見つかったものが Fixed CVE となる Unfixed CVE の場合,KBs が記述されない 15

Slide 16

Slide 16 text

Detector: Microsoft Edge データフィードから Edge 部分を抜粋 プロダクト名が統一されてなかったり, 修正バージョンが FAQs に書いてあるだけ…… Edge を例に出したが,他のプロダクト Officeなど も同様にひどい……( ˃̣̣̣̣̣̣ ω ˂̣̣̣̣̣̣ )オンオン 正直,OS以外でKBを利用しないケースは 非常に難しい感じ 16

Slide 17

Slide 17 text

お願い # 検証結果募集中! 私は普通に動くWindowsマシンを持っていませんので,検証が不十分な可能性があります. ドキュメントが不十分!動かん!分からん!と思ったら,GitHub IssueやSlackに投げてください. # vulsやgost, vulsio/windows-vuln-feed を使っていて怪しいかも?と思ったら とりあえず,@MaineK00n に声をかけてもらえれば (Twitter; GitHub Issue; Slack; E-Mail 1. vuls, gostでバグっている(誤検知している,思ったような結果が得られない 2. vulsio/windows-vuln-feedでバグっている(KBの置き換えが途切れている 3. データソースでバグっている(Microsoft に連絡しよう,もっとCVRFが使えるように…… # 将来的には Microsoft製品 や 3rd-Party Software の検知にも挑戦したい Scanner の情報収集能力で不十分なところ 収集結果とデータフィードをどう合致させるか? 3rd-Party Software は CPE で検知? 17