ホームページ  >  記事  >  バックエンド開発  >  Python-nmap ネットワーク スキャンおよびスニッフィング ツールキットの使用法の紹介

Python-nmap ネットワーク スキャンおよびスニッフィング ツールキットの使用法の紹介

巴扎黑
巴扎黑オリジナル
2017-09-19 11:08:191881ブラウズ

nmap の概念

Network Mapper としても知られる NMap は、元々は Linux 上のネットワーク スキャンおよびスニッフィング ツールキットでした。

nmap は、インターネット上のコンピューターのオープン ネットワーク接続をスキャンするために使用されるネットワーク接続スキャン ソフトウェアです。どの接続でどのサービスが実行されているかを特定し、コンピュータがどのオペレーティング システムを実行しているかを推測します (これはフィンガープリンティングとも呼ばれます)。これはネットワーク管理者が必ず使用するソフトウェアの 1 つであり、ネットワーク システムのセキュリティを評価するために使用されます。

ネットワークセキュリティに使用されるほとんどのツールと同様、nmapも多くのハッカーやハッカー(スクリプトキディとしても知られています)に好まれているツールです。システム管理者は nmap を使用して作業環境内のサーバーの不正使用を検出できますが、ハッカーは nmap を使用してターゲット コンピュータのネットワーク設定を収集し、攻撃を計画します。

Nmap は、システム脆弱性評価ソフトウェア Nessus とよく混同されます。 Nmap はステルス手法を使用して侵入検知システムの監視を回避し、ターゲット システムの日常業務に影響を与えないよう努めます。

Nmap マトリックスでは、SSH1 の 32 ビット巡回冗長検査の脆弱性とともに、Trinity が発電所のエネルギー管理システムに侵入するために使用されました。

nmap 関数

には 3 つの基本的な機能があります。1 つは、ホストのグループがオンラインであるかどうかを検出することです。2 つ目は、ホストのポートをスキャンし、ホストによって使用されているオペレーティング システムを推測することです。ホスト。 Nmap を使用すると、ノードが 2 つだけの LAN から、ノードが 500 を超えるネットワークまでをスキャンできます。 Nmap を使用すると、ユーザーはスキャン手法をカスタマイズすることもできます。通常、ICMP プロトコルを使用した単純な ping 操作で一般的なニーズを満たすことができます。また、ホストが使用するオペレーティング システムに至るまで、UDP または TCP ポートを詳細に検出することもでき、すべての検出結果をさまざまな形式でログに記録することもできます。分析。分析操作。

ping スキャンを実行し、それ以上のテスト (ポート スキャンやオペレーティング システムの検出など) を行わずにスキャンに応答したホストを出力します:

nmap -sP 192.168.1.0/24

指定されたネットワーク上の各ホストのみをリストし、ターゲット ホストにはパケットを送信しません:

nmap -sL 192.168.1.0/24

ターゲット ホストの開いているポートを検出するには、カンマ区切りのポート リスト (-PS22、23、25、80 など) を指定できます:

nmap -PS 192.168.1.234

UDP ping を使用してホストを検出します:

nmap -PU 192.168.1.0/24

最も頻繁に使用されるスキャン オプション: SYN スキャン (セミオープン スキャンとも呼ばれます) は、完全な TCP 接続を開かず、非常に高速に実行されます:

nmap -sS 192.168.1.0/24

nmap のインストール

この記事では、Linux Ubuntu16.04 を例として取り上げます。 、最後に主にPythonを使って操作します

1.まずnmapをインストールします

sudo apt-get install nmap

2.次にpython-nmapをインストールします

sudo pip install python-nmap

インストール後、nmapをPythonにインポートして成功するかテストします

com@pythontab:~# python
Python 2.7.12 (default, Dec  3 2016, 10:42:27) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import nmap

Python を使用して

1. 簡単な小さなケース

PortScanner インスタンスを作成し、IP 114.114.114.114 のポート 20 ~ 443 をスキャンします。

import nmap
nm = nmap.PortScanner()
ret = nm.scan('114.114.114.114','20')
print ret

戻り値の形式は次のとおりです:

{
    'nmap': {
        'scanstats': {'uphosts': '1', 'timestr': 'Tue Oct 25 11:30:47 2016', 'downhosts': '0', 'totalhosts': '1', 'elapsed': '1.11'},
        'scaninfo': {'tcp': {'services': '20', 'method': 'connect'}}, 
        'command_line': 'nmap -oX - -p 20 -sV 115.239.210.26'
     },
    'scan': {
        '115.239.210.26': {
            'status': {'state': 'up', 'reason': 'syn-ack'},
            'hostnames': [{'type': '', 'name': ''}],
            'vendor': {}, 
            'addresses': {'ipv4': '115.239.210.26'},
            'tcp': {20: {'product': '', 'state': 'filtered', 'version': '', 'name': 'ftp-data', 'conf': '3', 'extrainfo': '', 'reason': 'no-response', 'cpe': ''}
            }
        }
    }
}

2. 組み込みメソッド:

簡単な情報を出力することもできます

import nmap  
nm = nmap.PortScanner() 
print nm.scaninfo()
# {u'tcp': {'services': u'20-443', 'method': u'syn'}}
print nm.command_line() 
# u'nmap -oX - -p 20-443 -sV 114.114.114.114'

ホストの数を確認します

print nm.all_hosts()

[u'114.114.114.114' ]

ホストの詳細情報を表示

nm['114.114.114.114']

ホストに含まれるすべてのプロトコルを表示

nm['114.114.114.114'].all_protocols()

ホストのどのポートがTCPプロトコルを提供しているかを表示

nm['114.114.114.114']['tcp']
nm['114.114.114.114']['tcp'].keys()

ポートがTCPプロトコルを提供しているかどうかを表示

nm['114.114.114.114'].has_tcp(21)

nmap実行のパラメータはこんな感じ

nm.scan(hosts='192.168.1.0/24', arguments='-n -sP -PE -PA21,23,80,3389')

以上がPython-nmap ネットワーク スキャンおよびスニッフィング ツールキットの使用法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。