
私の目標は、MITM プロキシを使用してトラフィックを傍受することです。これを実現するために、ラップトップを Wi-Fi ホットスポットをホストするように設定し、スマートフォンを接続してプロキシを起動し、この Wi-Fi ネットワークでラップトップをプロキシとして使用するようにスマートフォンを設定しました。
ホスト IP は10.42.0.1
、クライアントはです10.42.0.2
。プロキシはポート 8080、任意のインターフェースでリッスンしています。正しく表示されnetstat
、localhost からアクセスできますnetcat
。Android フォンは、ポート 8080 経由でプロキシするように構成されています10.42.0.1
。
電話からは ping を実行できます10.42.0.1
。Wireshark では、エコー要求の受信と応答の送信を確認できます。
ただし、電話が TCP または UDP パケットを送信すると、システムは応答しません。UDP で netcat を使用してホットスポットをリッスンし、電話から UDP データを送信すると、データは netcat に配信されません。Wireshark でデータを含むパケットが着信しているのを確認できますが、端末は空白のままです。TCP でリッスンすると、電話から SYN パケットが着信していることを Wireshark で確認できますが、確認応答はありません (SYN+ACK 応答なし)。
ホットスポット ( 10.42.0.1
) には明らかに ARP があり、ルートバックまたは ICMP エコー応答は送信されません。ホスト ファイアウォールはインストールされていません。再起動後も問題は解決しません。
何が問題なのでしょうか?
答え1
質問を書いているときに、ファイアウォールがインストールされていないのでファイアウォールではないこと、また、再起動後は持続しないので iptables ではないことはわかっていたものの、iptables ルールが設定されていないことを実際に確認していなかったことに気付きました。
# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:bootps
ACCEPT tcp -- anywhere anywhere tcp dpt:bootps
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
DROP all -- anywhere anywhere state INVALID
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere
ACCEPT udp -- anywhere anywhere udp dpt:isakmp
ACCEPT esp -- anywhere anywhere
ACCEPT ah -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:8528
どうやら、何か、おそらく NetworkManager の無限の知恵が、予想外にファイアウォールを提供できたことを喜んで、いくつかのルールを追加することにしたようです。
回避策としては、いくつかのルールを削除し、デフォルトのポリシーをリセットします。
# iptables -L --line-numbers
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT udp -- anywhere anywhere udp dpt:bootps
2 ACCEPT tcp -- anywhere anywhere tcp dpt:bootps
3 ACCEPT udp -- anywhere anywhere udp dpt:domain
4 ACCEPT tcp -- anywhere anywhere tcp dpt:domain
5 DROP all -- anywhere anywhere state INVALID
# iptables -D INPUT 5
# iptables --policy INPUT ACCEPT
NetworkManager のドキュメントやソース コードにも、これに関する参照が見つかりません。デフォルトで許可されていると思われるポート 8528 が何なのかわかりません (どこにも登録も参照もされていません)。iptables を呼び出す関連コードも、接続をファイアウォールで保護するのを止める関連設定もすぐには見つかりません。NetworkManager が他のソフトウェアを呼び出して、それが後でこれをインストールしているのかもしれません。