Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
passer — パッシブサービスロケーター。サーバー、クライアント、名前など多くの情報を識別するPython製スニファーです。 | Kitploit
ツール/GitHubGitHub/activecm/passer
防御ツールパケットスニッフィングと分析偵察ネットワークマッピングネットワークフォレンジック情報収集ネットワークセキュリティフィンガープリントスプーフィングDNS分析
GitHubactivecm/passer

passer

パッシブサービスロケーター。サーバー、クライアント、名前など多くの情報を識別するPython製スニファーです。

26653118ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見る

passer

パッシブサービスロケーター。サーバー、クライアント、名前などを識別するPythonスニファー

はじめに

パッシブサービススニファーであるpasserを使い始めるための簡単なメモです。スニッフィングの許可を得るのはあなたの責任です。

Passerは、ライブのパケットキャプチャからも、pcapファイルからも動作できます(コマンドラインパラメータ。以下の例を参照)。LAN上のイーサネットカード、DNSエントリ、オペレーティングシステム、ルーターなど、ライブのサービスとクライアントをすべてパッシブに報告します!

Windowsを使用している場合、または何らかの理由でサポートファイルへのパスが私のものと一致しない場合は、それらがどこにあるかを教えてください。喜んでスクリプトを更新します。

インストール

要件

  • Python >=2.4 かつ <3.0
  • Pythonライブラリ(requirements.txtを参照)
    • ipaddress
    • pytz
    • scapy>=2.4.0

オプション(ただし推奨)

  • nmap
    • イーサネット製造元とサービス文字列用
  • ettercap、wireshark、および/またはarp-scan
    • より多くのイーサネット製造元用
  • p0f バージョン2
    • OSフィンガープリントファイル用

Ubuntu/Debian および deb ベースのディストリビューション

# Install system dependencies
sudo apt-get install arp-scan ettercap-text-only nmap wireshark 
# Install python dependencies
sudo pip install -r requirements.txt
# Prevent Scapy from performing DNS lookups
echo 'noenum = [ Resolve(), TCP_SERVICES, UDP_SERVICES ]' >> ~/.scapy_startup.py

Redhat/CentOS/Fedora および rpm ベースのディストリビューション

# Install system dependencies
sudo yum install arp-scan ettercap nmap wireshark
# Install python dependencies
sudo pip install -r requirements.txt
# Prevent Scapy from performing DNS lookups
echo 'noenum = [ Resolve(), TCP_SERVICES, UDP_SERVICES ]' >> ~/.scapy_startup.py

Windows(不完全)

scapy をインストールするには、インストールガイドを参照してください。

Docker

Passer は Docker イメージとしてもパッケージ化されています。まだ Docker をインストールしていない場合、Linux にインストールする簡単な方法は次のとおりです:

curl -fsSL https://get.docker.com | sh -

それ以外の場合は、お使いのオペレーティングシステム向けのインストール手順に従ってください。

ほとんどの用途では、このリポジトリに含まれるpasserスクリプトの使用を推奨します。このスクリプトは、Docker固有の処理をすべて行います。

wget https://raw.githubusercontent.com/activecm/passer/master/passer
chmod +x passer

その後、このスクリプトは以下の例のいずれかと同様に使用できます。例えば:

./passer -i eth0
# The equivalent without using the included script would be:
docker run --rm --name=passer -i --init --net=host --cap-add=net_raw activecm/passer -i eth0

passer の実行を停止するには、次のようにします:

docker stop passer

例

root としてライブでスニッフィングする

/path/to/passer.py

これはすべてのネットワークインターフェースからスニッフし、すべての出力行をコンソールに送信します。

非rootユーザーとしてライブスニッフする

sudo /path/to/passer.py

または

su - -c '/path/to/passer.py'

root としてライブスニッフするが、1つのインターフェースからのみ

/path/to/passer.py -i IfaceName

route を実行すると、使用可能なライブインターフェースがいくつか表示されます。

❕ -i は -r と互換性がありません。

pcap ファイルからパケットを読み取る。root 権限は不要

/path/to/passer.py -r /path/to/packets.pcap

❕ -r は -i と互換性がありません。

stdin で生の pcap データを受け入れる

cat packetdata.pcap | ./passer.py -r /proc/self/fd/0
zcat packetdata.pcap.gz | ./passer.py -r /proc/self/fd/0
bzcat packetdata.pcap.bz2 | ./passer.py -r /proc/self/fd/0
tcpdump -i eth0 -qtnp -w - | ./passer.py -r /proc/self/fd/0
# etc...

これにより、パケットを pcap ファイルに保存できる任意のツールでパケットをキャプチャし、後で別のシステム上で passer を使って処理できます。

後で処理するために出力行をテキストファイルに保存する

/path/to/passer.py -l /path/to/networkinfo.txt

警告およびその他のデバッグ情報を抑制する

/path/to/passer.py 2>/dev/null

ヘルプ画面を表示する

/path/to/passer.py -h

「異常な」/未処理のパケットを pcap ファイルに保存する

/path/to/passer.py -u /path/to/oddpackets.pcap

これは一般に開発プロセス向けのものであり、このファイルに保存されるパケットは署名を書き込む必要があるものです。風変わりなパケットの提供、サービスの説明、プログラムへのパッチは喜んで受け付けます。

BPFフィルタを適用して処理するパケットを制限する

これは、コマンドラインの末尾にBPFフィルタを一重引用符で囲んで配置するだけで済む_はず_です。バージョン1.16の時点では、基盤となるライブラリが提供されたフィルタを正常に使用できていないようですが、回避策があります。tcpdumpを使ってフィルタリングを行い、絞り込まれたパケットのセットを上記のように標準入力経由でpasserに渡します:

tcpdump -r packets.pcap -w - 'icmp or arp' | ./passer.py -r /proc/self/fd/0

パケットを事前にキャプチャする場合でもライブスニッフィングを行う場合でも、使用するフィルタの提案については、以下の「サンプルフィルタ」セクションを参照してください。

トラブルシューティング

socket.error: (1, 'Operation not permitted')

おそらく、非rootユーザーとしてライブでスニッフィングしようとしているのでしょう。rootでログインするか、sudo/suを使うか、pcapファイルを扱ってください。

passerがクラッシュする場合やお使いのシステムで動作しない場合は、エラーメッセージ(あれば)とオペレーティングシステムの詳細を含むissueを作成してください。

出力形式

Passerの出力は標準出力に送られ、コマンドラインパラメータ -l /path/to/logfile を指定した場合はそのファイルにも書き込まれます。形式は次のとおりです:

TypeIPAddrProtoStateOptional description (may be empty)
'IP'IPaddr'IP'dead or livep0f OS description
'MA'IPaddr'Ethernet'MacAddrManufDescription
'TC'IPaddr'TCP_'Portclosed or openclient description
'TS'IPaddr'TCP_'Portclosed or listeningserver description
'UC'IPaddr'UDP_'Portopen or closedudp client port description
'US'IPaddr'UDP_'Portopen or closedudp server port description
'DN'IPaddr'A' or 'PTR'hostnamepossible extra info
'RO'IPaddr'TTLEx'routerpossible extra info
  • 列1: レコードタイプを表す2文字のコード
  • 列2: 特徴付けられるIPアドレス。
  • 列3: 関与するプロトコル、または「これをどうやって知ったか?」
  • 列4: 記述されるオブジェクトの状態
  • 列5: オブジェクトに関する追加情報

各行はカンマ区切りになっているため、スプレッドシートへの読み込みやSQLインポートが容易です。どのフィールドにもカンマを含めるべきではありません。サンプル出力ファイルは http://www.stearns.org/passer/passer-sample-log.txt にあります。

これらの行から目的のデータを取得する方法の例をいくつか示します:

  1. 重複行を削除する:
cat /var/tmp/passer-log | sort -u | less
  1. 重複行を削除し、特定のIPに対するすべてのレコードをグループ化します:
cat /var/tmp/passer-log | sort -t, -k2 -u | less
  1. DNS とルーターレコードだけを取得します:
cat /var/tmp/passer-log | sort -u | egrep '(^DN|^RO)' | less
  1. 特定の IP アドレスのすべてのレコードを表示します:
cat /var/tmp/passer-log | sort -u | grep ',192\.168\.0\.17,' | less
  1. 特定のネットワークのすべてのレコードを表示する:
cat /var/tmp/passer-log | sort -u | grep ',192\.168\.' | less
  1. TCPポート25でリッスンしているすべてのマシン(SMTPサーバー)を表示します:
cat /var/tmp/passer-log | sort -u | grep ',TCP_25,listening,' | less
  1. 閉じているポートを表示しない:
cat /var/tmp/passer-log | sort -u | grep -v ',closed,' | less
  1. 閉じている ポートのみを表示する:
cat /var/tmp/passer-log | sort -u | grep ',closed,' | less
  1. "google.com" ドメイン内のすべての DNS レコードを表示します:
cat /var/tmp/passer-log | sort -u | grep -i 'google\.com\.,' | less
  1. すべての DNS アドレスレコードを取得し、hosts 形式のファイルを作成します:
/path/to/make-hosts /var/tmp/passer-log | /path/to/mergehosts.pl >/var/tmp/passer-hosts

"make-hosts" と merge-hosts は、http://www.stearns.org/passer/make-hosts にある 別々のシェルスクリプトと perl スクリプトです。

これはほんの始まりにすぎません! 興味深い項目を抽出するお気に入りの方法を 送ってください。追加して、あなたの名前をクレジットします。

BPF フィルター

個々のレコードタイプは、生データを得るために特定の種類のパケットを必要とします。 これらを含めたり除外したりしたい場合は、付属のフィルターを使用してください。

'IP', IPaddr, 'IP', dead or live, p0f OS description

これには TCP SYN パケットが必要です:

'tcp[13] & 0x12 = 0x02'

'MA', IPaddr, 'Ethernet', MacAddr, ManufDescription

これらは ARP 応答から取得されます(*1):

'arp'

'TC', IPaddr, 'TCP_'Port, closed or open, client description

これらには TCP SYN/ACK、FIN、RST(*2) が必要です:

'tcp[13] & 0x07 != 0'

'TS', IPaddr, 'TCP_'Port, closed or listening, server description

ポートが開いているか閉じているかを確認するには、TCP SYN、SYN/ACK、RST が必要です:

'tcp[13] & 0x06 != 0'

サーバー記述文字列を生成するには、ネットワーク上でトラフィックの大部分を占めるACKパケットも確認する必要があります:

'tcp[13] & 0x17 = 0x10'

両方が必要な場合は、TCP トラフィックをすべて取得するだけです:

'tcp'

'UC', IPaddr, 'UDP_'Port, open or closed, udp client port description

すべての UDP ポートと ICMP ポート到達不能をそのまま渡すのが最も簡単です:

'udp or icmp[0:2] = 0x0303'

'US', IPaddr, 'UDP_'Port, open or closed, udp server port description

上記と同じ:

'udp or icmp[0:2] = 0x0303'

'DN', IPaddr, A,AAAA,PTR,CNAME hostname, 追加情報の可能性あり

UDP または TCP ポート 53 (*3):

'udp src port 53 or tcp src port 53'

'RO', IPaddr, 'TTLEx', router, possible extra info

ルーターを識別するのは、ルーターが Time-To-Live-Exceeded または unreachable メッセージを送信しているためです:

'icmp[0:2] = 0x0B00 or icmp[0] = 0x03'

*1 これは arp リクエストも取得しますが、これらは無視されます。

*2 このフィルタは技術的には SYN も含みますが、それは少量の 追加データにすぎません

ツールをダウンロード