LinuxでNmap Script Engine(NSE)スクリプトを使用する方法


Nmapは、広く使用されている強力でクロスプラットフォームなコマンドラインネットワークセキュリティスキャナーおよび探査ツールです。ネットワークに接続しているシステムの概要を把握するのにも役立ちます。これを使って、ライブホストのすべてのIPアドレスを調べたり、開いているポートやそれらのホストで実行されているサービスをスキャンしたりできます。

Nmapの興味深い機能の1つは、 Nmap Script Engine NSE )です。これにより、柔軟性と効率性がさらに向上します。それはあなたがある[ルアのプログラミング言語であなた自身のスクリプトを書くことを可能にし、おそらくそれらのスクリプトをそこにいる他のNmapユーザーと共有することを可能にする。

NSEスクリプトには4つのタイプがあります。

  • Prerule scripts – are scripts that run before any of Nmap’s scan operations, they are executed when Nmap hasn’t gathered any information about a target yet.
  • Host scripts – are scripts executed after Nmap has performed normal operations such as host discovery, port scanning, version detection, and OS detection against a target host.
  • Service scripts – are scripts run against specific services listening on a target host.
  • Postrule scripts – are scripts run after Nmap has scanned all of its target hosts.

その後、これらのスクリプトは、認証(認証)、ホストの検出(ブロードキャスト)、認証資格情報を推測するための総当たり攻撃(総当たり<など)を含むさまざまなカテゴリに分類されます。/strong>)、ネットワークについての詳細を発見する(発見)、サービス拒否( dos )、一部の脆弱性を悪用する(エクスプロイト)など多数のスクリプトがデフォルトのカテゴリに属します。

  • Do not execute scripts from third parties without critically looking through them or only if you trust the authors. This is because these scripts are not run in a sandbox and thus could unexpectedly or maliciously damage your system or invade your privacy.
  • Secondly, many of these scripts may possibly run as either a prerule or postrule script. Considering this, it is recommend to use a prerule for purposes of consistency.
  • Nmap uses the scripts/script.db database to figure out the available default scripts and categories.

利用可能なすべてのNSEスクリプトの場所を確認するには、次のように端末でlocateユーティリティを実行します。

$ locate *.nse

/usr/share/nmap/scripts/acarsd-info.nse
/usr/share/nmap/scripts/address-info.nse
/usr/share/nmap/scripts/afp-brute.nse
/usr/share/nmap/scripts/afp-ls.nse
/usr/share/nmap/scripts/afp-path-vuln.nse
/usr/share/nmap/scripts/afp-serverinfo.nse
/usr/share/nmap/scripts/afp-showmount.nse
/usr/share/nmap/scripts/ajp-auth.nse
/usr/share/nmap/scripts/ajp-brute.nse
/usr/share/nmap/scripts/ajp-headers.nse
/usr/share/nmap/scripts/ajp-methods.nse
/usr/share/nmap/scripts/ajp-request.nse
/usr/share/nmap/scripts/allseeingeye-info.nse
/usr/share/nmap/scripts/amqp-info.nse
/usr/share/nmap/scripts/asn-query.nse
...

NSEスクリプトは --script フラグを使用してロードされます。これにより、カテゴリ、スクリプトファイル名、またはスクリプトが配置されているディレクトリの名前を指定して、独自のスクリプトを実行することもできます。

スクリプトを有効にするための構文は次のとおりです。

$ namp -sC target     #load default scripts
OR
$ nmap --script filename|category|directory|expression,...   target    

スクリプトの説明は --script-help オプションで見ることができます。さらに、 --script-args --script-args-file オプションを使っていくつかのスクリプトに引数を渡すことができます。後者はファイル名ではなくファイル名を提供するために使用されます。コマンドライン引数

ほとんどのデフォルトスクリプトを使用してスキャンを実行するには、 -sC フラグを使用するか、または --script = default を使用します。

$ nmap -sC scanme.nmap.org
OR
$ nmap --script=default scanme.nmap.org
OR
$ nmap --script default scanme.nmap.org
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:36 IST
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.0027s latency).
Not shown: 999 filtered ports
PORT   STATE SERVICE
80/tcp open  http
|_http-title: Go ahead and ScanMe!

Nmap done: 1 IP address (1 host up) scanned in 11.74 seconds

適切な目的でスクリプトを使用するには、まず、 http-headers など、スクリプトの実際の動作についての簡単な説明を取得します。

$ nmap --script-help http-headers scanme.nmap.org
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:37 IST

http-headers
Categories: discovery safe
https://nmap.org/nsedoc/scripts/http-headers.html
  Performs a HEAD request for the root folder ("/") of a web server and displays the HTTP headers returned.

Nmapスキャンを実行するためのNSEスクリプトのロード

スクリプトを選択またはロードして、以下に説明するさまざまな方法でスキャンを実行できます。

スクリプトの動作がわかれば、それを使ってスキャンを実行できます。 1つのスクリプトを使用することも、スクリプト名のコンマ区切りリストを入力することもできます。以下のコマンドを使用すると、ターゲットホストのWebサーバーに設定されているHTTPヘッダーを表示できます。

$ nmap --script http-headers scanme.nmap.org

HTTPヘッダーをスキャン

Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:39 IST
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.27s latency).
Not shown: 996 closed ports
PORT      STATE    SERVICE
22/tcp    open     ssh
80/tcp    open     http
| http-headers: 
|   Date: Wed, 15 Nov 2017 05:10:04 GMT
|   Server: Apache/2.4.7 (Ubuntu)
|   Accept-Ranges: bytes
|   Vary: Accept-Encoding
|   Connection: close
|   Content-Type: text/html
|   
|_  (Request type: HEAD)
179/tcp   filtered bgp
31337/tcp open     Elite

Nmap done: 1 IP address (1 host up) scanned in 20.96 seconds

1つのカテゴリまたはカンマ区切りのカテゴリのリストからスクリプトをロードすることもできます。この例では、デフォルトカテゴリとブロードキャストカテゴリのすべてのスクリプトを使用して、ホスト 192.168.56.1 でスキャンを実行しています。

$ nmap --script default,broadcast 192.168.56.1

与えられた名前のパターンでスクリプトを選択したいとき、これは役に立ちます。たとえば、 ssh で始まる名前のすべてのスクリプトを読み込むには、端末で次のコマンドを実行します。

$ nmap --script "ssh-*" 192.168.56.1

またはしない演算子を使用して構築できるブール式を使用してスクリプトを選択することもできます。ブール式の名前は、カテゴリ、 script.db のファイル名、またはすべての名前になります。

次のコマンドは、デフォルトまたはブロードキャストカテゴリからスクリプトをロードします。

$ nmap --script "default or broadcast" 192.168.56.10

これは以下と同等です。

$ nmap --script default,broadcast 192.168.56.10

vuln カテゴリのスクリプトを省略してすべてのスクリプトを読み込むには、端末でこのコマンドを実行します。

$ nmap --script "not vuln" 192.168.56.10

次のコマンドは少し複雑に見えますが、理解するのは簡単です。デフォルト、つまりブロードキャストカテゴリのスクリプトを選択し、ssh-で始まる名前のスクリプトは除外します。

$ nmap --script "(default or broadcast) and not ssh-*" 192.168.56.10

重要なのは、カテゴリ、スクリプト名、カスタムスクリプトを含むディレクトリ、またはブール式を組み合わせてスクリプトをロードすることです。

$ nmap --script broadcast,vuln,ssh-auth-methods,/path/to/custom/scripts 192.168.56.10

以下は、 –script-args オプションを使用してスクリプトに引数を渡す方法を示す例です。

$ nmap --script mysql-audit --script-args "mysql-audit.username='root', \
mysql-audit.password='password_here', mysql-audit.filename='nselib/data/mysql-cis.audit'"

ポート番号を渡すには、 -p nmapオプションを使用します。

$ nmap -p 3306 --script mysql-audit --script-args "mysql-audit.username='root', \ 
mysql-audit.password='password_here' , mysql-audit.filename='nselib/data/mysql-cis.audit'"

上記のコマンドは、 CIS MySQL v1.0.2 ベンチマークの一部に対してMySQLデータベースサーバーのセキュリティ設定の監査を実行します。他のMySQL監査用に独自の便利なカスタム監査ファイルを作成することもできます。

今のところそれです。 nmapのmanページに詳しい情報があるか、NSE Usageをチェックしてください。

独自のNSEスクリプトを書くことを始めるために、このガイドをチェックしてください。

Nmap は、すべてのシステム管理者またはネットワーク管理者がセキュリティのために必要とする本当に強力で便利なツールです。

この記事では、 Nmap Script Engine を紹介し、さまざまなカテゴリで使用可能なさまざまなスクリプトを見つけて使用する方法について説明しました。ご質問がある場合は、下記のコメントフォームからお気軽にお問い合わせください。