『SkiaHelios』開発記 第1部:思考編 — 三大美徳と自動化への渇望
『SkiaHelios』開発記 — Perlの三大美徳が導いた、DFIRツールの高速化と自動化

「怠惰であれ、短気であれ、傲慢であれ。」
— Larry Wall (The Three Virtues of a Programmer)
プログラマにとっての「三大美徳」。
この言葉を、DFIR(Digital Forensics and Incident Response)の現場に適用したとき、それは単なる精神論ではなく、実用的なツール開発の指針となりました。
本記事では、自作のトリアージ/可視化ツール SkiaHelios
https://github.com/schutzz/SkiaHelios
の開発背景にある設計思想と、それを実現するための技術選定(Python, Polars, Rust)について、この「三大美徳」の観点から振り返ります。
背景:手動解析の限界と自動化への渇望
開発のきっかけは、SANS FOR500の学習中に感じた「手動解析の非効率さ」でした。
当初はPythonで書いた小さなスクリプトでしたが、実務レベルの知識が増えるにつれ、扱うデータ量は爆発的に増加しました。
- Laziness(怠惰):53万行のCSVと向き合わないために— ルーチンワークの完全自動化
MFT(Master File Table)を解析すると、平気で50万行を超えるレコードが出力されます。
これをExcelで開き、目視で異常を探す作業は、インシデントレスポンスの初動においてあまりに非効率です。しかも、実際の事案ではこれが複数台、数TBの規模になります。
「労力を減らすための労力は惜しまない」 というプログラマ的な怠惰心に従い、私は異常検知ロジックのコード化を進めました。
既知の攻撃パターンや異常値を定義し、フィルタリングを自動化することで、人間は「判断」のみに集中できる環境を目指しました。
- Impatience(短気):0.1秒でも速く結果を知るために— PolarsとRustによる高速化
解析対象がMFT、LNK、Prefetch、Registryと増えるにつれ、新たな課題が浮上しました。「処理待ち時間」です。
当初使用していたPandasでは、数GBのデータ処理に分単位の待ち時間が発生していました。
DFIRにおいて、思考の速度とツールの応答速度のギャップは致命的です。仮説検証のサイクルを回そうとするたびに待たされては、思考が分断されてしまいます。
そこで、データ処理基盤を Polars へと移行しました。
行指向から列指向(Apache Arrow)へのパラダイムシフトにより、4GBのデータを約0.6秒で処理できるパフォーマンスを達成。
しかし、さらに複雑な推論やルール検知を実装するには、Pythonだけでは限界が見えています。
現在はコアロジックの Rustライブラリ化 を進めており、「思考した瞬間に結果が出る」レイテンシを目指して最適化を続けています。
- Hubris(傲慢):巨人の肩の上で、さらに高く飛ぶために— 既存ツールへのリスペクトと、独自実装への挑戦
Eric Zimmerman氏のEZToolsをはじめ、既存のフォレンジックツールは非常に強力です。
しかし、それらは「正確なパース」に特化しており、出力された膨大なデータをどう料理するかは、依然として解析者のスキルとPCスペックに依存しています。
既存ツールの恩恵を受けつつも、
「現代的なアプローチ(Rust/Polars/AI)を用いれば、もっと効率的なトリアージが可能なのではないか?」
という一種の傲慢さが、独自エンジンの開発を後押ししました。
単にデータを抽出するだけでなく、「現場で即座に意思決定できる形」 に昇華すること。
そして、それをOSSとして公開(MIT License)し、コミュニティに還元すること。
それが、SkiaHeliosの目指す到達点です。
哲学:バイアスなきAI共創
—— 「常識(バイアス)がないから、AIとバイナリに潜れた」
私はIT業界に入ってまだ2年目だ。
ベテランの方々から見れば、経験不足は否めない。だが、開発を通じて、この「歴の浅さ」こそが最大の武器になると確信した。
私には、「解析とはこうあるべき」「低レイヤーの学習は泥臭くあるべき」という古い常識(バイアス)がない。
だからこそ、躊躇なくAIを「検索エンジン」ではなく「相棒(Co-pilot)」として迎え入れることができた。
AI × 低レイヤーの必然性[GitHub - SkiaHelios]
https://github.com/schutzz/SkiaHelios
次回の記事(技術編)では、ツールの心臓部についてさらに深掘りします。
異常検知ロジックの実装(The Core):
単なるログ解析ではなく、膨大なアーティファクトからいかにして「攻撃の痕跡」を自動で浮かび上がらせるか。Polarsを駆使したフィルタリング戦略について。
Mermaidによる「説明力」の強化:
解析結果をただの表で終わらせない。自動生成されたダイアグラムで、インシデントの全容を視覚的にどう伝えるか。
アナリスト(の卵)が挑むRust:
専業プログラマではないフォレンジックアナリストが、どうやって高速化を実現したのか。
「解析」から「報告」まで、思考を一切止めないための技術的なアプローチを共有する予定です。
言い遅れましたが明けましておめでとうございます。
Discussion