SlideShare a Scribd company logo
1 of 13
Look-Ahead Left-Rightmost derivation法
のpcapファイル解析への適用
安藤類央 高倉弘喜
国立情報学研究所
サイバーセキュリティ研究開発センター
インターネットアーキテクチャ研究会(IA)第6回研究会
2016年12月15日 14:55-15:20
概要
近年、ネットワークの急速な高速化に伴い、大規模なpcapファ
イルを解析するケースが増えてきている。
本論文では、LALR(Look-Ahead Left-Rightmost derivation)構文
解析法を用いて、pcapファイルから、解析に必要 な情報を抽出
する手法を提案する。本手法では、tcpdumpなどでパースする際
のパケットヘッダのうち、一部の項目 のみを変換するため、効
率的な処理が可能になる。
また、提案手法ではsemantic actionを適用することが可能にな
り、ディスクI/Oの発生回数を抑えながら高速なリストのマッチ
ングやDB操作を行うことが可能ある。
研究の背景
• ネットワークの広帯域化と多様化
2016年時点で、ネットワークの広帯域化は急速に進展を続け ている。仮想
ネットワークと IoT 環境の普及は 2016 以降も急 激な加速化を続けると言
われており、IHS 社の推定によれば、 2013 年時点でインターネットにつな
がるモノ(IoT デバイス) の数は約 158 億個であり、2020 年までに約 530
億個まで増大 するとされている。
• ネットワークフォレンジック
ネットワークの広帯域化に加えて、ネットワークへの攻撃も 急速に多様化
しており、マルウェアによる感染や標的型攻撃に よる不正アクセスや情報
が搾取を、時点に完全に防止・抑止する ことは非常に難しくなっている。
このような現況で、インシデ ント発生後の証跡分析によって被害の実体を
明らかにするフォ レンジックの重要性が増している。
提案手法(1) match - action によるパース処理の省力化
match action
TCPDUMPを用いてヘッダ全体を解析する代わりに、
match-action処理で解析に必要な部分だけをパースする。
ヘッダ全体のパース結果から
解析対象の数値を抽出してINSERT
の2段階処理
ヘッダの解析対象部分が
マッチした時点でINSERTする1段階処理
提案手法(2)字句解析と構文解析の連携 (bison/flex)
Lexer
"08 00" {
return
token::PROTOCOL_TYPE;
}
Parser
header:
| PROTOCOL_TYPE
IP_LENGTH
{ /* semantic action */}
%token <string> BYTE
%token <string> PROTOCOL_TYPE
%token <string> IP_LENGTH
%union {
int ival;
double dval;
char *string;
};
0800
Byte Stream
Lexer
"45 00" {
return
token::IP_LENGTH;
}
Lexer
[a-z0-9][a-z0-9] {
yylval->string =
strdup(yytext);
return
token::BYTE;
45 00 *
任意のバイトはすべてマッチして
メモリに格納
プロトコルヘッダにマッチする
部分はトークンのみを返す
字句解析・構文解析の手法
• 再帰下降構文解析(さいきかこうこうぶんかいせき、Recursive Descent
Parsing)は、相互再帰型の手続き(あるいは再帰的でない同等の手続
き)で構成されるLL法のトップダウン構文解析。実装例: Boost::spirit
• LL法またはLL構文解析とは、文脈自由文法のサブセットのためのトップ
ダウン構文解析法の一種。k 個の字句(トークン)を先読みする場合、
LL(k) と表記する。実装例:Java, ANTLR, Android
• LRは、文脈自由文法の最右導出型の構文解析手法/構文解析器。 LALR は、
Lookahead-LR (先読み上昇型最右導出)の略。LALR(1) はLR 法に比較す
ると、スタックと表 をコンパクトにまとめることが可能であり、より実
用的である。実装例:Bison/flex, PostgreSQL
提案手法(3) MACアドレスの格納
45 0008 00
HEADER
PROTO_TYPE IP_LENGTH
COUNTER
Byte stream
ADDRESS
RESET
MATCH: STORE
header:
| PROTOCOL_TYPE IP_LENGTH
i = strlen(dump);
sprintf(srcmac,"%c%c%c%c%c%c%
c%c%c%c%c%c", dump[i-24],
dump[i-23], dump[i-22], dump[i-
21], dump[i-20], dump[i-19],
dump[i-18], dump[i-17], dump[i-
16], dump[i-15], dump[i-14],
dump[i-13]);
parser
bytes:
| BYTE
{
printf("%s(%d) ", yyla.value.string, block_counter);
strcpy(byte, yyla.value.string);
lexer
[a-z0-9][a-z0-9] {
yylval->string = strdup(yytext);
return token::BYTE;
"08 00" {
return token::PROTOCOL_TYPE;
}
"45 00" {
return token::IP_LENGTH;
}
"08 00" "45" "00"にマッチした時点でメモリ(配列)に格納して
いた文字列を変数srcmacに格納する。
提案手法(4) Semantic action によるパース処理の高度化
match action
統計処理
機械学習処理
集計処理
Semantic actionを加えることにより、複数のPCAPファイルを処理中にデータベース操作や統計処理などが可
能になる。
db.access_logs.mapReduce(
"function() {
emit(this.packet_id, {count:1});
}",
"function(key,values) {
var result = {count:0};
values.forEach(function(v){result.count += v.count;});
return result;
}",
{query: packet_id:"10"},out:{inline:1}})
評価実験に用いたPCAPファイル
Security Related
•activeosfingerprinting.pcap – An NMap OS fingerprinting scan
•arppoison.pcap – Demonstration of ARP cache poisoning at the
packet level
•aurora.pcap – A lab system being exploited by the aurora exploit
used against Google and others. Created using Metasploit.
•ratinfected.pcap – A lab system infected with a remote access trojan
sending data back to its upstream host
•synscan.pcap – A basic TCP SYN scan
Wireless Networking
•80211beacon.pcap – An 802.11 wireless beacon packet collected
from a WinPCap adapter
•80211-WEPauth.pcap – A successful 802.11 wireless WEP
authentication sequence
•80211-WEPauthfail.pcap – A failed 802.11 wireless WEP
authentication sequence
•80211-WPAauth.pcap – A successful 802.11 wireless WPA
authentication sequence
•80211-WPAauthfail.pcap – A failed 802.11 wireless WPA
authentication sequence
Common Protocols
•arp_gratuitous.pcap – A gratuitous ARP packet
•arp_resolution.pcap – The ARP resolution process
•dhcp_inlease_renewal.pcap – A DHCP client obtaining an IP address while inside its
lease time
•dhcp_nolease_renewal.pcap – A DHCP client obtaining an IP address while outside of
its lease time
•dns_axfr.pcap – A DNS full zone transfer
•dns_query_response.pcap – A simple DNS query and response
•dns_recursivequery_client.pcap – A recursive query as viewed from the clients
perspective
•dns_recursivequery_server.pcap – A recursive query as viewed from the intermediate
servers perspective
•http_espn.pcap – HTTP communication while browsing to ESPN.com
•http_google.pcap – HTTP communication while browsing to ESPN.com
•icmp_echo.pcap – A sample of ICMP echo requests and replies created by the ping
tool
•icmp_traceroute.pcap – Sample ICMP traffic generated by the traceroute tool
•ip_frag_source.pcap – Fragmented IP packets
•tcp_dupack.pcap – Duplicate ACK packets generated as a result of high latency
•tcp_handshake.pcap – The TCP connection initiation process
•tcp_refuseconnections.pcap – A TCP SYN followed by a RST from a failed
communication attempt
•tcp_retransmissions.pcap – Example of retransmissions that are a result of dropped
packets
•tcp_teardown.pcap – The TCP connection completion process
•tcp_zerowindowdead.pcap – TCP flow control halting an established connection
•tcp_zerowindowrecovery.pcap – TCP flow control stopping and then resuming an
established connection
評価実験1(DB操作なし)
データタイプ パケット数 ファイル数 ファイルサイズ
a 100940 18386k
b 12858 18317k
c 14086 18372k
データタイプ 提案手法
tcpdump tcpdump
a 3m29982 1m50.988 0m22.537
b 0m23.083 0m15.167 0m7.249
c 0m2.481 0m1.153 0m0.170
評価実験2 (小さなpcapファイルと解析とDB操作)
ip_frag_source.pcap – Fragmented IP packets
-bash-4.1# ls ip_frag_source.pcap -alh
-rw-r--r-- 1 root root 7.2K Apr 12 2011 ip_frag_source.pcap
-bash-4.1# time ./parse < dump-ip_flag_source > tmp
real 0m0.033s
user 0m0.028s
sys 0m0.005s
-bash-4.1# time tcpdump -XA -vv -r ip_frag_source.pcap >
tmp
reading from file ip_frag_source.pcap, link-type EN10MB
(Ethernet)
real 0m0.012s
user 0m0.004s
sys 0m0.006s
-bash-4.1# time grep length tcpdump-ip_flag_source | cut -
d"," -f7
-bash-4.1# time ./test-insert.sh tmp
real 0m1.115s
user 0m0.928s
sys 0m0.146s
Twitter_dm.pcap - Twitter direct message
-bash-4.1# ls -alh twitter_dm.pcap
-rw-r--r-- 1 root root 4.4K Apr 12 2011 twitter_dm.pcap
-bash-4.1# time ./parse < dump-twitter_dm > tmp
real 0m0.026s
user 0m0.022s
sys 0m0.003s
-bash-4.1# time tcpdump -XA -vv -r twitter_dm.pcap > tmp
reading from file twitter_dm.pcap, link-type EN10MB (Ethernet)
real 0m0.456s
user 0m0.008s
sys 0m0.001s
-bash-4.1# time grep length tcpdump-twitter_dm | cut -d"," -f7
-bash-4.1# time ./test-insert.sh tmp2
real 0m3.898s
user 0m3.186s
sys 0m0.589s
評価実験3 (大きいpcapファイルの解析とDB操作)
ratinfected.pcap – A lab system infected with a remote
access trojan sending data back to its upstream host
-bash-4.1# ls ratinfected.pcap -alh
-rw-r--r-- 1 root root 558K Apr 12 2011 ratinfected.pcap
-bash-4.1# time ./parse < dump-ratinfected > tmp
real 0m2.520s
user 0m1.327s
sys 0m0.025s
-bash-4.1# time tcpdump -A -r ratinfected.pcap > tmp
reading from file ratinfected.pcap, link-type EN10MB
(Ethernet)
real 0m0.074s
user 0m0.025s
sys 0m0.006s
-bash-4.1# time grep length tcpdump-ratinfected | cut -d","
-f7
-bash-4.1# time ./test-insert.sh tmp
real 3m23.138s
user 2m51.618s
sys 0m29.775s
Download-fast.pcap Fast-download
# ls -alh download-fast.pcap
-rw-r--r-- 1 root root 85M Apr 8 2011 download-fast.pcap
-bash-4.1# time ./parse < dump > tmp
real 3m50.127s
user 3m45.217s
sys 0m2.540s
-bash-4.1# time tcpdump -XA -vv -r download-fast.pcap > tmp
reading from file download-fast.pcap, link-type EN10MB (Ethernet)
real 0m24.763s
user 0m12.626s
sys 0m0.701s
-bash-4.1# time grep length tcpdump-download-fast | cut -d"," -f7
-bash-4.1# time ./test-insert.sh list
real 36m52.282s
user 31m11.860s
sys 5m26.755s
まとめと今後の課題
近年、ネットワークの急速な高速化に伴い、大規模なpcapファ
イルを解析するケースが増えてきている。
本論文では、LALR(Look-Ahead Left-Rightmost derivation)構文
解析法を用いて、pcapファイルから、解析に必要 な情報を抽出
する手法を提案する。本手法では、tcpdumpなどでパースする際
のパケットヘッダのうち、一部の項目 のみを変換するため、効
率的な処理が可能になる。
今後の課題としては、データベース(RDB、KVS)へのクエリ発
行回数を削減(キャッシュ)し、より高速化を図ることなどがあ
げられる。

More Related Content

What's hot

低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法について
低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法について低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法について
低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法についてAtsushi Suzuki
 
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料SECCON Beginners
 
Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)ashigirl ZareGoto
 
Pythonでパケット解析
Pythonでパケット解析Pythonでパケット解析
Pythonでパケット解析euphoricwavism
 
ウェブアーキテクチャの歴史と未来
ウェブアーキテクチャの歴史と未来ウェブアーキテクチャの歴史と未来
ウェブアーキテクチャの歴史と未来Kazuho Oku
 
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料KamezawaHiroyuki
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話Kazuho Oku
 
Solarflare SolarCapture - 10Gbイーサネットパケットキャプチャソフトウェア リリース
Solarflare SolarCapture - 10Gbイーサネットパケットキャプチャソフトウェア リリースSolarflare SolarCapture - 10Gbイーサネットパケットキャプチャソフトウェア リリース
Solarflare SolarCapture - 10Gbイーサネットパケットキャプチャソフトウェア リリースAtsushi Suzuki
 
Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編Taro L. Saito
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例kazuhcurry
 
ログ収集フレームワークの新バージョン「FlumeNG」
ログ収集フレームワークの新バージョン「FlumeNG」ログ収集フレームワークの新バージョン「FlumeNG」
ログ収集フレームワークの新バージョン「FlumeNG」AdvancedTechNight
 
nftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in Linuxnftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in LinuxTomofumi Hayashi
 
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409稔 小林
 
遊休リソースを用いた 相同性検索処理の並列化とその評価
遊休リソースを用いた相同性検索処理の並列化とその評価遊休リソースを用いた相同性検索処理の並列化とその評価
遊休リソースを用いた 相同性検索処理の並列化とその評価Satoshi Nagayasu
 
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Panda Yamaki
 

What's hot (20)

Scapy presentation
Scapy presentationScapy presentation
Scapy presentation
 
低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法について
低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法について低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法について
低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法について
 
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
 
Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)
 
Pythonでパケット解析
Pythonでパケット解析Pythonでパケット解析
Pythonでパケット解析
 
ウェブアーキテクチャの歴史と未来
ウェブアーキテクチャの歴史と未来ウェブアーキテクチャの歴史と未来
ウェブアーキテクチャの歴史と未来
 
Fluentd meetup #2
Fluentd meetup #2Fluentd meetup #2
Fluentd meetup #2
 
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 
Hadoop-3.2.0の新機能の紹介とJava9+対応のコミュニティ動向
Hadoop-3.2.0の新機能の紹介とJava9+対応のコミュニティ動向Hadoop-3.2.0の新機能の紹介とJava9+対応のコミュニティ動向
Hadoop-3.2.0の新機能の紹介とJava9+対応のコミュニティ動向
 
Solarflare SolarCapture - 10Gbイーサネットパケットキャプチャソフトウェア リリース
Solarflare SolarCapture - 10Gbイーサネットパケットキャプチャソフトウェア リリースSolarflare SolarCapture - 10Gbイーサネットパケットキャプチャソフトウェア リリース
Solarflare SolarCapture - 10Gbイーサネットパケットキャプチャソフトウェア リリース
 
Java11へのマイグレーションガイド ~Apache Hadoopの事例~
Java11へのマイグレーションガイド ~Apache Hadoopの事例~Java11へのマイグレーションガイド ~Apache Hadoopの事例~
Java11へのマイグレーションガイド ~Apache Hadoopの事例~
 
Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
 
ログ収集フレームワークの新バージョン「FlumeNG」
ログ収集フレームワークの新バージョン「FlumeNG」ログ収集フレームワークの新バージョン「FlumeNG」
ログ収集フレームワークの新バージョン「FlumeNG」
 
nftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in Linuxnftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in Linux
 
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409
 
遊休リソースを用いた 相同性検索処理の並列化とその評価
遊休リソースを用いた相同性検索処理の並列化とその評価遊休リソースを用いた相同性検索処理の並列化とその評価
遊休リソースを用いた 相同性検索処理の並列化とその評価
 
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
 
20120423 hbase勉強会
20120423 hbase勉強会20120423 hbase勉強会
20120423 hbase勉強会
 

Similar to Ia 2016-12-15

システムパフォーマンス勉強会#8
システムパフォーマンス勉強会#8システムパフォーマンス勉強会#8
システムパフォーマンス勉強会#8shingo suzuki
 
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらインターネット株式会社
 
Hokkaido.cap#7 ケーススタディ(セキュリティ解析:前編)
Hokkaido.cap#7 ケーススタディ(セキュリティ解析:前編)Hokkaido.cap#7 ケーススタディ(セキュリティ解析:前編)
Hokkaido.cap#7 ケーススタディ(セキュリティ解析:前編)Panda Yamaki
 
Atc15_reading_networking_session
Atc15_reading_networking_sessionAtc15_reading_networking_session
Atc15_reading_networking_session紘也 金子
 
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料Yasutaka Hamada
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-靖 小田島
 
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測Hidenori Goto
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理Takuya ASADA
 
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたNarami Kiyokura
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめKenichi Sonoda
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始めtetsusat
 
OpenStack + Common Lisp
OpenStack + Common LispOpenStack + Common Lisp
OpenStack + Common Lispirix_jp
 
Rouault imbert view_alpc_rpc_pacsec_jp
Rouault imbert view_alpc_rpc_pacsec_jpRouault imbert view_alpc_rpc_pacsec_jp
Rouault imbert view_alpc_rpc_pacsec_jpPacSecJP
 
Trema day 1
Trema day 1Trema day 1
Trema day 1ykuga
 
OLD_Lt traffic analyse_OLD
OLD_Lt traffic analyse_OLDOLD_Lt traffic analyse_OLD
OLD_Lt traffic analyse_OLD@ otsuka752
 
Linuxサーバのセキュリティ対策 part1
Linuxサーバのセキュリティ対策 part1Linuxサーバのセキュリティ対策 part1
Linuxサーバのセキュリティ対策 part1Kazunori Inaba
 

Similar to Ia 2016-12-15 (20)

システムパフォーマンス勉強会#8
システムパフォーマンス勉強会#8システムパフォーマンス勉強会#8
システムパフォーマンス勉強会#8
 
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
 
Hokkaido.cap#7 ケーススタディ(セキュリティ解析:前編)
Hokkaido.cap#7 ケーススタディ(セキュリティ解析:前編)Hokkaido.cap#7 ケーススタディ(セキュリティ解析:前編)
Hokkaido.cap#7 ケーススタディ(セキュリティ解析:前編)
 
Atc15_reading_networking_session
Atc15_reading_networking_sessionAtc15_reading_networking_session
Atc15_reading_networking_session
 
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
 
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 
Pakeana 06
Pakeana 06Pakeana 06
Pakeana 06
 
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
 
about Tcpreplay
about Tcpreplayabout Tcpreplay
about Tcpreplay
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
OpenStack + Common Lisp
OpenStack + Common LispOpenStack + Common Lisp
OpenStack + Common Lisp
 
Rouault imbert view_alpc_rpc_pacsec_jp
Rouault imbert view_alpc_rpc_pacsec_jpRouault imbert view_alpc_rpc_pacsec_jp
Rouault imbert view_alpc_rpc_pacsec_jp
 
Trema day 1
Trema day 1Trema day 1
Trema day 1
 
OLD_Lt traffic analyse_OLD
OLD_Lt traffic analyse_OLDOLD_Lt traffic analyse_OLD
OLD_Lt traffic analyse_OLD
 
Software forwarding path
Software forwarding pathSoftware forwarding path
Software forwarding path
 
Linuxサーバのセキュリティ対策 part1
Linuxサーバのセキュリティ対策 part1Linuxサーバのセキュリティ対策 part1
Linuxサーバのセキュリティ対策 part1
 

More from Ruo Ando

KISTI-NII Joint Security Workshop 2023.pdf
KISTI-NII Joint Security Workshop 2023.pdfKISTI-NII Joint Security Workshop 2023.pdf
KISTI-NII Joint Security Workshop 2023.pdfRuo Ando
 
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤Ruo Ando
 
解説#86 決定木 - ss.pdf
解説#86 決定木 - ss.pdf解説#86 決定木 - ss.pdf
解説#86 決定木 - ss.pdfRuo Ando
 
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座 ~アイドル戦略に見るDXを専門家が徹底解説~
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座  ~アイドル戦略に見るDXを専門家が徹底解説~SaaSアカデミー for バックオフィス アイドルと学ぶDX講座  ~アイドル戦略に見るDXを専門家が徹底解説~
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座 ~アイドル戦略に見るDXを専門家が徹底解説~Ruo Ando
 
解説#83 情報エントロピー
解説#83 情報エントロピー解説#83 情報エントロピー
解説#83 情報エントロピーRuo Ando
 
解説#82 記号論理学
解説#82 記号論理学解説#82 記号論理学
解説#82 記号論理学Ruo Ando
 
解説#81 ロジスティック回帰
解説#81 ロジスティック回帰解説#81 ロジスティック回帰
解説#81 ロジスティック回帰Ruo Ando
 
解説#74 連結リスト
解説#74 連結リスト解説#74 連結リスト
解説#74 連結リストRuo Ando
 
解説#76 福岡正信
解説#76 福岡正信解説#76 福岡正信
解説#76 福岡正信Ruo Ando
 
解説#77 非加算無限
解説#77 非加算無限解説#77 非加算無限
解説#77 非加算無限Ruo Ando
 
解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレス解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレスRuo Ando
 
解説#78 誤差逆伝播
解説#78 誤差逆伝播解説#78 誤差逆伝播
解説#78 誤差逆伝播Ruo Ando
 
解説#73 ハフマン符号
解説#73 ハフマン符号解説#73 ハフマン符号
解説#73 ハフマン符号Ruo Ando
 
【技術解説20】 ミニバッチ確率的勾配降下法
【技術解説20】 ミニバッチ確率的勾配降下法【技術解説20】 ミニバッチ確率的勾配降下法
【技術解説20】 ミニバッチ確率的勾配降下法Ruo Ando
 
【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-freeRuo Ando
 
ITmedia Security Week 2021 講演資料
ITmedia Security Week 2021 講演資料 ITmedia Security Week 2021 講演資料
ITmedia Security Week 2021 講演資料 Ruo Ando
 
ファジングの解説
ファジングの解説ファジングの解説
ファジングの解説Ruo Ando
 
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月Ruo Ando
 
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰Ruo Ando
 
Intel Trusted Computing Group 1st Workshop
Intel Trusted Computing Group 1st WorkshopIntel Trusted Computing Group 1st Workshop
Intel Trusted Computing Group 1st WorkshopRuo Ando
 

More from Ruo Ando (20)

KISTI-NII Joint Security Workshop 2023.pdf
KISTI-NII Joint Security Workshop 2023.pdfKISTI-NII Joint Security Workshop 2023.pdf
KISTI-NII Joint Security Workshop 2023.pdf
 
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤
 
解説#86 決定木 - ss.pdf
解説#86 決定木 - ss.pdf解説#86 決定木 - ss.pdf
解説#86 決定木 - ss.pdf
 
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座 ~アイドル戦略に見るDXを専門家が徹底解説~
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座  ~アイドル戦略に見るDXを専門家が徹底解説~SaaSアカデミー for バックオフィス アイドルと学ぶDX講座  ~アイドル戦略に見るDXを専門家が徹底解説~
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座 ~アイドル戦略に見るDXを専門家が徹底解説~
 
解説#83 情報エントロピー
解説#83 情報エントロピー解説#83 情報エントロピー
解説#83 情報エントロピー
 
解説#82 記号論理学
解説#82 記号論理学解説#82 記号論理学
解説#82 記号論理学
 
解説#81 ロジスティック回帰
解説#81 ロジスティック回帰解説#81 ロジスティック回帰
解説#81 ロジスティック回帰
 
解説#74 連結リスト
解説#74 連結リスト解説#74 連結リスト
解説#74 連結リスト
 
解説#76 福岡正信
解説#76 福岡正信解説#76 福岡正信
解説#76 福岡正信
 
解説#77 非加算無限
解説#77 非加算無限解説#77 非加算無限
解説#77 非加算無限
 
解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレス解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレス
 
解説#78 誤差逆伝播
解説#78 誤差逆伝播解説#78 誤差逆伝播
解説#78 誤差逆伝播
 
解説#73 ハフマン符号
解説#73 ハフマン符号解説#73 ハフマン符号
解説#73 ハフマン符号
 
【技術解説20】 ミニバッチ確率的勾配降下法
【技術解説20】 ミニバッチ確率的勾配降下法【技術解説20】 ミニバッチ確率的勾配降下法
【技術解説20】 ミニバッチ確率的勾配降下法
 
【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free
 
ITmedia Security Week 2021 講演資料
ITmedia Security Week 2021 講演資料 ITmedia Security Week 2021 講演資料
ITmedia Security Week 2021 講演資料
 
ファジングの解説
ファジングの解説ファジングの解説
ファジングの解説
 
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
 
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
 
Intel Trusted Computing Group 1st Workshop
Intel Trusted Computing Group 1st WorkshopIntel Trusted Computing Group 1st Workshop
Intel Trusted Computing Group 1st Workshop
 

Ia 2016-12-15

  • 1. Look-Ahead Left-Rightmost derivation法 のpcapファイル解析への適用 安藤類央 高倉弘喜 国立情報学研究所 サイバーセキュリティ研究開発センター インターネットアーキテクチャ研究会(IA)第6回研究会 2016年12月15日 14:55-15:20
  • 2. 概要 近年、ネットワークの急速な高速化に伴い、大規模なpcapファ イルを解析するケースが増えてきている。 本論文では、LALR(Look-Ahead Left-Rightmost derivation)構文 解析法を用いて、pcapファイルから、解析に必要 な情報を抽出 する手法を提案する。本手法では、tcpdumpなどでパースする際 のパケットヘッダのうち、一部の項目 のみを変換するため、効 率的な処理が可能になる。 また、提案手法ではsemantic actionを適用することが可能にな り、ディスクI/Oの発生回数を抑えながら高速なリストのマッチ ングやDB操作を行うことが可能ある。
  • 3. 研究の背景 • ネットワークの広帯域化と多様化 2016年時点で、ネットワークの広帯域化は急速に進展を続け ている。仮想 ネットワークと IoT 環境の普及は 2016 以降も急 激な加速化を続けると言 われており、IHS 社の推定によれば、 2013 年時点でインターネットにつな がるモノ(IoT デバイス) の数は約 158 億個であり、2020 年までに約 530 億個まで増大 するとされている。 • ネットワークフォレンジック ネットワークの広帯域化に加えて、ネットワークへの攻撃も 急速に多様化 しており、マルウェアによる感染や標的型攻撃に よる不正アクセスや情報 が搾取を、時点に完全に防止・抑止する ことは非常に難しくなっている。 このような現況で、インシデ ント発生後の証跡分析によって被害の実体を 明らかにするフォ レンジックの重要性が増している。
  • 4. 提案手法(1) match - action によるパース処理の省力化 match action TCPDUMPを用いてヘッダ全体を解析する代わりに、 match-action処理で解析に必要な部分だけをパースする。 ヘッダ全体のパース結果から 解析対象の数値を抽出してINSERT の2段階処理 ヘッダの解析対象部分が マッチした時点でINSERTする1段階処理
  • 5. 提案手法(2)字句解析と構文解析の連携 (bison/flex) Lexer "08 00" { return token::PROTOCOL_TYPE; } Parser header: | PROTOCOL_TYPE IP_LENGTH { /* semantic action */} %token <string> BYTE %token <string> PROTOCOL_TYPE %token <string> IP_LENGTH %union { int ival; double dval; char *string; }; 0800 Byte Stream Lexer "45 00" { return token::IP_LENGTH; } Lexer [a-z0-9][a-z0-9] { yylval->string = strdup(yytext); return token::BYTE; 45 00 * 任意のバイトはすべてマッチして メモリに格納 プロトコルヘッダにマッチする 部分はトークンのみを返す
  • 6. 字句解析・構文解析の手法 • 再帰下降構文解析(さいきかこうこうぶんかいせき、Recursive Descent Parsing)は、相互再帰型の手続き(あるいは再帰的でない同等の手続 き)で構成されるLL法のトップダウン構文解析。実装例: Boost::spirit • LL法またはLL構文解析とは、文脈自由文法のサブセットのためのトップ ダウン構文解析法の一種。k 個の字句(トークン)を先読みする場合、 LL(k) と表記する。実装例:Java, ANTLR, Android • LRは、文脈自由文法の最右導出型の構文解析手法/構文解析器。 LALR は、 Lookahead-LR (先読み上昇型最右導出)の略。LALR(1) はLR 法に比較す ると、スタックと表 をコンパクトにまとめることが可能であり、より実 用的である。実装例:Bison/flex, PostgreSQL
  • 7. 提案手法(3) MACアドレスの格納 45 0008 00 HEADER PROTO_TYPE IP_LENGTH COUNTER Byte stream ADDRESS RESET MATCH: STORE header: | PROTOCOL_TYPE IP_LENGTH i = strlen(dump); sprintf(srcmac,"%c%c%c%c%c%c% c%c%c%c%c%c", dump[i-24], dump[i-23], dump[i-22], dump[i- 21], dump[i-20], dump[i-19], dump[i-18], dump[i-17], dump[i- 16], dump[i-15], dump[i-14], dump[i-13]); parser bytes: | BYTE { printf("%s(%d) ", yyla.value.string, block_counter); strcpy(byte, yyla.value.string); lexer [a-z0-9][a-z0-9] { yylval->string = strdup(yytext); return token::BYTE; "08 00" { return token::PROTOCOL_TYPE; } "45 00" { return token::IP_LENGTH; } "08 00" "45" "00"にマッチした時点でメモリ(配列)に格納して いた文字列を変数srcmacに格納する。
  • 8. 提案手法(4) Semantic action によるパース処理の高度化 match action 統計処理 機械学習処理 集計処理 Semantic actionを加えることにより、複数のPCAPファイルを処理中にデータベース操作や統計処理などが可 能になる。 db.access_logs.mapReduce( "function() { emit(this.packet_id, {count:1}); }", "function(key,values) { var result = {count:0}; values.forEach(function(v){result.count += v.count;}); return result; }", {query: packet_id:"10"},out:{inline:1}})
  • 9. 評価実験に用いたPCAPファイル Security Related •activeosfingerprinting.pcap – An NMap OS fingerprinting scan •arppoison.pcap – Demonstration of ARP cache poisoning at the packet level •aurora.pcap – A lab system being exploited by the aurora exploit used against Google and others. Created using Metasploit. •ratinfected.pcap – A lab system infected with a remote access trojan sending data back to its upstream host •synscan.pcap – A basic TCP SYN scan Wireless Networking •80211beacon.pcap – An 802.11 wireless beacon packet collected from a WinPCap adapter •80211-WEPauth.pcap – A successful 802.11 wireless WEP authentication sequence •80211-WEPauthfail.pcap – A failed 802.11 wireless WEP authentication sequence •80211-WPAauth.pcap – A successful 802.11 wireless WPA authentication sequence •80211-WPAauthfail.pcap – A failed 802.11 wireless WPA authentication sequence Common Protocols •arp_gratuitous.pcap – A gratuitous ARP packet •arp_resolution.pcap – The ARP resolution process •dhcp_inlease_renewal.pcap – A DHCP client obtaining an IP address while inside its lease time •dhcp_nolease_renewal.pcap – A DHCP client obtaining an IP address while outside of its lease time •dns_axfr.pcap – A DNS full zone transfer •dns_query_response.pcap – A simple DNS query and response •dns_recursivequery_client.pcap – A recursive query as viewed from the clients perspective •dns_recursivequery_server.pcap – A recursive query as viewed from the intermediate servers perspective •http_espn.pcap – HTTP communication while browsing to ESPN.com •http_google.pcap – HTTP communication while browsing to ESPN.com •icmp_echo.pcap – A sample of ICMP echo requests and replies created by the ping tool •icmp_traceroute.pcap – Sample ICMP traffic generated by the traceroute tool •ip_frag_source.pcap – Fragmented IP packets •tcp_dupack.pcap – Duplicate ACK packets generated as a result of high latency •tcp_handshake.pcap – The TCP connection initiation process •tcp_refuseconnections.pcap – A TCP SYN followed by a RST from a failed communication attempt •tcp_retransmissions.pcap – Example of retransmissions that are a result of dropped packets •tcp_teardown.pcap – The TCP connection completion process •tcp_zerowindowdead.pcap – TCP flow control halting an established connection •tcp_zerowindowrecovery.pcap – TCP flow control stopping and then resuming an established connection
  • 10. 評価実験1(DB操作なし) データタイプ パケット数 ファイル数 ファイルサイズ a 100940 18386k b 12858 18317k c 14086 18372k データタイプ 提案手法 tcpdump tcpdump a 3m29982 1m50.988 0m22.537 b 0m23.083 0m15.167 0m7.249 c 0m2.481 0m1.153 0m0.170
  • 11. 評価実験2 (小さなpcapファイルと解析とDB操作) ip_frag_source.pcap – Fragmented IP packets -bash-4.1# ls ip_frag_source.pcap -alh -rw-r--r-- 1 root root 7.2K Apr 12 2011 ip_frag_source.pcap -bash-4.1# time ./parse < dump-ip_flag_source > tmp real 0m0.033s user 0m0.028s sys 0m0.005s -bash-4.1# time tcpdump -XA -vv -r ip_frag_source.pcap > tmp reading from file ip_frag_source.pcap, link-type EN10MB (Ethernet) real 0m0.012s user 0m0.004s sys 0m0.006s -bash-4.1# time grep length tcpdump-ip_flag_source | cut - d"," -f7 -bash-4.1# time ./test-insert.sh tmp real 0m1.115s user 0m0.928s sys 0m0.146s Twitter_dm.pcap - Twitter direct message -bash-4.1# ls -alh twitter_dm.pcap -rw-r--r-- 1 root root 4.4K Apr 12 2011 twitter_dm.pcap -bash-4.1# time ./parse < dump-twitter_dm > tmp real 0m0.026s user 0m0.022s sys 0m0.003s -bash-4.1# time tcpdump -XA -vv -r twitter_dm.pcap > tmp reading from file twitter_dm.pcap, link-type EN10MB (Ethernet) real 0m0.456s user 0m0.008s sys 0m0.001s -bash-4.1# time grep length tcpdump-twitter_dm | cut -d"," -f7 -bash-4.1# time ./test-insert.sh tmp2 real 0m3.898s user 0m3.186s sys 0m0.589s
  • 12. 評価実験3 (大きいpcapファイルの解析とDB操作) ratinfected.pcap – A lab system infected with a remote access trojan sending data back to its upstream host -bash-4.1# ls ratinfected.pcap -alh -rw-r--r-- 1 root root 558K Apr 12 2011 ratinfected.pcap -bash-4.1# time ./parse < dump-ratinfected > tmp real 0m2.520s user 0m1.327s sys 0m0.025s -bash-4.1# time tcpdump -A -r ratinfected.pcap > tmp reading from file ratinfected.pcap, link-type EN10MB (Ethernet) real 0m0.074s user 0m0.025s sys 0m0.006s -bash-4.1# time grep length tcpdump-ratinfected | cut -d"," -f7 -bash-4.1# time ./test-insert.sh tmp real 3m23.138s user 2m51.618s sys 0m29.775s Download-fast.pcap Fast-download # ls -alh download-fast.pcap -rw-r--r-- 1 root root 85M Apr 8 2011 download-fast.pcap -bash-4.1# time ./parse < dump > tmp real 3m50.127s user 3m45.217s sys 0m2.540s -bash-4.1# time tcpdump -XA -vv -r download-fast.pcap > tmp reading from file download-fast.pcap, link-type EN10MB (Ethernet) real 0m24.763s user 0m12.626s sys 0m0.701s -bash-4.1# time grep length tcpdump-download-fast | cut -d"," -f7 -bash-4.1# time ./test-insert.sh list real 36m52.282s user 31m11.860s sys 5m26.755s
  • 13. まとめと今後の課題 近年、ネットワークの急速な高速化に伴い、大規模なpcapファ イルを解析するケースが増えてきている。 本論文では、LALR(Look-Ahead Left-Rightmost derivation)構文 解析法を用いて、pcapファイルから、解析に必要 な情報を抽出 する手法を提案する。本手法では、tcpdumpなどでパースする際 のパケットヘッダのうち、一部の項目 のみを変換するため、効 率的な処理が可能になる。 今後の課題としては、データベース(RDB、KVS)へのクエリ発 行回数を削減(キャッシュ)し、より高速化を図ることなどがあ げられる。