C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: プロセス監視、ファイル操作の監視方法


(過去ログ 62 を表示中)

[トピック内 16 記事 (1 - 16 表示)]  << 0 >>

■35801 / inTopicNo.1)  プロセス監視、ファイル操作の監視方法
  
□投稿者/ アキナガ (1回)-(2009/05/14(Thu) 08:21:32)

分類:[C/C++] 

セキリティ関係の開発で、
ユーザによる全てのプロセスの起動と、ファイル操作(ファイル生成、書き込み)の常時監視を行うプログラム(win32)の作成を行う必要があります。
とりあえずは、プロセスの起動、ファイル操作の対象ファイルのパス取得するところから始めようと考えています。
いろいろ調べてみたところ、実現するためには、以下の知識をつけることで可能でしょうか?

・ファイル操作を監視する場合は、フィルタドライバ(ファイルシステムドライバ)の作成
(Vista64bitの署名の件は少し置いておきます。)

・プロセス起動の監視は、CreatProcess()のAPI Hookを行う。

また、フィルタドライバの作成は初めてで、かなりハードルが高いと聞きました。
簡単なファイルのパスの取得を行うドライバを作成する場合、作成の規模?(コード量)はどのくらいになるでしょうか?
参考サイトなどがありましたら、教えていただければ幸いです。
引用返信 編集キー/
■35804 / inTopicNo.2)  Re[1]: プロセス監視、ファイル操作の監視方法
□投稿者/ やじゅ (995回)-(2009/05/14(Thu) 09:28:01)
やじゅ さんの Web サイト
No35801 (アキナガ さん) に返信
> また、フィルタドライバの作成は初めてで、かなりハードルが高いと聞きました。
> 簡単なファイルのパスの取得を行うドライバを作成する場合、作成の規模?(コード量)はどのくらいになるでしょうか?
> 参考サイトなどがありましたら、教えていただければ幸いです。

フィルタドライバってあまり情報がないので、むずかしそうですね。

ファイル操作(コピーや、作成、書き換え)を監視する方法
http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200904/09040001.txt
「Process Monitor
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
このツールを使うと、Filterをうまく設定すれば、アプリが
どこのファイルを読み書きしたかイベントとして拾えます。」

ってあるから、Process Monitorの情報を使うってのも手かも
引用返信 編集キー/
■35805 / inTopicNo.3)  Re[2]: プロセス監視、ファイル操作の監視方法
□投稿者/ アキナガ (2回)-(2009/05/14(Thu) 09:42:27)
>>やじゅさん
返信ありがとうございます。
http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200904/09040001.txt
の書き込みは、以前いろいろと検索を行ってたときに見つけました。
なかなか、情報が少なくてどのあたりから手を付けたらよいのかがわからないんですよね(^^;
引用返信 編集キー/
■35807 / inTopicNo.4)  Re[1]: プロセス監視、ファイル操作の監視方法
□投稿者/ オショウ (181回)-(2009/05/14(Thu) 10:00:49)
No35801 (アキナガ さん) に返信
> セキリティ関係の開発で、
> ユーザによる全てのプロセスの起動と、ファイル操作(ファイル生成、書き込み)の常時監視を行うプログラム(win32)の作成を行う必要があります。
> とりあえずは、プロセスの起動、ファイル操作の対象ファイルのパス取得するところから始めようと考えています。
> いろいろ調べてみたところ、実現するためには、以下の知識をつけることで可能でしょうか?

  と云う以前に、『開発』と云うことですが、それは会社の仕事?
  商品化?社内使用?
  わざわざ作る必要があるなら、必要も何も『知らない』なら作れません。

> ・ファイル操作を監視する場合は、フィルタドライバ(ファイルシステムドライバ)の作成
> (Vista64bitの署名の件は少し置いておきます。)
>
> ・プロセス起動の監視は、CreatProcess()のAPI Hookを行う。

  API Hookは使えなくなりつつあります。
  代わりに別の方法があるとは思いますが。(VISTA以降無理)

> また、フィルタドライバの作成は初めてで、かなりハードルが高いと聞きました。
> 簡単なファイルのパスの取得を行うドライバを作成する場合、作成の規模?(コード量)はどのくらいになるでしょうか?
> 参考サイトなどがありましたら、教えていただければ幸いです。

  http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
  http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx

  公開された初期はソースコードも入手できたように思いますが・・・
  今は入手できないみたいです。(私も欲しいです)

● まずDDKを入手して、サンプルのソースコードを眺めることをオススメします。
  当然、ストレージ関係・フィルター関係ドライバーもサンプルに存在します。

以上。参考まで
引用返信 編集キー/
■35809 / inTopicNo.5)  Re[1]: プロセス監視、ファイル操作の監視方法
□投稿者/ 渋木宏明(ひどり) (1151回)-(2009/05/14(Thu) 10:06:17)
渋木宏明(ひどり) さんの Web サイト
> ・プロセス起動の監視は、CreatProcess()のAPI Hookを行う。

API Hook は、システムグローバルに仕掛けるのはかなりムズかったような気がします。(出来ない、ってこはないと思うけど)
引用返信 編集キー/
■35810 / inTopicNo.6)  Re[1]: プロセス監視、ファイル操作の監視方法
□投稿者/ 渋木宏明(ひどり) (1152回)-(2009/05/14(Thu) 10:09:31)
渋木宏明(ひどり) さんの Web サイト
> また、フィルタドライバの作成は初めてで、かなりハードルが高いと聞きました。

カーネルドライバを1から作るのに比べればマシなはずです。

そもそもの概念と、フィルタ対象のドライバ(デバイス)の振る舞いを理解するのに大半の時間を投入することになるんじゃないかな。

引用返信 編集キー/
■35812 / inTopicNo.7)  Re[1]: プロセス監視、ファイル操作の監視方法
□投稿者/ aetos (139回)-(2009/05/14(Thu) 11:02:54)
No35801 (アキナガ さん) に返信
> セキリティ関係の開発で、
> ユーザによる全てのプロセスの起動と、ファイル操作(ファイル生成、書き込み)の常時監視を行うプログラム(win32)の作成を行う必要があります。

常時監視してログにでもため込むだけですか?
場合によっては操作をキャンセルさせる必要があるのでしょうか?

監視するだけなら、Windows が持っている監査ログの機能をどうにかすれば、フィルタドライバを作るよりは簡単だろうなぁと思いますが。
引用返信 編集キー/
■35822 / inTopicNo.8)  Re[2]: プロセス監視、ファイル操作の監視方法
□投稿者/ やじゅ (996回)-(2009/05/14(Thu) 15:58:13)
やじゅ さんの Web サイト
> ■No35801 (アキナガ さん) に返信
>セキリティ関係の開発で、
>ユーザによる全てのプロセスの起動と、ファイル操作(ファイル生成、書き込み)の常時監視を行うプログラム(win32)の作成を行う必要があります。
>

開発するより、パッケージを購入するのも一つの手ですね。
File System Auditor ファイルアクセス監査ツール
http://www.jsys-products.com/download/catalog/FileSystemAuditor0709.pdf
このソフトも、フィルタドライバを使用していますね。
http://www.jsys-products.com/support/faq/faq_fsa.php#69
引用返信 編集キー/
■35824 / inTopicNo.9)  Re[3]: プロセス監視、ファイル操作の監視方法
□投稿者/ れい (843回)-(2009/05/14(Thu) 16:42:17)
>■No35801 (アキナガ さん) に返信
>セキリティ関係の開発で、
>ユーザによる全てのプロセスの起動と、ファイル操作(ファイル生成、書き込み)の常時監視を行うプログラム(win32)の作成を行う必要があります。

監視というのはどんな操作が含まれているのでしょうか?

私の経験では、ファイル操作の監視そのものはそれほど難しくありません。
しかし、

・監視の内容をユーザーモードと連携する部分
・少し複雑な操作をする際、カーネルの無応答を防ぐために細々した処理を行う部分
・同期処理に問題がないかテストするためのコードの準備
・ドライバを組み込んで再起動したり、青窓を眺めている時間

の上記4点にかなりの時間を取られました。

ファイル操作を途中で横取りして内容を書き換えたりする必要があるならフィルタドライバを作る必要がありますが、
ただ操作をモニターしたいだけなら違う手法がよいと思います。

2年くらい前の知識ですが。

やじゅさんの言っていた「ProcessMonitor」のリソースには署名つきのフィルタドライバが入っています。
これを抽出して利用すればかなりの事ができます。

プロセスの監視、ファイル操作のモニター程度はできるはずです。

もちろんライセンスの問題は確認する必要があります。

引用返信 編集キー/
■35830 / inTopicNo.10)  Re[4]: プロセス監視、ファイル操作の監視方法
□投稿者/ アキナガ (3回)-(2009/05/14(Thu) 18:01:33)
>>みなさま
いろいろとご指摘ありがとうございます。
参考にさせていただいて、少しずつフィルタドライバの勉強を行いたいと思います。

>>オショウさん
社内向けのソフトです。周りにドライバの知識を持っている人が少なく困っていましたが、
時間は少しあるので、勉強したいと思います。


>>れい さん、aetos さん
>監視というのはどんな操作が含まれているのでしょうか?
今は、対象のファイル操作(プロセス作成)時に対象のファイルのパスを取得すること目標としてます。
ただ、ゆくゆくは不適切なプロセスが起動された場合にアプリ側でプロセス停止も行えるようにする必要があります。

「ProcessMonitor」 をダウンロードしましたが、これは実行ファイル1つだけでした。
ドライバが含まれていませんでしたが、どのように抽出を行うのでしょうか?
もしくは、何らかの方法でフィルタドライバを使用しているのでしょうか?
知識がなくてお恥ずかしい限りです(^^;



引用返信 編集キー/
■35831 / inTopicNo.11)  Re[5]: プロセス監視、ファイル操作の監視方法
□投稿者/ 魔界の仮面弁士 (1066回)-(2009/05/14(Thu) 18:22:35)
2009/05/14(Thu) 19:37:36 編集(投稿者)

No35830 (アキナガ さん) に返信
> 「ProcessMonitor」 をダウンロードしましたが、これは実行ファイル1つだけでした。
> ドライバが含まれていませんでしたが、どのように抽出を行うのでしょうか?

No35824 で、既にれいさんが書かれていますように、Procmon.exe 内のリソースに、
procmon.Sys というデジタル署名付きドライバ(のバイナリ)が含まれています。
引用返信 編集キー/
■35833 / inTopicNo.12)  Re[6]: プロセス監視、ファイル操作の監視方法
□投稿者/ アキナガ (4回)-(2009/05/14(Thu) 19:02:53)
No35831 (魔界の仮面弁士 さん) に返信
返信ありがとうございます。
環境がVisual Stadio2008 で挑戦してみましたが、ビットマップやダイアログを覗き見すること
はできましたが、望みの”procmon.Sys”を見つけることはできませんでした・・・・
Visual Stadio2008のバージョンのせいでしょうか?
引用返信 編集キー/
■35834 / inTopicNo.13)  Re[7]: プロセス監視、ファイル操作の監視方法
□投稿者/ 魔界の仮面弁士 (1067回)-(2009/05/14(Thu) 19:35:53)
No35833 (アキナガ さん) に返信
> 環境がVisual Stadio2008 で挑戦してみましたが、ビットマップやダイアログを覗き見すること
> はできましたが、望みの”procmon.Sys”を見つけることはできませんでした・・・・

通常は、逆アセンブルやリバースエンジニアリングが eula.txt で禁じられているので、
見つけられたとしても、それを抜き出して使う訳には行かないかと。許可を得ない限りは。

引用返信 編集キー/
■35869 / inTopicNo.14)  Re[8]: プロセス監視、ファイル操作の監視方法
□投稿者/ れい (844回)-(2009/05/15(Fri) 03:03:14)
No35834 (魔界の仮面弁士 さん) に返信
> ■No35833 (アキナガ さん) に返信
>>環境がVisual Stadio2008 で挑戦してみましたが、ビットマップやダイアログを覗き見すること
>>はできましたが、望みの”procmon.Sys”を見つけることはできませんでした・・・・
>
> 通常は、逆アセンブルやリバースエンジニアリングが eula.txt で禁じられているので、
> 見つけられたとしても、それを抜き出して使う訳には行かないかと。許可を得ない限りは。

リバースエンジニアリングは、その言葉が意味する範囲が曖昧ですが、
一般には「内部構造を調べる」ことを意味します。
なので、それが禁じられている事と、ドライバを抜き出して使うことは直接は関係ありません。

むしろ、「著作物/製品の一部を勝手に使っていいのか」という問題です。

リバースエンジニアリングを禁じるeulaは、破っても契約違反なだけで、
損害の程度に応じて賠償すればよいだけですが、
他社製品の一部を勝手に借りて、自社製品として売るのは刑事で犯罪ですね。
しかも署名入り。バレバレですね。

以下は私の考えですが。(実際には裁判官が決めます。)

「ProcessMonitorが無ければ使えません」というような商品は問題ではありません。

ProcessMonitorは初めて管理者権限で実行された時にドライバをインストールしますので、
子プロセスとしてProcessMonitorを起動して、ドライバインストールを確認したらすぐ殺すとか、
自アプリの起動時にProcessMonitorを探し、ドライバを抽出してインストールするとか、
そういった手はあります。
少なくとも刑事では何も問題ないでしょう。

個人で使用する分には誰にもわかりませんし、
わかったとしても悪用しているわけではなく、権利者にも迷惑をかけて無いので、
訴えられることはないでしょう。
訴えられても権利者の損失を評価できませんし。

抽出したドライバを配布するのは問題があります。
許可を取らねばいけません。

自動でダウンロードし、展開して抽出して…なソフトはヤバイでしょうね。
ユーザーが知らないうちにeulaに同意させている、もしくはユーザーの意図しない行為をしているので、
契約法(電子消費者契約法とか?)違反とか詐欺とか、結構やばい犯罪ととれるかもしれません。

また、ProcessMonitorを解析して競合商品を作ろうとした場合など、権利者が損害を受けたと判断した場合は
eula違反で損害賠償を請求される可能性があります。

まぁ、「良識の範囲内」で使うのであれば問題ないと思いますよ。
引用返信 編集キー/
■35882 / inTopicNo.15)  Re[1]: プロセス監視、ファイル操作の監視方法
□投稿者/ aetos (141回)-(2009/05/15(Fri) 09:57:17)
No35801 (アキナガ さん) に返信
もし本気でファイルシステムフィルタドライバを作るつもりでしたら、素晴らしい情報源を見つけたので紹介しておきます。
http://blogs.msdn.com/jpwdkblog/archive/2009/05/13/filesystem-filesystem-filter.aspx
引用返信 編集キー/
■35981 / inTopicNo.16)  Re[2]: プロセス監視、ファイル操作の監視方法
□投稿者/ アキナガ (5回)-(2009/05/17(Sun) 13:03:17)
>>aetosさん、aetosさん
ありがとうございます。
http://www.amazon.co.jp/WindowsXP%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E5%85%A5%E9%96%80%E3%81%A8%E5%AE%9F%E8%B7%B5-%E6%BB%9D%E5%8F%A3-%E6%94%BF%E5%85%89/dp/4774116661
偶然この本を入手できましたので、1から勉強させていただきます(^^

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -