PR

【ショートカットで解決!】ワンクリックでBitdefender Virus ScannerアプリのScan Critical Locationsを実行する方法、スケジュールで自動実行もできました?

Macもウィルス対策が必要です。mac野郎なのかは、App Storeから無料で入手できる『Bitdefender Virus Scanner』を利用しています。
【特徴】

  • 受賞歴のある Bitdefender エンジンがマルウェアを検出します
  • OS X マルウェアと Windows ウイルスの両方を検出
  • スキャンの前に、最新のマルウェアを検出するために更新
  • アーカイブ内や、pdf、pkg、zip、rar などのさまざまな種類のファイル内でもマルウェアを検索
  • 感染しやすいシステム領域を迅速にスキャン
  • 危険なファイルを隔離
  • App Store のサンドボックスにより、アプリはユーザーが明示的にアクセスを許可した場所にのみアクセスできます。保護を強化するためにディスク全体へのアクセスを許可する必要があります。
  • 駆除はアプリを実行しているユーザーの権限によって制限されます。
  • メモリに保存されているプログラムはスキャン対象外です。

【目次】

画像は後日時間のある時に挿入予定

  1. Bitdefender Virus Scannerの不満ポイントは忘れがちなところです
  2. ショートカットを活用して、この不満を解消できます
  3. これを応用し、スケジュールで毎日自動でスキャンすることはできますか?
  4. ショートカット.appとは
  5. Bitdefender Virus Scannerアプリを起動、クリティカルスキャンを実行するショートカットの作り方
    1. スクリプトの実行を許可する
    2. ショートカット.appを起動後、新しいショートコードを作成します
    3. ショートコードに名前を与えます
    4. 右側のエリアには「アプリおよびアクションを検索」、カテゴリ、アプリがあります。
    5. 任意のアプリの起動には「アプリを開く」を利用します
    6. アプリが正常に立ち上がるまで「待機」
    7. アプリが「最前面」にいることを確認する
    8. クリティカルスキャンする「AppleScript」
    9. メニューから呼び出すように設定する
    10. メニューから「クリティカルスキャン」、ワンクリックで「Scan Critical Locations」が動作します
  6. 作成したショートカットをスケジュールで自動するまでのアレコレ
    1. スケジュール手順1)作ったショートカットをコマンド化する
    2. スケジュール手順2)plistの作成
    3. スケジュール手順3)スケジュールの登録
    4. スケジュール手順4)アクセシビリティの許可、いろいろ謎だらけ
  7. まとめ:不満は解消できました。ショートカットの課題も

Bitdefender Virus Scannerの不満ポイントは忘れがちなところです

『Bitdefender Virus Scanner』のデメリットは、常時監視非対応。自動では脅威を防げないところです。脅威が侵入していないことを手動でスキャンする必要があります(有償の『Bitdefender Virus Plus』は常時監視に対応しています)。

  1. Bitdefender Virus Scannerを起動する
  2. Scan Critical Locationsをクリックしてスキャンを手動開始(ボタンのクリック、又は⌘+S)
  3. 【Bitdefender Virus Scanner】最新パターンの更新
  4. 【Bitdefender Virus Scanner】スキャンの実行

毎日検査するのが安心ですね。ただ忘れがちです・・・
Bitdefender Virus Scannerを起動して、スキャン開始の2フェーズなんですが、忘れます・・

ショートカットを活用して、この不満を解消できます

メニュー(ショートカット)からワンクリックで『Bitdefender Virus Scanner』を起動、スキャン開始する方法をご紹介しています。
(ワンクリックで簡単にスキャンできるんですが、それでも忘れます:)

これを応用し、スケジュールで毎日自動でスキャンすることはできますか?

macOS Sonomaでは不可能でした。許可を与えても以下エラーで処理完了できません。

Error: System Eventsでエラーが起きました: ショートカットには補助アクセスは許可されません。

macOSのアップデートで状況が変わったら再チャレンジしたいと思っています。

知らぬ間にスケジュール実行できるようになっていました。

ショートカット.appとは

ショートカット.appはさまざまな処理を自動化できるmacOS標準アプリです(iOSにもあります)。様々なタスクを自動化することができるアプリです。

「アクション」と呼ばれるさまざまな操作を組み合わせて作り上げます。

macOSは従来からAutomater(コンピュータ上のほとんどの作業を自動化)が搭載されています。これもほぼ似たような感じですが、ショートカット.appの方がより簡単に目的を達成するようになっています。

Bitdefender Virus Scannerアプリを起動、クリティカルスキャンを実行するショートカットの作り方

クリティカルスキャンを実行するショートカットの全容

スクリプトの実行を許可する

この章を最後まで見ると、AppleScriptを利用して実現している事がわかります。ショートカットでAppleScriptを動作させるためには、ショートカットの設定でスクリプトの実行を許可する必要があります。

ショートカット→設定…→詳細にスクリプトを許可する設定があります。

ショートカット.appを起動後、新しいショートコードを作成します

ファイル→新規ショートコード または +マーククリックで新規作成します

ショートコードに名前を与えます

今回は「クリティカルスキャン」と命名しています。画面上部の「タイトル」と表示されているエリアは入力できます。「クリティカルスキャン」と入力しました。

右側のエリアには「アプリおよびアクションを検索」、カテゴリ、アプリがあります。

「アプリおよびアクションを検索」から検索できます。見つかったアプリ、アクションをダブルクリック、又はドラック&ドロップで追加できます。

この手順では検索機能を活用しています。

削除は、二本指タップからの削除、又はバックスペース(削除)。

任意のアプリの起動には「アプリを開く」を利用します

「アプリを開く」を検索し、追加します。アプリをクリックするとアプリを選択できます。Bitdefender Virus Scannerを選びます。

「アプリを開く」操作は、対象アプリが立ち上がっていない場合はそのアプリを起動します。すでに対象アプリを使用している場合はそのアプリを最前面にする挙動をします。

アプリが正常に立ち上がるまで「待機」

「待機」を検索します。「待機」を追加します。1秒をクリックし、3に変更しました。

アプリを起動した後、表示されるまでタイムラグがあります。ショートカットのアクションでアプリを開くことは可能です、ただアプリを正しく開いたというイベントを検出する方法がわかりませんでした。そのため確実に開いた状態を確保できることを待つようにしています。

アプリが「最前面」にいることを確認する

「もし」で検索します。「if文」を追加します。

  1. 入力をクリックし、アプリを選びます。
  2. アプリをクリックします。
    変数名:「」、種類:「アプリ」の状態で入手:「最前面である」を選びます。

クリティカルスキャンする「AppleScript」

「AppleS」で検索します。「AppleScriptを実行」を追加します。

  1. 入力をクリックし、アプリを選びます。
  2. スクリプトをコピペします。↓のような箇所
    on run {input, parameters}
    	(* Your script goes here *)
    	return input
    end run

    を全て削除して、

    tell application "System Events"
    	tell process "BitdefenderVirusScanner"
    		if exists window "Scanner - Scan Critical Locations" then
    			tell window "Scanner - Scan Critical Locations"
    				click button "Close"
    			end tell
    		end if
    	end tell
    	tell process "BitdefenderVirusScanner"
    		keystroke "s" using command down
    	end tell
    end tell

    をコピペします。
    このスクリプトは2段階構成です。

    1. Bitdefender Virus Scannerでクリティカルスキャンが正常終了すると、スキャン結果ウィンドウが残っています。これが存在した場合、閉じる処理が最初の方です。
    2. 後半は⌘キー+sでスキャンを実行しています。Bitdefender Virus Scannerの⌘キー+sは、クリティカルスキャンに割り当てられたショートカットです。

これで「クリティカルスキャン」ショートカットが完成しました。
アプリを開いて、やりたいことをマウス操作ではなく、キー操作する流れとなっています。

メニューから呼び出すように設定する

ウィンドウメニューから「すべてのショートカット」を選びます。左側ペインに「メニューバー」項目があるかと思います。
クリティカルスキャンをドラックし、「メニューバー」にドロップします。メニューバーに移動する操作になります。
これでメニューから呼び出すことができます。

メニューから除外したい場合は「メニューバー」を選んで、2本指タップから「メニューバーから削除」。「削除」を選ぶと本体ごと削除されます。

メニューから「クリティカルスキャン」、ワンクリックで「Scan Critical Locations」が動作します

ここまでの手順でショートカットメニュー→クリティカルスキャンが呼び出せる状態になっています。クリックするとBitdefender Virus Scannerが起動し、3秒後に「Scan Critical Locations」が開始されます。

アクセシビリティ関連で許可を求められるかも知れません。その場合許可が必要になります。

作成したショートカットをスケジュールで自動するまでのアレコレ

作成したショートカットをLaunchAgentで自動実行する、一度は頓挫しています。
macOS Sonoma 14.5にアップデート後、以前設定し、放置していたスケジュールが動作し始めていました。

  1. いろいろ試してダメってわかった後、知らぬ間に動き出したので・・・どれが正しいのか、いまいち正解がわかっていません。
  2. macOS Sonoma 14.5以上で動作を確認しています。
  3. スケジュールで動作している環境でも・・・シェル(/bin/zsh)からショートカットを実行、「Error: System Eventsでエラーが起きました: ショートカットには補助アクセスは許可されません。」で完了しません。
  4. スケジュール(launchd)から定時実行で動作します。
  5. スケジュールからの実行は、macにログインし、ロックが解除されている場合のみ成功します。ロック画面やスリープ状態では実行エラーの記録が残ります。「Error: このショートカットではMacがロック解除されている必要があります。
  6. スケジュールで呼び出すcriticalscan(shell)はcodesign済みです。(Apple Developr未登録の自家製codesignはこちらで作ったものを利用しています)

スケジュール手順1)作ったショートカットをコマンド化する

  1. ~/command/criticalscanファイルを作ります。

    試してみる方は、ご自身のスタイルに合わせてパス、ファイルを設定してください。

  2. ファイルの内容は以下の通り、ここではviで作成しています。
    #!/bin/sh
    shortcuts run "クリティカルスキャン"

    shortcutsコマンドはmacOS標準のコマンドです。man shortcutsで詳しい内容がわかります。

  3. 単独で実行できるように実行権限を与えます。
    chmod +x ~/command/criticalscan

スケジュール手順2)plistの作成

macOS上でスケジュール実行するにはcrondか、launchdを利用します。crondは古くからあるUNIX系のスケジュールの仕組みです。launchdはApple専用です。今回は、launchdでスケジューリングしています。

  1. スケジュール用のファイル名はドメイン名の逆並び、機能名、という風潮があるようです。
    mac野郎なのかが使用中のmacは「mba」ってホスト名で使っています。mba.localでアクセスできます。
    ファイル名は=>local.mba.機能名.plistって感じで利用しています。
  2. スケジュール設定ファイルの作成
    ~/Library/LaunchAgents/local.mba.criticalscan.plistを作ります。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>local.mba.criticalscan</string>
        <key>ProgramArguments</key>
        <array>
            <string>/Users/macyarounanoka/commands/criticalscan</string>
        </array>
        <key>StartCalendarInterval</key>
        <dict>
            <key>Hour</key>
            <integer>16</integer>
            <key>Minute</key>
            <integer>25</integer>
        </dict>
        <key>StandardOutPath</key>
        <string>/Users/macyarounanoka/log/local.mba.criticalscan.log</string>
        <key>StandardErrorPath</key>
        <string>/Users/macyarounanoka/log/local.mba.criticalscan.err</string>
    </dict>
    </plist>
    
  3. 上記ファイルは毎日16:25にcommand/criticalscanを実行するスケジュールになっています(ログインしている時間に書き換えて使ってください)。
    パスやコマンド名等も環境に併せて変更してください。

スケジュール手順3)スケジュールの登録

作成した~/Library/LaunchAgents/local.mba.criticalscan.plistをスケジュールの仲間に入れる作業です。

launchctl load ~/Library/LaunchAgents/local.mba.criticalscan.plist

【登録できたかの確認】

launchctl list | grep local

登録できた場合、local.mba.critcalscanが出力されます。
【登録を削除する】

launchctl unload ~/Library/LaunchAgents/local.mba.criticalscan.plist

スケジュール手順4)アクセシビリティの許可、いろいろ謎だらけ

これが一番よくわかっていないところです。今回applescriptでkeystroke(キー入力をapplescriptから実行する命令)を利用しています。おそらくkeystrokeはとても悪いことにも使われやすい命令で、ガチガチにAppleのセキュリティでガードされています。

ショートカットをユーザーが実行する流れ(メニューからの実行)は制限なく実行できます。

一方、同様にユーザーが実行する流れ(ドックからの実行、ターミナルからの実行)はエラーとなり、keystrokeは失敗します。

これまでの手順の中で、実際に動作させたりすると、許可するかどうかを求められるシーンがあったと思います。スケジュール実行に必要だった?と思われるアクセシビリティ許可したリストは以下の通りです。元から設定されている物、必要になり設定した物も含まれています。

最低限どれが必要なのかは確認していません。このような許可設定でスケジュール動作しています。

まとめ:不満は解消できました。ショートカットの課題も

Bitdefender Virus Scanner』のデメリットは、常時監視非対応で、定期的に操作してスキャン実行する必要があるところでした。今回、スケジュール実行までできたので、定期的に操作してスキャンする手間が不要となり、不満自体は解消できました。

今回作ったショートカットは、ご覧頂いた通り、単純だったと思います。ショートカットアプリを離れて、コマンドラインやスケジュールに手を出したところで、かなり手を焼いた感じです。macOS内部の話になり、ユーザーから何を許可すれば動作するのかわからず、許可できないのかと諦めました。

アクセシビリティの許可は、コマンド単位で許可するイメージです。自分で作ったものを許可するのは抵抗ありませんが、bashやスクリプトエディタ、コントロールセンター等、大元のコマンドを許可したら、結局危ないんじゃないの?って感じてしまいます。もう少し粒度を細かく設定できると嬉しいですね。

たまたまmacOSのアップデートで動きました(マボロシかも)が、これもまた次のアップデートで動かなくなるかも、と危惧しています。
安全性と利便性、これは相反する課題だと改めて感じました。

単純でも、攻撃者が行いそうなアクションは徹底的にガードしてくれている安心感、でも自分でそのアクションを使うとき、ガチガチで動作させることができない、悩ましい問題ですね。

タイトルとURLをコピーしました