LinuxでNmapスクリプトエンジンを使用する方法

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

の興味深い機能の1つ Nmap それは Nmapスクリプトエンジン ((NSE)、これによりさらに柔軟性と効率が向上します。 これにより、Luaプログラミング言語で独自のスクリプトを記述し、これらのスクリプトを他のNmapユーザーと共有することができます。

また読む:Linux用のNmapコマンドの29の実用例

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

  • プレルールスクリプト – Nmapのスキャン操作の前に実行されるスクリプトであり、Nmapがターゲットに関する情報をまだ収集していないときに実行されます。
  • ホストスクリプト – Nmapがホスト検出、ポートスキャン、バージョン検出、ターゲットホストに対するOS検出などの通常の操作を実行した後に実行されるスクリプトです。
  • サービススクリプト –ターゲットホストでリッスンしている特定のサービスに対して実行されるスクリプトです。
  • ポストルールスクリプト –Nmapがすべてのターゲットホストをスキャンした後に実行されるスクリプトです。

次に、これらのスクリプトは、認証用のスクリプトを含むさまざまなカテゴリにグループ化されます(auth)、ホストの発見(放送)、認証資格情報を推測するブルートフォース攻撃(野蛮人)、ネットワークについてもっと知る(発見)、サービス拒否を引き起こします(dos)、いくつかの脆弱性を悪用する(エクスプロイト)など。多くのスクリプトがデフォルトのカテゴリに属しています。

 

注意:先に進む前に、次の重要なポイントに注意する必要があります。

  • 第三者からのスクリプトを批判的に調べずに、または作成者を信頼する場合にのみ実行しないでください。 これは、これらのスクリプトがサンドボックスで実行されないため、予期せずまたは悪意を持ってシステムに損害を与えたり、プライバシーを侵害したりする可能性があるためです。
  • 次に、これらのスクリプトの多くは、次のいずれかとして実行される可能性があります。 プレルール または ポストルール 脚本。 これを考慮して、一貫性を保つためにプリルールを使用することをお勧めします。
  • Nmapは scripts / script.db 利用可能なデフォルトのスクリプトとカテゴリを把握するためのデータベース。

使用可能なすべてのNSEスクリプトの場所を確認するには、次のようにターミナルで検索ユーティリティを実行します。

$ 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 フラグ。カテゴリ、スクリプトファイル名、またはスクリプトが配置されているディレクトリの名前を指定して、独自のスクリプトを実行することもできます。

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

$ nmap -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

内のスクリプトを省略してすべてのスクリプトをロードするには 脆弱性 カテゴリの場合、ターミナルでこのコマンドを実行します。

$ 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

NSEスクリプトへの引数の受け渡し

以下は、スクリプトに引数を渡す方法を示す例です。 –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""

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

今のところ以上です。 詳細については、Nmapのmanページを参照するか、チェックアウトしてください。 NSEの使用法

独自のNSEスクリプトの作成を開始するには、次のガイドを確認してください。 https://nmap.org/book/nse-tutorial.html

結論

Nmap は、すべてのシステムまたはネットワーク管理者がセキュリティの武器として必要とする、非常に強力で便利なツールです。 NSE 単にそれに効率を追加します。

この記事では、 Nmapスクリプトエンジン さまざまなカテゴリで利用可能なさまざまなスクリプトを見つけて使用する方法を検討しました。 ご不明な点がございましたら、下のコメントフォームからお気軽にご返信ください。

Hope this helps!

Source link