見出し画像

TWPCAP:DNSで検索している名前をログに出力できるようにした

今朝は5時前に猫に起こしてもらいました。猫が起こしてくれたのは3日ぶりです。
パケットキャプチャーでネットワークの情報を集めるTWPCAPの開発の続きです。昨日IPアドレスとMACアドレスの関係を調べる機能を作りました。今朝、取得しているパケットを眺めていると不明なEther Typeのパケットをみつけました。gopcacketのライブラリでデコードエラーになっていました。
タイプは、0x8899です。Googleさんに聞いてみると、

がありました。確かにBuffaloのHUB付き無線ルータを使ってました。
この調査からEtherType別に集計するというアイデアを思いつきました。
早速作ってみました。

type=EtherType,0x86dd=181,0x8899=30,0x0806=52,0x0800=73276

というようなログを定期的に送信するようにしました。IPv6とIPv4の割合の変化や未知のEtherTypeを検知できるかもしれません。この開発は、

です。
その後、念願のDNSで検索している名前をログに出力できるようにしました。

画像1

type=DNS,DNSType=A,Name=mail.twise.co.jp,count=2,change=1,lastIP=240d:2:6306:6700:225:36ff:feab:7753,lastMAC=00:25:36:ab:77:53,ft=2021-07-10T10:54:14+09:00,lt=2021-07-10T10:54:14+09:00

のような感じです。この例では、mail.twise.co.jpのIPアドレスを検索した端末と回数が記録されています。
DNSの名前検索をモニタすれば、どの端末がどこと通信しようとしているわかります。マルウェアに感染した端末の通信先を調べるなどセキュリティー分野でかなり効果のある情報です。この開発は、


いちおうDocker版を公開しました。

説明とか書いていません。

# docker run --rm twsnmp/twpcap -h
Usage of /twpcap:
 -cpuprofile file
   	write cpu profile to file
 -iface string
   	monitor interface
 -interval int
   	syslog send interval(sec) (default 300)
 -list
   	list interface
 -memprofile file
   	write memory profile to file
 -retention int
   	data retention time(sec) (default 3600)
 -syslog string
   	syslog destnation list
   
  

のように起動できます。
Linux上のDocker環境ならば、

# docker run --net host --rm twsnmp/twpcap -iface enp2s0 -syslog 192.168.1.13

のような感じで起動できると思います。

他のプロトコルにも拡張して行きたいのですが、今日はここまで、
明日に続く


開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。