セキュリティインシデント対応の基本構成
ネットワークセキュリティインシデント対応は、既発生または予期される脅威に対して監視・分析・協調・対処を行うプロセスであり、組織の情報資産を保護するための重要な仕組みです。このプロセスは、侵入検出、事象診断、攻撃の隔離、迅速な復旧、ネットワーク追跡、コンピュータ証拠収集、自動反応などの技術を活用し、同時に安全管理体制の強化も求められます。
対象となる事象は、自然災害、システム障害、内部/外部の人物による行動、ウイルスやワームなどによる侵害で、情報の機密性、完全性、可用性(CIA)のいずれかを損なう行為として定義されます。一般的に、以下の6段階に分けて対応が行われます:
- 準備段階:事前に対象システムの初期状態をスナップショット取得し、応急対応ツールセットを整備。
- 検知段階:監視ツールやログ解析を通じて異常を早期発見。
- 抑制段階:影響範囲の拡大を防ぐために即時措置を講じる。
- 根絶段階:攻撃の原因を特定し、根本的な除去を行う。
- 復旧段階:システムの正常稼働を確認し、安全な状態への回復を実施。
- 振り返り段階:全プロセスを評価し、改善点を抽出して将来の対応に活かす。
Linux環境でのインシデント対応
Webシェルの探索
悪意のあるスクリプト(例:Webシェル)の存在を確認するためのコマンド:
find /var/www -type f -name "*.php" | xargs grep -l "base64_decode"
find /var/www -type f -name "*.jsp" | xargs grep -l "exec("
find /var/www -type f -name "*.asp" | xargs grep -l "execute("
find /var/www -type f -name "*.aspx" | xargs grep -l "eval("
不審なユーザーおよび権限設定の確認
管理者権限を持つ不審なアカウントの有無を確認:
cat /etc/passwd
cat /etc/sudoers
ls /etc/sudoers.d/
SUIDビットが設定されたファイルを探索:
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 2>/dev/null
不審なファイルおよび接続の調査
システムの不審な操作を確認:
cd /opt && ls -la
cat /root/.ssh/authorized_keys
cat ~/.ssh/authorized_keys
netstat -anpt | grep ESTABLISHED
grep -rni 'http' /var/www/html/
grep -rni 'href=' /var/www/html/
永続化設定の調査
起動時に自動実行される設定ファイルの確認:
- ユーザー単位:
~/.bashrc,~/.profile,~/.zshrc - システム全体:
/etc/profile,/etc/bash.bashrc,/etc/rc.local
システム状態の確認
crontab -l
ps aux | grep -v grep
systemctl list-unit-files --type=service
ls /etc/init.d/ /etc/rc*.d/ /etc/systemd/system/
ls ~/.config/autostart/ ~/.config/systemd/user/
history
Linuxログの分析
主なログファイルの位置:
/var/log/:システム全体のログ/var/log/apache2/access.log:Apacheアクセスログ/var/log/nginx/access.log:Nginxアクセスログ/var/log/auth.log:認証関連ログ/var/log/redis/redis.log:Redisの操作記録
Redisログから不正操作を検出:
sudo grep 'CONFIG SET' /var/log/redis/redis.log
sudo grep 'SLAVEOF' /var/log/redis/redis.log
sudo grep 'MODULE LOAD' /var/log/redis/redis.log
sudo grep 'Module '\''system'\'' loaded from' /var/log/redis/redis.log
SSHログの解析:
grep 'Failed password' /var/log/auth.log
grep 'Accepted password' /var/log/auth.log
grep 'Accepted ' /var/log/secure | awk '{print $11}'
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
MySQLセキュリティインシデント対応
データベースの異常な操作を検出するためのクエリ:
SELECT '' INTO OUTFILE '/var/www/html/shell.php';
SELECT LOAD_FILE('/etc/passwd');
SHOW GLOBAL VARIABLES LIKE '%secure%';
SELECT * FROM mysql.func;
プラグインディレクトリの確認:
ls /usr/lib/mysql/plugin/
find / -name config.inc.php
Windows環境でのインシデント対応
イベントログの主要なイベントID
- 4624:成功したログイン
- 4625:失敗したログイン
- 4648:憑証を使用したログイン
- 4672:特権アカウントのログイン
- 4688:新規プロセス作成
- 4720:新しいユーザー作成
- 4719:監査ポリシーの変更
- 4663:オブジェクトへのアクセス試行
- 4946:ファイアウォールルールの追加
- 4700:スケジュールタスクの有効化
ユーザーとアカウント情報の確認
wmic useraccount get Name
net user ユーザー名
レジストリからの調査
起動時に実行されるプログラムの確認:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names
ネットワーク状態の確認
netstat -ano
taskmgr
プロセスの異常動作を確認するには、タスクマネージャーや「火绒剑」などのプロセス監視ツールを利用。