皆さん、プログラムの実行履歴って取られてますか?
Windows が標準で搭載している監査機能を利用すると、プログラムの実行をセキュリティログに残す事ができます。
具体的にはローカルセキュリティポリシーなどで、「プロセス作成の監査」を有効にすればイベントID 4688 ”新しいプロセスが作成されました。” がセキュリティログへ記録されるようになります。*1
プログラムを起動するたびにレコードが記録されます。ノイズとなる部分もありますが、標的型攻撃などを受けてマルウェアが実行されたか?を確認する際にはログがあれば簡単に特定しやすくなります。
デジタル・フォレンジック的には、プログラムの実行痕跡を確認するという方法もありますが、プリフェッチやらレジストリやらを各種ツールで確認するよりも、イベントビューアで ID 4688 をフィルタして確認した方が早く確実ではないでしょうか?*2
イベントビューアならリモートからエンドポイントへ接続してログを確認する事も可能でしょうし、イベントログをSyslogで飛ばしておいてそちらで確認するという方法でも良いかもしれません。*3
残念ながらこの監査設定はデフォルトでは有効になっていませんので、別途有効にする必要があります。*4
Audit Process Creation
https://technet.microsoft.com/ja-jp/library/dd941613(v=WS.10).aspx
事故を想定した仕組みを構築する際は、ぜひこの設定を有効にする事を検討いただけると、インシデント対応時により迅速に影響範囲の確認が取れるかと思います。
例えば電子メールにマルウェアが添付されており、PCの利用者が誤って実行したか特定したいケースや、実行した後にどの様なプログラムが実行されたかをログからすぐに確認が出来るはずです。
注意点として、このログはセキュリティログに記録されますので、セキュリティログのサイズをデフォルトよりも大きくしておかないと、ローテーションされてしまう可能性があるという事です。
どの程度のサイズまで増やしておけば良いのか?というのは、実際にログを取得し、どの程度の期間までを残せるかテストした上で決めていただく必要があると思います。例えばざっくり200MB程度に増やしたとしても、最近のPCであればHDDの空き容量としては余裕ではないでしょうか。
Windowsの標準機能でもプログラムの実行履歴を残す事が可能ですが、もし資産管理ツールなどが導入されており、そちらでプログラムの実行履歴を残る事ができるのであれば、そちらを使う方法でも良いと思います。低コストで実現できるのであれば、その手段を取るのが一番よいと思います。一部機能的な制限があるとしても、何も取ってないよりは良いと思います。
問題はログのサイズと運用管理という点になると思われますが、一度取得しているログが本当に役立つのか棚卸しを行い、不要なログは削除するなり、取得を止めるなど、セキュリティについても断捨離を行うと追加コストを抑えて改善していける可能性があります。
記録してあると助かる「プロセス作成の監査」ですが、実はこのログだけでは解決できない大きな問題があります。どの様なプロセスが起動したかを確認できますが、そのプロセスが何処と通信したのか?はログに残りません。
標的型攻撃ではマルウェアがPCへ侵入した後、C&Cとの通信を行う、組織内の別のPCや機器へ接続する、などの行動を攻撃者が行いますが、それを追跡するのがプロセスの実行履歴だけでは困難という事です。
起動したマルウェアプロセスが何処と通信していたのか、それが特定できると更に便利だと思いませんか?
*1:Windows vista および Windows Server 2008 のセキュリティ イベントの説明 https://support.microsoft.com/ja-jp/kb/947226/ja
*2:プリフェッチファイルを確認した方が、セキュリティログでポイントを絞る事もできますので、どちらも簡単に把握できるスキルがあると良いとは思います
*3:WinSyslogとEventReporterの組み合わせで簡単に実現できますね
*4:更に詳細にコマンドライン記録を設定する事も最近は可能です