内角540°

セキュリティ。SIEMとかIPSとか統計とかクラウドとか。数学以外で。

BLACKLIST DNS request for known malware domain〜

BLACKLIST DNS request for known malware domain…

また会いましたね(・へ・)

 

毎月のように追加される君は一体誰なの??

 

 

rule textはこんな感じ…!

alert udp $HOME_NET any -> any 53

(msg:"BLACKLIST DNS request for known malware domain devid.info";

flow:to_server;
②byte_test:1,!&,0xF8,2;
③content:"|05|devid|04|info|00|";br /> fast_pattern:only;
metadata:impact_flag red, policy balanced-ips drop, policy security-ips drop, service dns;
reference:url,www.virustotal.com/en/domain/devid.info/information/;
classtype:trojan-activity;
sid:31655;
rev:1;)

 

大切なのはたった3つだけなのだよ(。・_・。)

udp $HOME_NET any -> any 53

udpで53だから、DNS

我が家からインターネット向きの通信を検知だから、おそらくDNS query!

②byte_test:1,!&,0xF8,2;

バイナリチェックするです(・へ・)

1:1バイトだけチェックするぞ

!&:not and演算するぞ

0xF8:比較対象は16進でF8だぞ

2:先頭から3バイト目を比較だぞ(0,1,2 : 0が先頭)

 

DNSクエリのパケットを見てみるのです(`・ω・´)ゞ

先頭から3バイト目は…

f:id:gokaxtukei:20151225231528p:plain

超絶参考↓

The TCP/IP Guide - DNS Message Header and Question Section Format

 

先頭から3バイト目はFlagsがあるのです:D

1byte拾ってくるので、「0 0000 0 0 1」を比較対象にするのよ

 

対戦相手はー「0xF8」…バイナリにするとー

11111000 だぞ!

 

筆算マン

00000001

11111000 (!& 

11111111 → True!

 

なるほどー

11111000 はflagsで上位5bitに1が含まれていないことを判定していたんだね!

上位5bitが表してるのは...

Message is a query であることと、

Standard query であること…!

f:id:gokaxtukei:20151225232234p:plain

単に、普通のDNSクエリを検知したいんだね(。・_・。)

 

③content:"|05|devid|04|info|00|";

devid.info を名前解決してるってことだね

 

※|05|とか、|04|は下に続く文字数(devid,info)を指してるよ!DNSの仕様だね!

 

===============================

 

シンプルなルールだったなー

そしてMessage通りの内容!

 

誤検知しそうな書き方でもあると思う…

devid.info.yahoo.co.jp で誰かが名前解決すれば、ヤフーさんがこのルールを検知しちゃうよね?

 

あまり念入りに見なくていいルールなのかも…

 

意図している検知は

「devid.info」なの?

「*.devid.info」なの?教えてー(・o・)!

 

誤検知の検証はここでやったよ

 

gokaxtukei.hatenablog.com