データサイエンス&サイバーセキュリティ備忘録

Python, Data Science, Kaggle, Cyber Security, CTF, などなど

攻撃自動検知モデルを作成するワークショップに参加しました

2019年12月21日と22日の2日間、秋葉原SECCON 2019 Akihabaraが開催されています。

このイベントでは、サイバーセキュリティに関するカンファレンス、ワークショップ、展示が行われています。

また、SECCON CTF 2019と呼ばれるセキュリティの技術を競う大会が開かれていて、2日間にかけて国内大会と国際大会の決勝戦があります。

大会の様子は会場で直接見ることができ、決勝戦ということもあって参加者の皆さんは凄く集中して落ち着きながら問題を解いているようでした!

写真は、国際大会のランキング表です。

なんだかエヴァンゲリオンっぽい笑

f:id:a7xche:20191221221736j:plain

 

21日に、開催前から気になっていた、攻撃自動検知ワークショップに参加してきました!

Cyber Securityと機械学習の両方に興味がある私にとっては、夢のようなワークショップだったため、楽しみ過ぎて会場には一番乗りでした。

 概要

クロスサイトスクリプティングXSS)を突く攻撃(XSS文字列)を検知するモデルを作成し、運営が用意したデータに対して”正常・攻撃”の二値分類(0 or 1)をするというものです。

モデルのベースは運営が用意したものを使用し、特徴量エンジニアリングやハイパーパラメータのチューニングをして検知の精度を上げて競いました。

データ

train/test dataは、tsv形式のファイルです。

ファイルの中身は、HTMLのソースコードと攻撃ペイロードのコードを混ぜたもので、train dataには正常か攻撃かのラベルも列としてありました。

モデル作成

ファイルの中身がソースコード(文字列)であるため、前処理の仕方としては自然言語処理に近い印象でした。

運営が用意したモデルは2種類あり、ナイーブベイズ分類器と多層パーセプトロンです。

コードを変更せずに二値分類することも可能でしたが、精度を上げるために特徴量エンジニアリングやハイパーパラメータのチューニングをしました。

ちなみにですが、モデルの作成をするときはサイバーセキュリティの知識は全く必要なく、機械学習モデルを構築できるスキルの方が重要でした。

結果

私は、多層パーセプトロンのモデルを改良して検知の結果を提出しました。

モデルの精度はそこそこ高かったのですが、accuracyはサイバーセキュリティの観点からすると低いので、まだまだ改良する必要があります。

攻撃を検知するのも大事ですが誤検知を防ぐことも大事なので、accuracyの数値が高いことが求められるとのこと。

余談ですが、今回のワークショップでaccuracyが99%の方がいましたが、train dataで攻撃ラベルが付いているデータを目視で見分け、test dataの正解ラベルには手打ちで入力したそうです。

なので、モデル作成も大事ですが、自然言語処理においてもEDAの大切さを改めて感じました。

 

ワークショップでは、機械学習モデルがサイバーセキュリティの分野でどのように活用されているのかと同時に、機械学習のモデル精度がより高く求められることを知ることができました。

引き続き、作成したコードを改良して勉強したいと思います。