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で検索している名前をログに出力できるようにしました。
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の運営にも貢献できるのでよろしくお願います。