特定のコマンドでどのファイルにどのような変更が適用されたかをどうやって知ることができますか?それともこれを傍受することができますか?

特定のコマンドでどのファイルにどのような変更が適用されたかをどうやって知ることができますか?それともこれを傍受することができますか?

プログラムがあるとしましょう。mysterion実行すると、一部のファイルが変更されることがあります。これが有害かどうかを判断するために、少なくともどのファイルがどのように変更されたかを知ることができる方法で実行したいと思います。別のプログラムをここにリンクして、承認するか拒否するかを決定することもできます。変化今後そんなことも起こります。段階的なデバッグよりも簡単な方法はありますか?

もちろん、「変更の識別」部分ではファイルシステム全体とdiffそれ以上のスナップショットを撮ることができますが、これはおそらく大きなハンマーでナットをブレーキするのと同じです。

答え1

モニタリング部分(サンドボックスなし)は、単に以下を実行することで実行できます。

strace -o file.log -e trace=file /path/to/your/binary

もちろん、これは少し「雑談」です。したがって、少し後処理を行う必要があるかもしれません。strace通常、同じ名前のパッケージに含まれています。特別な64ビット版もあります。

答え2

次のようなものを使用できますシステム追跡これにより、許可なくサンドボックスでプログラムを実行できます。その後、ptraceを使用して、プログラムが開こうとしているファイルの処理を確認できます。

SELinuxを使用している場合、他のオプションは次のものを使用することです。SELinuxサンドボックス。ここで開くことができるファイルを制限し、ファイルをまったく開くことができないようにするなどの作業ができます。

AppArmorを使用してこれらのタスクを実行する方法があると思います。しかし残念ながら、私は意味のある提案を提供するのにAppArmorに慣れていません。

関連情報