本文の内容は、2025年2月25日に Nigel Douglas が投稿したブログ(https://sysdig.com/blog/falco-for-bitcoin/)を元に日本語に翻訳・再構成した内容となっております。
プラグインは、文書化されたAPIに準拠した共有ライブラリであり、Falcoのコア機能にフックすることで、新しいイベントソースを追加し、それらをフィルタリング式やFalcoルールを使用して評価できるようにします。Falcoはオープンソースであるため、ユーザーは任意のサードパーティのイベントソースに対してプラグインを開発することが可能です。
最近のブログ記事では、Falcoプラグインアーキテクチャーを利用して、GitLab、Salesforce、BoxといったイベントストリームソースにFalcoを拡張する方法について紹介しました。しかし、なぜBitcoin向けのFalcoプラグインが必要なのでしょうか?
ビットコインとは?
ビットコインは世界初の分散型暗号通貨です。自由市場の理念に基づき、ビットコインは 2008 年に Satoshi Nakamoto によって発明されました。ビットコインは 2009 年にオープンソース実装がリリースされて以来、通貨として使用されています。Sysdig 脅威リサーチチーム (TRT) は、違法な暗号通貨マイニングであるクリプトジャッキングに関連する調査でビットコインを頻繁に参照しています。クリプトマイニングは、ビットコインなどの暗号通貨システム内で新しいデジタルコインを作成するために使用されるプロセスです。
商品やサービスの購入に使用されているにもかかわらず、ビットコインを規制する統一された国際法はまだありません。米国、カナダ、英国など多くの先進国ではビットコインの使用が許可されていますが、中国やサウジアラビアを含むいくつかの国ではビットコインの使用は違法です。
Falcoプラグインを使用してビットコイン取引を追跡する
Falco のコントリビューターであるThomas Labarussias は、Falco を拡張して事実上あらゆるリアルタイムイベント ストリームを監視できることを示す概念実証としてこのプラグインを開発しました。このプラグインを作成する際、彼は、 blockchain.com というサイトが Websocket 経由でアクセスできるパブリックフラックスを公開していることに気付きました。これをサブスクライブすると、ブロックチェーン上で実行されたトランザクションをリアルタイムで取得でき、Websocket 経由でのイベントの取り込みをテストできます。これは、他のプラグインの基盤となるため最適です。
Falco の Bitcoin プラグインは何を検出できますか?
プラグインの初期バージョンでは、Bitcoin ウォレットへの着信トランザクションと Bitcoin ウォレットからの発信トランザクションという 2 つの主要な検出シナリオに焦点を当てていました。すべてのFalco ルールと同様に、検出は YAML ベースのポリシーを使用して定義されるため、簡単にカスタマイズおよび拡張できます。
- rule: New Sent transaction
desc: A new Bitcoin transaction was sent
condition: btc.transaction="sent"
output: The wallet %btc.wallet sent %btc.amount BTC to %btc.destinations in the transaction %btc.hash
priority: INFORMATIONAL
source: bitcoin
tags: [bitcoin, crypto-sent]
- rule: New Received transaction
desc: A new Bitcoin transaction was received
condition: btc.transaction="received"
output: The wallet %btc.wallet received %btc.amount BTC from %btc.sources in the transaction %btc.hash
priority: INFORMATIONAL
source: bitcoin
tags: [bitcoin, crypto-received]
ルール出力は、送信されたビットコインの金額、送信元アドレス、ブロックチェーン台帳のデジタル記録として機能するトランザクションハッシュなどの主要なトランザクションの詳細を提供します。Falco は、追加のコマンドラインフラグを必要とせずに、事前設定されたルールで起動できます。
sudo /usr/bin/falco -c /etc/falco/falco.yaml -r falco_rules_test.yaml
出力例:
2025-01-20T13:24:45.686652000+0000: Informational The wallet bc1q28gqnp6fdxdsfjr0ddpmp9ah05awadq7tcrsre received 0.000094024 BTC from (bc<gap>cdne2eqw0y778fh4g5p7s7v4jk23l94q38rd) in the transaction f6cc0969fd63479b1926fabe7691544ed69fa7f77<gap>e0cc001cb1815579720
2025-01-20T13:24:45.686698000+0000: Informational The wallet bc<gap>galc22rz29nsme9tfmjec9vaq6sqa3lmmfwe sent 0.009396256 BTC to (14Ad6DYi7Kb3yDNyhfwb9Cb47bcV56ESQH,bc<gap>alc22rz29nsme9tfmjec9vaq6sqa3lmmfwe) in the transaction ab2097<gap>c0b0a23d8c163701d3a7128d1dd978385bb0a6e5ffe56a8140d532
2025-01-20T13:24:45.686739000+0000: Informational The wallet 14Ad6DYi7Kb3yDNyhfwb9Cb<gap>56ESQH received 0.001900000 BTC from (bc1qn2<gap>22rz29nsme9tfmjec9vaq6sqa3lmmfwe) in the transaction ab<gap>8445c0b0a23d8c163701d3a7128d1dd978385bb0a6e5ffe56a8140d532
2025-01-20T13:24:45.686786000+0000: Informational The wallet bc1qn2galc22rz29nsme9tfmjec9vaq6<gap>mmfwe received 0.007492656 BTC from (bc1qn2galc22rz29nsme9tfmjec9vaq6<gap>mmfwe) in the transaction ab20978445c0b0a23d8c163701d3a7128d1dd978385bb0a6e5ffe56a8140d532
まとめ
Falco の柔軟なプラグイン システムを実証するために設計されたこのプラグインは、さまざまなソースからログを取り込み、疑わしいアクティビティが発生したときにアラートを生成できることを示しています。このプラグインを使用すると、疑わしいウォレットの動きなどのイベントを監視してアラートを出すことができます。このプラグインは、ソースコード、falcoctl、またはKubernetes Helm を使用してデプロイでき、テストや統合を簡素化するためのデフォルトルールが含まれています。最終的に、このプラグインは、Falco のオープンソースプラグインアーキテクチャによって広がる無限の可能性を示しています。