LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

ラックピープル | 

ChatGPTで業務効率化!次世代セキュリティ技術研究所の事例紹介

サイバー・グリッド・ジャパン 次世代セキュリティ技術研究所の三川みつかわです。

最近、OpenAIから公開されたChatGPTが注目を集めています。

ChatGPT

今回の記事では、私がオープンソースの情報共有プラットフォームである「MISP(Malware Information Sharing Platform)」の管理業務をするなかで、ChatGPTを取り入れ、実際に活用した事例を3つ紹介します。MISP関連に特化した内容ではありますが、ChatGPTは使い方次第で様々なビジネス領域で活用できるものだと考えています。

※ 以降の事例ではChatGPT PlusでGPT-4のモデルを使用していますが、全てChatGPTと記載します。

なお、当研究所では、MISPを使った脅威分析の取り組みを進めているので、併せてご覧いただけると幸いです。

IoC一覧からMISPインポートツール「MISP-CSVImport」登録用のCSVを作成する

さて、1つ目の事例からご紹介します。過去のLAC WATCH記事でも紹介しているように、当研究所からMISPへの脅威情報の登録を支援するツール「MISP-CSVImport」を公開しています。これは作成したCSVファイルの内容をMISPにイベントとして登録できるツールです。

ただ、このツールを使いMISPイベントを登録する場合、対象のIoCから登録用のCSVを手動で用意する必要があります。毎日複数のイベント登録をする場合、煩雑な作業が発生しミスも起こります。そこで今回、上記ツールに読み込ませるためのCSVファイルをChatGPTで作成しました。この作業にはChatGPT Plusの「Code Interpreter」を使います。

ツールを使うために、まずは2つのファイルを準備します。

  • 作成したいCSVのサンプル。上記のGitHubからsample.csvとして取得できます。
  • 登録したいIoC一覧ファイル。1行1値で記載したTXTを作成します。
登録したいIoC一覧ファイル
登録したいIoC一覧ファイル

上記2つのファイルを添付したうえで、以下の指示文(プロンプト)で目的のCSVが作成できました。

添付のsample.csvを参考に、以下の条件でCSVを出力してください。
・date: 本日
・Org: test-org
・User: test.user@test.localhost
・Event Title: test-event
・Event Tag: test-tag
・value: 添付のIoC.txtの値
・category: Network activity
・type: 値に応じて以下から選択
 ・url
 ・domain
 ・ip-dst←IPアドレスの場合
その他、値が不明の列は空白にしてください。

作成されたCSVが以下の通りです。

ChatGPTから出力されたCSV

カテゴリが固定値になっているなど、まだ汎用性には欠けるかもしれませんが、実質IoC一覧を用意するだけでCSV作成まで行えたことには感動を覚えました。

MISP-CSVImport/sample.csv at master · LAC-Japan/MISP-CSVImport · GitHub

MISPエクスポートツール「MISP-CSVExport」の開発に利用する

続いて、2つ目の事例です。こちらも先ほどと同様MISPを活用する支援ツールで、MISPのデータをCSVにエクスポートするものです。実はこのツール作成の中でもChatGPTを活用しています。

まずはChatGPTに要件を伝え、コードの大枠を作ってもらいました。

以下の要件で、Pythonスクリプトを作ってください。
・MISPからデータを検索する
・検索にはPythonライブラリのPyMISPを使う
・結果はCSVとして出力する
ChatGPTに要件を伝え、コードの大枠を作成してもらう様子

使われているライブラリのメソッドが一部古いなど問題はありましたが、最初から自分で作成するよりは随分楽になったと感じています。また、GitHubで公開するにあたり、READMEもChatGPTに作成してもらいました。

こちらのスクリプトをGitHubで公開したいと考えています。
READMEを英語で書いてください。
内容はmd形式で書いてください。
ChatGPTが作成したREADME

こちらは後半のmd形式が崩れていたので修正し、また一部説明を補足しました。ただそのまま使えるとまではいきませんが、ある程度良い結果が出力されたと考えています。

「Emotet」のタグがついたMISPアトリビュートを集計するSQLを出力する

最後に3つ目の事例をご覧いただきます。MISPの内部はMariaDBというデータベースでIoCを管理しています。IoCの集計をする場合、SQLを使い集計をすることもしばしばです。今回はそのSQLをChatGPTに作成してもらいました。

結論として、以下のような指示でうまく出力できました。

以下の条件通りにSQLを書いてください。
条件:
・attributeのtypeがdomain
・attributeのtimestampが2022年のもの
・attributeのtagにemotetを含むもの
・紐づくeventのthreat_levelがhighのもの
・attributeのvalue1ごとにcountを出す
・結果をcountの降順にソート
DBスキーマは以下の通りです。
ChatGPTが作成したSQL

合計5つのテーブルをJOINする必要があるのですが、そちらも問題なく理解しており驚かされました。また指示中にあるDBスキーマは以下のSQLで取得し、CSV形式にしたものです。

 SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'misp'
	AND TABLE_NAME IN (
        'events',
        'attributes',
        'attribute_tags',
        'tags',
        'threat_levels'
    );

上記の通り、TABLE_NAMEを処理に関連するもののみに絞っています。最初は全テーブルを出力していたのですが、ChatGPTの入力上限の問題があったため、出力テーブルを絞りました。

実は最初の事例と同様、Code InterpreterにてCSVファイルの添付なども試したのですが、私の環境では満足する結果は得られませんでした。こちらはまだ改善の余地があると思われるため、引き続き検証はしていく予定ですが、ChatGPTのさらなる発展にも期待しています。

おわりに

今回は、MISP関連に特化したChatGPTの活用事例を紹介しましたが、ChatGPTは使い方次第で様々な業務に活用できます。今回の事例が皆様の参考になったら嬉しいです。今後も当研究所ではChatGPTの検証を進め、結果を発信していきたいと考えています。特に現在ChatGPTのプラグイン開発を進めていますので、成果が出ましたらまたご紹介します。

最後になりますが、当研究所では数年前から脅威情報共有体制であるSecureGRIDアライアンスの運営を行っています。こちらでは、参加いただいている各組織のMISPを相互に検索することが可能になっています。

より詳しく知るにはこちら

より詳しく知るにはこちら

SecureGRIDアライアンスは、脅威情報の連携を図るための協力体制です。無料で参加できます。アライアンスに参加する組織は、メンバーの各組織が提供し合う「MISP」を相互に検索することが可能です。

またSecureGRIDアライアンスでは、毎週注目のセキュリティニュースを配信しています。この業務の一部にもChatGPTを活用しています。ChatGPTを使い、英語の記事から日本語の紹介文を作成し、ニュースの概要説明の参考にしています。ニュースは以下のX(旧Twitter)アカウントで発信しておりますので、こちらも合わせてご確認いただけますと幸いです。

この記事は役に立ちましたか?

はい いいえ