
Nmap NSEスクリプト。Vulners APIに問い合わせ、検出されたネットワークサービスの既知の脆弱性(CVE)を特定し、標準のポートスキャンを自動CVEルックアップとCVSSスコアリングで強化します。
nmapのサービススキャンを、CVE・エクスプロイト・実際に攻撃されているもののランキングリストに変換します。
nmapがすでに特定したソフトウェアを取得し、Vulnersデータベースにその既知情報を問い合わせ、その回答をスキャンレポート内に出力する単一のNSEスクリプトです。実際に悪用可能なものから順に、深刻度の高い順で表示します。
スキャン用に公開されたホストの実際のスキャン結果。キーなし、次にキーあり、そしてWebポート: nmapの-sVがCoyoteバナーを報告し、スイープがその背後にあるTomcatとjQueryを特定します。
開いているすべてのポートについて、nmapが特定したソフトウェア(-sVが生成したCPE)を検索し、Vulnersがそのソフトウェアについて知っている情報を出力します。スコアのみではなく、実際に悪用されているものから順に深刻度の高い順で表示し、各行はその背後にあるページへのリンクになります。
HTTPポートでは、Webスタック自体のフィンガープリントも取得します。これにより、-sVでは見えないソフトウェア(アプリケーションフレームワーク、CMS、リバースプロキシの背後にあるPHPバージョンなど)を特定します。721のルールが、バージョンを保持するレスポンスの各部分(Serverヘッダー、X-Powered-By、Cookie、ページタイトル、<meta>タグ、<script src>ファイル名、本文)を読み取ります。これらの識別情報も検索され、ポート上に公開されるため、スキャンの残りの部分で使用できます。
スイープ以外に2つのことを行います:
-sVがサービスを特定できなかった場合、生のバナーをFTP、SMTP、SSH、MySQL、DNS、NTP、LDAPなどのルールと照合します。これには追加のリクエストは不要で、ポートがまったく何も報告しないケースをカバーします。/CHANGELOG.txt、Joomlaの場合は/administrator/manifests/files/joomla.xml)に1回のリクエストを送信します。6つの調査対象製品のいずれも実行していないホストには、追加のリクエストは送信されません。```sh
nmap -sV --script vulners それがインターフェース全体です。APIキーなしでも動作し、キーがあればより多くの情報が得られます。モードの切り替えはありません。```
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.7 ((Ubuntu))
| vulners: cpe:/a:apache:http_server:2.4.7 272 findings, 56 exploitable
| SEVERITY CVSS AI FLAGS LINK
| ======== ==== ==== ======= ==============================================================
| CRITICAL 10.0 8.8 EXP https://vulners.com/gitee/3E6BA608-776F-5B1F-9BA5-589CD2A5A351
| CRITICAL 9.8 9.9 EXP https://vulners.com/zdt/1337DAY-ID-39214
| CRITICAL 9.8 9.6 EXP https://vulners.com/packetstorm/PACKETSTORM:171631
| CRITICAL 9.8 9.9 https://vulners.com/cve/CVE-2021-44790
| CRITICAL 9.8 9.8 https://vulners.com/cve/CVE-2023-25690
|_ 262 more not shown; -v shows all, -vv adds where each was found
キーを使用すると、同じホストの同じスキャンでも回答が異なります。KEV は
CISA がこの脆弱性を実際に悪用されたものとして記録していることを意味し、EPSS は
それが悪用される公開された確率です。```
| vulners: cpe:/a:apache:http_server:2.4.7 272 findings, 78 exploitable
| SEVERITY CVSS EPSS FLAGS LINK
| ======== ==== ==== ======= ==============================================================
| CRITICAL 9.1 >99% KEV EXP https://vulners.com/cve/CVE-2024-38475
| CRITICAL 9.0 >99% KEV EXP https://vulners.com/cve/CVE-2021-40438
| CRITICAL 9.1 >99% KEV https://vulners.com/cnvd/CNVD-2024-36387
| CRITICAL 10.0 71% EXP https://vulners.com/gitee/3E6BA608-776F-5B1F-9BA5-589CD2A5A351
| CRITICAL 9.8 97% EXP https://vulners.com/cve/CVE-2021-44790
|_ 262 more not shown; -v shows all, -vv adds where each was found
同じ272件の検出結果、並び順が異なり、先頭行も異なる——そして、そのうち22件は悪用可能と判明している。なぜなら、各エクスプロイトをそれが悪用するCVEに結び付けるキーが存在するからだ。これらはどちらもvulners.comからの実際の回答であり、そのバナーを提示するローカルサーバーに対して取得されたものだ。
## ランキング
事実は予測に優先する。検出結果は以下の順に並べられる:
1. **CISA KEV** - 実環境での悪用が記録されている
2. **SSVC `active`** - 悪用が進行中であるというコーディネーターの判断
3. **エクスプロイトが存在する** - この脆弱性、またはそれが指定するCVEに対するコードが公開されている
4. **高いEPSS** - モデルが悪用を予測している
5. その他すべて
CVSSはバンド内の同順位を解決するものであり、バンド間をまたぐものではない:悪用された7.5は、悪用されていない9.8よりも深刻な問題であり、それを示すのがこの順序だ。
列はデータに従う。回答が保持していなかったシグナルは、空のセルを表示するのではなく列を失う。なぜなら、空のEPSSは「静か」と読めるが、それは存在しないフィールドが裏付けることのできない主張だからだ。
## APIキーが追加するもの
| | |
|---|---|
| **キーなし** | nmapが見つけたすべてのCPEが無料エンドポイントで検索される。検出結果、スコア、エクスプロイトフラグ、そしてVulners独自のAIスコア。クレジットもアカウントも不要 |
| **キーあり、クレジットなし** | 各検出結果に、idエンドポイントが把握している情報が追加される:タイトル、日付、上流のアドバイザリまたはエクスプロイトページ、エクスプロイトとCVEの関連付け、CISA KEV、そしてライセンスに応じてEPSSとSSVC |
| **キーあり、1クレジット** | 無料経路ではまったく名前を特定できなかったソフトウェアが、生のバナーから識別される。ここでコストがかかるのはこれだけであり、しかもCPEを持たないサービスに対してのみである |
すでにCPEが付与されているポートがクレジットを消費することは決してない:4つの製品にわたって測定したところ、無料の検索はCPEに対して有料のものと**同じCVE**を返す。クレジットが購入するのは識別であり、より多くの脆弱性ではない。
無料キーは[vulners.com/userinfo](https://vulners.com/userinfo)にある。
## インストール
**macOS、Linux、Kali、WSL** - 引数なしの1行で:```sh
curl -fsSL https://raw.githubusercontent.com/vulnersCom/nmap-vulners/master/install.sh | sh
Windows - 管理者としてPowerShellを実行:```powershell irm https://raw.githubusercontent.com/vulnersCom/nmap-vulners/master/install.ps1 | iex
インストーラーはnmapにデータの保存場所を尋ね、スクリプトとそのデータファイルをそこへコピーし、スクリプトデータベースを再構築してから、`--script vulners`が実際にインストールしたものに解決されることを確認します。nmapには独自の`vulners.nse`が同梱されており、これがそれを置き換えます。
<details>
<summary><b>root権限なし、およびその他のオプション</b></summary>```sh
# into ~/.nmap, no sudo; the installer prints the NMAPDIR line to add to your profile
curl -fsSL https://raw.githubusercontent.com/vulnersCom/nmap-vulners/master/install.sh | sh -s -- --user
# a specific directory
./install.sh --prefix /usr/local/share/nmap
# a specific release
./install.sh --ref v2.0
# remove everything it installed
./install.sh --uninstall
PowerShellも同じオプションを取ります: -User、-Prefix、-Ref、-Uninstall。
ファイルは1つだけです。vulners.nse を <nmap data dir>/scripts/ にコピーし、sudo nmap --script-updatedb を実行してください。配置するものは他にありません。スクリプトはスキャン時に辞書をダウンロードし、ディスクには何も書き込まないため、忘れるものもありません。以前は、スクリプトが実行されても何も見つからず、その理由も何も言わないという問題を引き起こしていました。
1.x からアップグレードする場合は、そのディレクトリから vulners_enterprise.nse と http-vulners-regex.nse も削除してください。残った http-vulners-regex.nse は依然として default カテゴリを持ち、通常の -sC の下でターゲットをスキャンし続けます。インストーラーはこれを自動で行います。
nmap のデータディレクトリは通常、/usr/share/nmap(Debian、Ubuntu、Kali)、/usr/local/share/nmap(ソースからビルドした場合)、/opt/homebrew/share/nmap(Homebrew)、または C:\Program Files (x86)\Nmap(Windows)です。確実に確認するには、nmap に問い合わせてください。```sh
nmap -d2 --script-help probe 2>&1 | grep nse_main.lua
`nse_main.lua` を保持するディレクトリが、この nmap が使用するものです。
</details>
## スクリプト引数
| 引数 | デフォルト | 意味 |
|---|---|---|
| `vulners.mincvss` | `0` | この値未満のスコアの検出結果を非表示にします。スコアなしの速報や既知のエクスプロイトがあるものは、しきい値に関係なく表示されます |
| `vulners.paths` | 公開されている 939 パス | Web スイープ用のパス: Lua リスト、1 行に 1 パスを記述したファイルを指定する文字列、またはスイープを無効にする `none`。読み取れないファイルを指定すると、公開リストにフォールバックするのではなく、スイープが停止してその旨が通知されます |
| `vulners.width` | `80` | テーブルがレイアウトされるターミナル幅 |
| `vulners.max_items` | `32` | スキャン全体で課金される項目数の上限 |
| `vulners.api_key` | - | API トークン。漏洩に注意: nmap は自身のコマンドラインを `-oX` にコピーします |
| `vulners.api_key_file` | - | 最初の行がトークンであるファイルの絶対パス |
| `vulners.api_host` | `vulners.com` | API のホスト名 |
| `vulners.api_port` | `443` | `api_host` 上のポート |
名前だけでも機能するため、`--script-args mincvss=7` だけで十分です。
1.x の引数プレフィックス - `vulners_enterprise.*` および
`http-vulners-regex.paths` - は 1 リリースの間受け入れられ、非推奨の
通知が表示されます。
## API キーの保存場所
優先順位の高い順に: