「証明書インストール」が出てきたら、貴方ならどうしますか？

# 背景

仕事中、突然「証明書インストール」の画面が飛び出てきた

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/18b7e365-f4e3-416c-a497-a8810e409522.png)

1. 迷わず「はい」
1. 理由がわからんものなんて押せない「いいえ」
1. 理由を調査して、判断する

IT に縁がない順に上の選択肢を選ぶんじゃないのかなぁと思います。 :thinking: 

ということで、`3` の調査方法を残しておく

:::note
まぁ、勿論情シに聞いて、対処する、というのが一番楽だとは思います :laughing: 
:::

# セキュリティ警告の調査と対処プロセス

## 概要

ポップアップさせてきたプロセスを調査し、その実行方法、実行元を調べる

証明書インストール要求が突然表示された場合の、原因特定から対処までの具体的な手順。

## セキュリティ警告の例

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/18b7e365-f4e3-416c-a497-a8810e409522.png)

- 発行者: `SAMPLE-CORP-CA`
- 拇印： `...`

## 調査プロセス

### 1. 関連プロセスの特定

まず、証明書インストールを実行しているプロセスを特定します。

```powershell
# 証明書関連のプロセスを確認
Get-Process | Where-Object {
    $_.ProcessName -like "*cert*" -or
    $_.ProcessName -like "*mmc*" -or
    $_.ProcessName -like "*install*"
} | Select-Object ProcessName, Id, StartTime, Path
```

**出力例:**

```
ProcessName    Id StartTime           Path
-----------    -- ---------           ----
certutil    12345 2025/06/17 14:30:00 C:\WINDOWS\system32\certutil.exe
```

### 2. プロセスの詳細調査

プロセス ID を特定出来たら、
特定されたプロセスの実行内容を詳しく調査します。

```powershell
# プロセスの詳細情報を取得
Get-Process -Id 12345 -IncludeUserName |
    Select-Object ProcessName, Id, UserName, StartTime, Path

# 実行されたコマンドラインを確認
wmic process where processid=12345 get commandline
```

**コマンドライン例:**

```
CertUtil -f -user -p "SamplePass123!" -importPFX "sample_device.p12" noExport
```

実行コマンドがわかったので、これらを探すことになります。

### 3. 関連ファイルの調査

証明書ファイルや実行スクリプトの場所と内容を確認します。

```powershell
# 証明書ファイルの検索
Get-ChildItem -Path "C:\" -Name "*.p12" -Recurse -ErrorAction SilentlyContinue |
    Select-Object -First 5

# 一時フォルダの内容確認
Get-ChildItem -Path "C:\temp\sample_cert\" |
    Select-Object Name, Length, LastWriteTime
```

### 4. 実行スクリプトの内容確認

最後は、
証明書インストールを実行したスクリプトの内容を分析します。

```bat
@echo off
setlocal

:: ログファイルのパスを設定
set LOGFILE=CertInstall.log

echo ------------------START------------------ >> %LOGFILE%
echo %date% %time% >> %LOGFILE%

:: 引数の確認
if "%~1"=="" (
    echo Password argument is missing. >> %LOGFILE%
    exit /b 1
)

if "%~2"=="" (
    echo Certificate file argument is missing. >> %LOGFILE%
    exit /b 1
)

:: 証明書のインストール実行
set "password=%~1"
set "certfile=%~2"

CertUtil -f -user -p "%password%" -importPFX "%certfile%" noExport >> %LOGFILE% 2>&1

if errorlevel 1 (
    echo Error: CertUtil command failed >> %LOGFILE%
    exit /b 1
)

echo -------------------END------------------- >> %LOGFILE%
endlocal
exit /b 0
```

### 5. イベントログの確認

念のため、
システムログから関連するイベントを確認します。

```powershell
# アプリケーションログの確認
Get-WinEvent -FilterHashtable @{
    LogName='Application';
    StartTime=(Get-Date).AddHours(-1)
} | Where-Object {
    $_.Message -like "*cert*" -or
    $_.Message -like "*SAMPLE-CORP-CA*"
} | Select-Object TimeCreated, Id, LevelDisplayName, Message

# システムログの確認
Get-WinEvent -FilterHashtable @{
    LogName='System';
    StartTime=(Get-Date).AddHours(-1)
} | Where-Object {
    $_.Message -like "*cert*"
} | Select-Object TimeCreated, Id, LevelDisplayName, Message
```

## 調査結果の分析

今回は、企業内の Wifi 用証明書インストールでした。

無線 LAN 申請書を出したら、承認通知が来る代わりに

**業務中に**
勝手にこれが立ち上がってくるので、
  <font color=red>「はい」を押せ</font>、とのこと

:sunglasses: 
:sunglasses: 
:sunglasses: 

本気で？って思いません？
情シの管理権限で、裏でPC操るのは全然いいんですけど、これを押させるってことは

- 不審メールやブラウジングで、「怪しい釦をクリックする」という成功体験を植え付ける

に等しいと思います。


# あらためて調査方法まとめ

1. **プロセス特定**

   ```powershell
   Get-Process | Where-Object {$_.ProcessName -like "*cert*"}
   ```

2. **コマンドライン確認**

   ```powershell
   wmic process where "name='certutil.exe'" get commandline
   ```

3. **ファイル確認**
   - 証明書ファイルの場所と作成日時
   - 実行スクリプトの内容分析

# 判断基準

## ✅ インストールを許可する場合

- IT 部門からの正式な指示がある
- 業務上必要な認証システムの一部
- 証明書の発行者が信頼できる
- ファイルの出所が明確

## ❌ インストールを拒否する場合

- 実行した覚えがない
- 発行者が不明または怪しい
- IT 部門が関与していない
- ファイルの出所が不明

# 事後対応

## インストール許可した場合

1. **動作確認**

   - WiFi や VPN 接続のテスト
   - 証明書ストアでの確認

2. **ログ記録**
   - インストール実行時刻
   - 証明書の詳細情報
   - 実行理由

### インストール拒否した場合

1. **セキュリティ報告**

   - インシデント報告書作成
   - 関連ファイルの保存
   - 状況の詳細記録

2. **システム確認**
   - マルウェアスキャン実行
   - 不審なプロセスの確認
   - ネットワーク接続の監視

# まとめ

セキュリティ警告が表示された際は、以下の原則を守ることが重要です：

1. **冷静な対応**: 慌てずに状況を把握する
2. **徹底した調査**: プロセスとファイルの詳細確認
3. **適切な判断**: 業務上の必要性と安全性の両面から評価
4. **確実な記録**: 対応内容と結果の詳細な記録
5. **継続的な学習**: セキュリティ知識の向上

# あとがき

会社で見たときも疑問だったけど、
改めてまとめてみて・・・駄目だこりゃって感じてます・・が、どうなんでしょうねぇ :thinking: