spp_fnord.cの導入

 ではSnortでの対策だが、ADMmutateに対抗するためのSnortのpreprocessorとして、「spp_fnord.c」というものが公開されている。spp_fnord.cの作者のコメントを見る限りでは、Snortのバージョン1.9には収録されるようだ。ここでは、spp_fnord.cを導入したSnortでも同様のアタックを行い、検出できるのかテストしてみることしよう。

 spp_fnord.cを導入するためには、Snortを再インストールする必要がある。また、Snortを展開したディレクトリにて./configure後に、Makefileとplugbase.cの2つを編集しなければならない。

# wget http://cansecwest.com/spp_fnord.c
# vi spp_fnord.c

//<html><body><pre> ←削除
/* spp_fnord:snort preprocessor - Multi-architecture mutated NOP sled detector
- copyright 2002 Dragos Ruiu (dr@kyx.net)

〜省略〜

/* end of spp_fnord.c ←削除
//</pre></body></html>  ←削除

(※ダウンロードしたspp_fnord.cのソースにはヘッダ部分・フッタ部分にHTMLの記述があるため、削除する)

# wget http://www.snort.org/dl/snort-1.8.7.tar.gz
# tar xvzf snort-1.8.7.tar.gz
# cp spp_fnord.c ./snort-1.8.7
# cd snort-1.8.7
# ./configure

Makefileの編集

# viMakefile
(「snort_SOURCES」に「spp_fnord.c」、「snort_OBJECTS」にspp_fnord.oを記述して保存

〜省略〜

snort_SOURCES = snort.c snort.h log.c log.h decode.c decode.h \
mstring.h mstring.c rules.c rules.h plugbase.c plugbase.h \
sp_pattern_match.c sp_pattern_match.h sp_tcp_flag_check.c \
sp_tcp_flag_check.h sp_icmp_type_check.c sp_icmp_type_check.h \
sp_icmp_code_check.c sp_icmp_code_check.h sp_ttl_check.c\
sp_ttl_check.h sp_ip_id_check.c sp_ip_id_check.h sp_tcp_ack_check.c \
〜省略〜
spo_unified.c spo_unified.h generators.h spp_stream4.h spp_stream4.c\
ubi_SplayTree.h sys_include.h spp_frag2.c spp_frag2.h spp_arpspoof.c\
spp_arpspoof.h spo_idmef.h spo_idmef.c spo_SnmpTrap.c spo_SnmpTrap.h\
event.h spo_log_null.c spo_log_null.h cdefs.h spp_fnord.c ←記述

〜省略〜

snort_OBJECTS = snort.o log.o decode.o mstring.o rules.o plugbase.o \
sp_pattern_match.o sp_tcp_flag_check.o sp_icmp_type_check.o \
sp_icmp_code_check.o sp_ttl_check.o sp_ip_id_check.o sp_tcp_ack_check.o \
sp_tcp_seq_check.o sp_dsize_check.o spp_http_decode.o spp_portscan.o \
〜省略〜
spp_rpc_decode.o spp_bo.o spp_telnet_negotiation.o spo_csv.o \
sp_ip_same_check.o sp_priority.o sp_ip_proto.o ubi_BinTree.o \
ubi_SplayTree.o spo_unified.o spp_stream4.o spp_frag2.o spp_arpspoof.o \
spo_idmef.o spo_SnmpTrap.o spo_log_null.o spp_fnord.o ←記述

〜省略〜

plugbase.cの編集

 同様に、「plugbase.c」の「InitPreprocessors()」部分のルーチンに下記のように記述して保存する。

# vi plugbase.c

〜省略〜

void InitPreprocessors()
{
if(!pv.quiet_flag)
{
printf("Initializing Preprocessors!\n");
}
SetupHttpDecode();
SetupPortscan();
SetupPortscanIgnoreHosts();
SetupDefrag();
SetupTcpStream2();
SetupSpade();
SetupUnidecode();
SetupRpcDecode();
SetupBo();
SetupTelNeg();
SetupStream4();
SetupFrag2();
SetupARPspoof();
SetupFnord(); ←記述
}

〜省略〜

インストール

 Snortが起動している場合はmake後にSnortを終了させてから、make installを行う。

# make
# killall snort
# make install

snort.confの編集

 /etc/snort以下にあるsnort.confのpreprocessor部分に、導入したfnordの記述を加える。「ポート番号:長さ;」のように、セミコロン区切りで入力すればよい。長さの最大値は2048で、0にするとそのポートを無視するという意味になる。ポート80番のデフォルト値は768だが、そのほかは384となっている。

例)
preprocessor fnord: 80:768; 110:768;

 以上で導入が完了する。あとはSnortを再起動すればよい。

preprocessor fnord導入後のアタック

 では、fnordを導入後に、先ほどと同様にADMmutateを利用したアタックを行った結果を見てみよう。

 下記のログから、アタックは「spp_fnord: Possible Mutated IA32 NOP sled detected」として検出されていることがわかる。今回はさなざなな攻撃でテストしたわけではないが、導入しておくのも1つの手だろう。

Snortのログ

○アラートログ

08/17-15:32:49.301713 [**] [114:1:1] spp_fnord: Possible Mutated IA32 NOP sled
detected.
[**] {TCP} 192.168.1.10:1050 -> 192.168.1.4:2600

○ログ

[**] spp_fnord: Possible Mutated IA32 NOP sled detected. [**]
08/17-15:32:49.301713 192.168.1.10:1050 -> 192.168.1.4:2600
TCP TTL:64 TOS:0x0 ID:2613 IpLen:20 DgmLen:1500 DF
***AP*** Seq: 0x1F0393CDAck: 0x4F020F8EWin: 0x7D78TcpLen: 32
TCP Options (3) => NOP NOP TS: 237861 2308427
49 27 60 9B 98 37 98 4C 5A 53 3F 49 47 44 93 FC I'`..7.LZS?IGD..
56 4E 5E 4B 92 3F 48 37 F5 60 53 42 96 93 4B 95VN^K.?H7.`SB..K.
42 97 95 93 54 50 98 54 57 42 9F 46 4D 27 49 3FB...TP.TWB.FM'I?
54 9C 5A F8 99 45 43 5F F8 41 49 3F FC 54 F9 43T.Z..EC_.AI?.T.C
97 97 59 5D 45 5F 43 92 2F 54 4B 4B 52 2F 4D 44..Y]E_C./TKKR/MD
54 5B F8 45 9E FC 49 4D FC 5A 2F 27 93 4B F8 96T[.E..IM.Z/'.K..
48 56 42 4F 55 5A 9C 99 5B 51 5B 4E 52 5F 51 46HVBOUZ..[Q[NR_QF
91 5A 5B 53 41 5A 52 9F 57 5F F9 59 F8 53 2F FC.Z[SAZR.W_.Y.S/.
43 92 93 FC 44 F9 4C 55 50 52 97 2F 27 37 9B FCC...D.LUPR./'7..
4B 48 3F 46 F5 99 95 41 92 97 97 97 99 45 F8 99KH?F...A.....E..
〜以下略〜

PREV 4/5 NEXT