質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Kali Linux

Kali Linuxは、DebianベースのLinuxディストリビューションです。ペネトレーションテストを主な目的とし、250以上の専用ソフトウェアがインストールされています。

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

ネットワークスペシャリスト

ネットワークスペシャリスト試験 (NW)は、IPA 独立行政法人 情報処理推進機構の実施している国家資格です。

Q&A

解決済

1回答

1291閲覧

【スニッファ】UDP通信のスニッファができません

narururu

総合スコア172

Kali Linux

Kali Linuxは、DebianベースのLinuxディストリビューションです。ペネトレーションテストを主な目的とし、250以上の専用ソフトウェアがインストールされています。

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

ネットワークスペシャリスト

ネットワークスペシャリスト試験 (NW)は、IPA 独立行政法人 情報処理推進機構の実施している国家資格です。

0グッド

0クリップ

投稿2020/05/01 09:52

編集2020/05/01 10:06

◆解決したい課題
UDP通信をスニッファしたい。

◆事象
kaliLinuxのターミナルでプログラム(sniffer2.py)を実行すると
以下エラーが出力される。
イメージ説明

◆設定内容
udpclient.py

import socket client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) client.sendto(b'12345',('127.0.0.1', 80)) data,addr = clientfrom(4096) print(data)

sniffer2.py

import socket sniff = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP) sniff.bind(('192.168.11.3', 0)) sniff.setsockeopt(socket.IPPROTO_IP, socket.IP_HORINCL,1) print('Sniffer is Listenning!') print(niff.recvfrom(4096))

いろいろ調べたり試したりしているのですが、解決できません。
難しいです(>_<)
どなたかアドバイスいただけませんでしょうか。
よろしくお願いいたします。

追記

sniffer2.pyのIPアドレスを127.0.0.1に変更すると、想定通りスニッファできます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/05/01 10:14

> sniff.bind(('192.168.11.3', 0)) のIPアドレス、'192.168.11.3'はどこを指していますか。接続を待ち受けるサーバー自身(つまり、動かしているPC自身)のIPアドレスである必要があります。
narururu

2020/05/01 10:20

ご回答ありがとうございます!dodox86さん☺ 192.168.11.3は動かしているPC自身でございます。
dodox86

2020/05/01 10:39

> 192.168.11.3は動かしているPC自身でございます。 では、正しそうですね。こちらでWindows10 WSL/Ubuntu上で試した限りではIPアドレスが正しければエラーはおきませんでした。(python3.6.9) # 自PCのIPアドレスで正しくbindした場合 >>> import socket >>> sniff = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP) >>> sniff.bind(('192.168.11.102', 0)) # 不正なIPアドレスの場合(同じエラー) >>> sniff = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP) >>> sniff.bind(('192.168.11.111', 0)) Traceback (most recent call last): File "<stdin>", line 1, in <module> OSError: [Errno 99] Cannot assign requested address >>> linuxカーネルの違いのせいもあるかもしれません。socketのオプションを変えるとエラーを回避できるかも、です。
narururu

2020/05/02 03:19

再現までしていただき恐縮です。 今回VirtualBox上でkalilinuxを動かしているため、kalilinxに設定しているIPアドレスをsniffer.pyに設定する必要があったようです。 そして、その通りに設定しましたら、想定通りスニッファできるようになりました。 私の理解不足が招いた質問に対し、真摯にアドバイスしてくださり、ありがとうございました。
dodox86

2020/05/02 03:25

なるほど、いただいた回答にもとづいて解決されたと思いますので、BAを差し上げて、質問を閉じてもらえればと思います。
narururu

2020/05/02 03:37

はい。その予定です。 ただ、1点だけ疑問がありまして、、 kalilinuxのネットワーク設定でブリッジモードに変更し、windows(192.168.11.3 /24)とkalilinux(192.168.11.5 /24)で同じセグメントにIPを割り当てており、双方向で通信できる状態なのです。 よって、192.168.11.5ではスニッファできて、192.168.11.3ではスニッファできない理由がわかりません。。。
dodox86

2020/05/02 03:42

bindしているのはどちらのIPアドレスですか。kalilinuxにとっては、NICがプロミスキャスモードで動いていないと、違う宛先のパケットはカーネルで処理されないと思います。
dodox86

2020/05/02 03:44

処理されない、と言うかそもそもNICがはじいてしまうので届かないというか。
narururu

2020/05/02 04:06

bindさせているIP192.168.11.3を192.168.11.5に変更しました。 ふむふむ、kalilinuxではプロミスキャスモードは動いていないんですね。確かにwikipediaではプロミスキャスモード利用一覧にはVirtualBoxは記載されていますが、kalilinuxは記載されていないです。 アドバイスありがとうございます。 助かります!
dodox86

2020/05/02 04:12

> bindさせているIP192.168.11.3を192.168.11.5に変更しました。 では、192.168.11.5 ではスニッファできるということに合致していますね。wiresharkなど、その手の専門のパケットキャプチャーソフトは、ソフトからドライバーを介してNICのプロミスキャスモードをONにし、動作させます。質問者さんが同じセグメント内のあらゆるパケットを覗きたいのであれば、VirtualBoxの設定も含め、ソフト内からそのような操作をする必要があります。
narururu

2020/05/02 08:31

今までプロミスキャスモードについてあまり意識しておりませんでした。 プロミスキャスモード設定できるんですね。 これを機にプロミスキャスモードの設定についても調べてみます。 とても勉強になります。ありがとうございました!????
dodox86

2020/05/02 10:11

ああ、でも今のネットワークのハブ(HUB)は頭の良いスイッチングハブがほぼ100%なので、NICをプロミスキャスモードにしてもブロードキャスト以外は別の宛先のパケットは自分には届かないと思います。(<ハブが適切な宛先に振り分けます)すっかり忘れていました。届かなくても「アレっ???」って思わないでください。(このコメントへのレスは不要です)
guest

回答1

0

ベストアンサー

kaliLinux を仮想環境(VirtualBoxやHyper-V)で動作させていることはありませんか?
その場合、 bind するIPアドレスはPC自身ではなく、kaliLinux に割り当てられているものである必要があります。
ifconfig かip addrでkaliLinux に割り当てられている IPアドレスを確認してください。

投稿2020/05/02 00:50

mit0223

総合スコア3401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

narururu

2020/05/02 03:26 編集

ご回答ありがとうございます!mit0223さん☺ はい。kalilinuxはVirtualBox上で動かしております。 ご指摘の通り、kalilinuxのIPアドレスを設定したところ、想定通りスニッファできました。 アドバイス、ありがとうございます。 windowsに設定されているIPアドレスを設定しておりました。 ただ1点疑問は残ります。kalilinuxとwindowsのIPアドレスは192.168.11.0 /24でどちらも同じセグメントにいるため、windowsのIPでもスニッファできると思っておりました。また、kalilinuxの設定でブリッジモードに変更しております。
mit0223

2020/05/02 06:46

ベストアンサーありがとうございました。bindはlisten するアドレスを指定するので、他人のアドレスを指定することはできません。ブリッジモードの場合PCと仮想マシンの両方が同じネットワークに属しますが、それぞれIPアドレスを持ちます。スニファはできると思いますが、 bind は自分のアドレスで行う必要があります。
narururu

2020/05/02 08:33

そうだったんですね。 アドバイス助かります! 引き続き、いろいろ調べて試してみます! ありがとうございました!⚙
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問