悪用され得る全機能を普段はロック!で感染を防ぐセキュリティ強化

 ウイルスやマルウェアへの感染は、かなりの割合で普段は使いもしないソフトや機能が勝手に悪用されて起こること、ご存じですか。そんなことがなぜ?と疑問を抱かれるかもしれませんが、これは、WindowsがパソコンOSゆえに、何でもできる汎用性を一定のセキュリティが確保できる範囲で維持しているからです。換言すれば、ソフト/機能は、悪用される、あるいは悪意のある可能性があるとしても一定のセキュリティ要件さえ満たせば、起動あるいは実行が許容されているからです。しかし、このような汎用性は、ブラウザ、メールソフト、MS Officeに、いくつかの特定業務アプリしか使わない大半のユーザにとっては、感染リスクを負うだけで、全く意味がありません。自分の使うアプリだけが、好きなタイミングで起動あるいは実行できれば十分だからです。

 このように限られたアプリしか使わない一般ユーザに向けて、Windowsで提供されている機能制限手段にSモードとフォルダへの書き込みを登録済みのアプリに制限するWindows Defenderの「コントロールされたフォルダーアクセス」があります。前者は、cmd.exe、powershel.exe、cscript.exe、regedit.exe から、Windows 標準のシェル/スクリプト環境とレジストリ編集環境までの実行を制限することで強靭な攻撃耐性を実現します。しかし、ストアアプリしかインストールできないという既存ユーザにとっては致命的ともいえる弱点で不評を買い利用は進んでいません。一方、後者はアンチウイルスとしてWindows Defenderを利用する場合、ランサムウェアにより暗号化されるのを防止するには、是非とも、有効化すべきアクセス制限機能ではあります。しかし、Windows Defenderをすり抜けるマルウエアへの感染自体は防止できませんので、感染による情報漏洩リスクが軽減できるわけではありません。

 これに対して、ここで紹介する悪用され得るソフト(Powershell、WMI、.NET等のシステムソフトや所定のロケーションにインストールされていないソフト[マルウェアも含む])の起動/実行を丸ごと制限するSimple Software-Restriction Policy(SSRP)は、これまでのウイルス対策ソフトでは対応できない0day、ファイルレス等の高度な攻撃まで防止する強靭な攻撃耐性を実現します。ソフトの起動/実行を制限するApplocker(MDM配下でない場合、Windows 10/11のEnterprise版/Education版でしか利用できないマイクロソフト製ツール)相当のフリーソフトウェア(オープンソース)ですが、tempフォルダにおけるリネームや新たなtempフォルダの追加が出来ないデフォルトの設定により、実行制限が無力化されることのない攻撃耐性(Windowsクライアントの要塞化)を実現します。また、書き込み可能なフォルダ内のソフトの実行可否、普段使わない.exeファイルや.exe以外の拡張子のソフト一式の実行可否、およびアプリのインストール/アンインストールの可否が、ロック/アンロックの切換により瞬時に行えます。このため、PowerShell、WMI、.NET等のEmotet、IcedID等のファイルレス攻撃に悪用されうるソフトを、必要な時以外はロックして動かなくするセキュアな環境が、Windows Home版でも簡単に実現されます。最近猛威を奮っているEmotetに対しても、PowerShell自体の実行を制限できるので、Officeのマクロを介するか否かに関わらず、感染を防止できます。さらに、アンロックにより任意のアプリのインストール/アンインストールが可能になりますので、Sモードのように利用可能なアプリがストアアプリに限定されることもありません。

 ここでは、このSSRP にComodo Firewallによる実行機能制限を組み合わせることで、SSRPアンロック時まで、Webあるいはメール経由で侵入する大半の実行可能ファイルの実行を制限するセキュリティ強化法を示します。


1.SSRP自体の安全性

 SSRPの実行ファイルsoftwarepolicy.exeは、VirusTotalでのmalicious検知結果は3/67で、その検知内容が、

Bkav Pro: W32.AIDetect.malware2、 SecureAge APEX: Malicious、 Sophos:  Generic ML PUA (PUA)

と、この判定結果だけから十分安全とは言い切れません。それでも、ソースコードを解析し、問題ないことを宣言できればよいのですが、残念ながらToshiにはそこまでのスキルがなく、現状では、softwarepolicy.exe、softwarepolicystart.exe、PolicyDeactivator.exe、StripMyRights.exeの4つをCOMODO Firewallで動作中に外部との通信が生じないことを確認するにとどまっています。従って、オープンソースであることの安全性やこのマルウェア判定に関する作成者の説明(The LimitedApps feature参照)が信頼できないのなら、SSRPはあきらめ、これに近いセキュリティ耐性の得られるPC Matic、VoodooShield等のウイルス対策ソフト(有料)を使うのをお薦めします。

 PC MaticはソフトウェアのインストールやPowershell等の利用時に人手によるロック解除が不要な分、SSRPより操作性に優れます。ソフトウェアのインストール可否判定がほぼ自動で行われるため、判定ミスによる感染が起こりにくい利点もあります。しかし、ロック解除無しで動作可能な分、Powershell等の悪用が容易になり、セキュリティ耐性が低下する可能性のある点に留意が必要です。


2.SSRPのインストールとロック/アンロック

 Simple Software-Restriction Policyの左端メニューのSourceforgeを左クリックして表示されるページのダウンロードボタンを左クリックします。ダウンロードが完了したら、そのダウンロードファイルのSoftwarePolicy220Setup .exeをダブルクリックしてインストールを開始します。Welcome to Simple Software-Restriction Policy Setup Wizardのウインドウが開いたらNextボダンを左クリックします。Licence Agreementのウインドが開いたら、Software Policy License Conditionsの内容を確認の上、I accept the agreementの先頭の〇を左クリックによりチェックして、Nextボダンを左クリックします。Select Destination Locationが開いたらデフォルトのC:\WINDOWS\SoftwarePolicyのまま、Nextボダンを左クリックします。ここで、インストール先のフォルダは変更可能ですが、無条件ではないので、デフォルトのままにしておくことが推奨されています。Select Additional Tasksが開いたらチェックをはずさずNextボダンを左クリックします。Ready to Installが開いたら、表示内容を確認の上、installボタンを左クリックします。Completing the Simple Software-Restriction Policy Setup Wizardのウインドーが開いたら、チェックをはずさずにFinishボダンを左クリックして、右下のタスクトレイにSSRPアイコンが追加されます。そのアイコンにマウスのカーソルをあてることでSoftware Policy Activeが表示されれば、インストールは完了しています。この状態でSSRPはロック状態になっており、ソフトによっては起動やインストール、アンインストールが制限されます。この制限により支障を来す場合には、タスクトレイのSSRPのアイコンを右クリックしてConfigureを左クリックするか、-:Software Policy:-を左クリックするかして立ち上がるSSRPのウインドーのアンロックボタンをクリックしてロックを解除することが必要です。ただし、デフォルトではロックし忘れ対策として解除後30分を経過すると自動的にロックされるようになっていることには注意が必要です。


3. SSRPの通常ロック対象ソフトのダメ押し的な追加設定

 SSRPのインストールを済ませ、アプリのインストール・アンインストール時以外はロックで運用するるだけで、セキュリティを大幅に向上させることができます。それでも、Emotet、IcedID等のファイルレス攻撃、未知のウイルスによる、あるいは未知の脆弱性をつく攻撃等を防ぐにはまだ十分でない可能性があります。そこで、ダメ押し的ではありますが、悪用され得るソフトのうち普段使わないものについて、その実行を徹底的に制限することとします。具体的には、タスクトレイのSSRPのアイコンを右クリックしてConfigureを左クリックするか、-:Software Policy:-を左クリックして立ち上がるSSRPのウインドーのConfigureボタンをクリックするかして、Softwarepolicy.iniファイルを開き、本ブログ末尾に示す編集後のSoftwarepolicy.iniファイルの通り追加、変更(アンダーライン付き太字部分参照)を行います。ロックをかけて実行を制限するインストール済みの.exeと.dllとしては、ファイルレス攻撃に悪用され得るPowerShell関連とマイクロソフト推奨ブロック規則とから選定しています。なお、IncludeDLLsは、性能の観点から0とすべきですが、それではファイルレス攻撃に対抗できませんので、性能が多少犠牲になることを覚悟の上で、1としております。


4.Comodo Firewallによる外部から来たソフトの実行可否の要確認化

 従来型のマルウェアは実行可能ファイルとして外部から取り込むか送り込まれた上で、ユーザが気づかぬうちに実行されることで感染します。ユーザが気づかないのは、その起動にユーザが直接関わらないか、あるいは偽装ファイルであることに気づかず起動してしまうからです。このようなマルウェアの知らぬ間の起動を防ぐのに効果的な実行可能ファイルに対する実行可否の要確認化がComodo Firewallで実現できます。これは、外部から来る実行可能ファイルに対しては、起動時に、実行、ブロック、仮想コンテナで実行のいずれを指定するかの選択メニューが表示されるようにして、ユーザに実行可能ファイルであることを認識させた上で、実行の可否をいちいち指示させるものです。この実行可否要確認化設定は以下の通り行うことができますが、残念ながら、インストーラーを介したりZIPファイルから解凍したりする場合には効かない上に、Windowsシステムあるいはそのアップデート関連のアプリケーションの実行を許可するルール設定を適切にしないと頻繁に実行可否の確認を求められる弱点がありますので、SSRPアンロック状態での作業が多くないのなら組み込む必要はないかもしれません。

実行可否要確認化の設定

 始めにタスクトレイのComodo Firewallアイコンを右クリックして表示されるメニューの自動コンテナ仮想化にカーソルを移動し表示される設定をクリックします。次いで、左端のコンテナ仮想化の中の自動コンテナ仮想化を左クリックして開くウインドーのメニュー左端の追加をクリックします。新たに開くウインドーの最上段のアクションを右端の▼をクリックして開くプルダウンメニューで条件付きで実行を選びます。次いでその下の編集をクリックし、新たに開くウインドーの最上段のファイルの場所を、右端の参照をクリックしファイルグループに行き、最上段の実行可能ファイルを選びます。続いて、数段下のファイルの入手先の右端の追加をクリックし、インターネットを選択します。この追加を繰り返し、リムーバブルメディア、イントラネットも選択します。終わったら、最下段のOKをクリックして、このウインドーを抜けます。これで戻ったウインドーも、やはりOKをクリックして抜けます。戻った自動コンテナ仮想化のウインドーのリストの最上段に追加したアクションが登録されていればプリケーションコントロールの設定完了です。ただし、この設定では、インストール済みのアプリケーションの自動アップデートに対しても要確認化が効くようになってしまうので、外部から来る特定の実行可能ファイル(例えば、Edgeブラウザアップデートの場合は、C:\Program Files (x86)\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe)については、無視するになるよう個別のルール設定を追加しておくと良いでしょう。


-----

; Software Policy inifile

[CustomPolicies]

; Software in standard locations such as Program Files can always run.

; Add any extra locations from which software can be run here.

; (LAN users note - drive mappings are accepted, but may need a manual policy update if they are changed.)

; Format is disk_location=1 Examples:

; C:\Sage=1

; \\server=1

; \\server2\share=1

; J:\=1

[General]

; Do we run the programs listed in the LimitedApps section of this file as a restricted user?

; No if 0, Yes if 1, Always (even when unlocked) if 2

; These days we advise the use of UAE instead since some of the later programs, especially browsers,

; don't like the LimitedApps approach. However if you're still on WinXP it would be a good idea to

; activate LimitedApps as it gives you similar benefits to UAE.

LimitedApps=0

; Allow the system-tray applet to be closed:

AllowExit=1

; Require a password to unlock the policy or use admin-menu shortcuts:

; 1=any password, 2=Admin-level password only

AdminMenuPasswordLevel=0

; Minutes to remain in unlocked mode whilst installing software:

UnlockTimeout=30

; Time during which you don't need to repeat the password for admin functions:

PasswordRetention=5

; Show install/uninstall items on traymenu (not needed if installer is used)

ShowInstallOptions=0

; Warn user to unlock before uninstalling any software:

WarnOnUninstallCpl=1

; Use a different restricted-rights app loader: (for advanced users only)

AppProxy=StripMyRights.exe /D /L N

; Minutes between automatic reload of settings. (not yet implemented)

AutoReload=60

; Show Web link for contributions to project:

; 1 GUI menu only, 2 menu and tray.

; (You may remove this if you wish)

WebLink=2

[SoftwarePolicy]

; Your list of restricted extensions, comma-separated, no spaces or fullstops - for advanced users only.

; -This can be commented out in which case a default list applies.

FileExtensions=VBS,JS,JSE,OTF,SCT,SHB,VBE,WSF, WSH,PS1,A3X,BAT,CHM,CMD,COM,CPL,CRT,EXE,HLP,HTA,INF,INS,ISP,MSC,MSI,MSP,MST,OCX,PIF,REG,SCR,SHS,JS,JSE,VB,WSC,APPLICATION,XPI

; Allow programs to be run from ProgramData, AppData\Roaming and AppData\Local folders.

; This is necessary on Windows 10 to allow 'packaged apps' to run, and sometimes on Windows 7.

; Considerably weakens security, so set to zero if you don't use packaged apps.

; Number is the minimum build version of Windows to activate this on.

; Set to 7000 for Windows 7+, 1 for all versions, or zero to deactivate the feature completely.

AddAppData=10000

; Allow programs to be run from desktop - ** UNWISE **

AddDesktop=0

; Allow programs to be run from root folders of the C: drive.

; Occasionally needed for very old software which installs itself into a root folder.

; Windows 7/8/10 have several root folders which are writable by a limited user, so OFF is preferred.

AddRootDirs=0

; Automatically add drive letters created by a LAN login script. Generally OK on trusted networks.

AddMappings=1

; Bypass security for local admins. ** UNWISE ** unless user is a genuine restricted account.

AdminBypass=0

; Allow software to run from Temp folder in userprofile. ** UNWISE **

; Accepts build numbers, see AddAppData.

AddTempDir=0

; Allow Windows Defender updates (mpam-*.exe) to run from the Temp folder on Windows 10 or later..

Add Defender=10000

; Convert drive letters in CustomPolicies section into UNC path permissions.

; Seems to work better on most Windows versions,

; and no it doesn't mean that you don't have access them by UNC path.

TranslateMappings=1

; Control whether disallow policies may be set. A predetermined set of disallow policies exists

; which match the folders under \Windows which may be writable by an ordinary user.

; 0 No disallow action, 1 Disallow custom folders, 2 Disallow custom list AND predetermined system subfolders.

; As from v1.11, disallow policies are controlled by lock/unlock action instead of being permanently on.

DisallowSpecificFolders=2

; Control where dynamic link libraries can be launched from, as well as executables:

; Note that this has a performance hit, therefore only use where max security is needed.

IncludeDLLs=1

; AutoInstall applies the policy in this inifile as soon as the main program is run. 1=normal, 2=silent, -1 applied.

; AutoInstall=1

[Safety]

; Ensure that Windows system components can always be launched.

; Do NOT change this item unless you understand the implications!

AlwaysAllowSystemFolders=1

[Disallowed]

; Add paths or executables which should never be run.

; Wildcards allowed. Be careful here as mistakes could cause problems.

; Note that this list is ignored unless DisallowSpecificFolders is non-zero

powershell.exe=1

powershell_ise.exe=1

system.management.automation.dll=1

System.Management.Automation.ni.dll=1

addinprocess.exe=1

addinprocess32.exe=1

addinutil.exe=1

aspnet_compiler.exe=1

bash.exe=1

bginfo.exe=1

cdb.exe=1

csi.exe=1

dbghost.exe=1

dbgsvc.exe=1

dnx.exe=1

dotnet.exe=1

fsi.exe=1

fsiAnyCpu.exe=1

infdefaultinstall.exe=1

kd.exe=1

kill.exe=1

lxssmanager.dll=1

lxrun.exe=1

Microsoft.Build.dll=1

Microsoft.Build.Framework.dll=1

Microsoft.Workflow.Compiler.exe=1

msbuild.exe=1

msbuild.dll=1

mshta.exe=1

ntkd.exe=1

ntsd.exe=1

powershellcustomhost.exe=1

rcsi.exe=1

runscripthelper.exe=1

texttransform.exe=1

visualuiaverifynative.exe=1

wfc.exe=1

windbg.exe=1

wmic.exe=1

wsl.exe=1

wslconfig.exe=1

wslhost.exe=1

[LimitedApps]

; Run these apps with limited priveleges, such that they can typically only save files to the user-profile.

; Format is name=executable where the name is purely for display. Not case sensitive, and the executable need not have a path.

Mozilla Firefox=Firefox.exe

Opera=opera.exe

SeaMonkey=seamonkey.exe

Chrome=chrome.exe

Iron=iron.exe

Microsoft Edge=msedge.exe

Safari=safari.exe

; If you use a non-Webmail email client, you might also want to include it here.

; IE may malfunction if run restricted, therefore off as supplied. Remove the semicolon below to activate.

; Microsoft Internet Explorer=iexplore.exe

[AdminMenu]

; Provides a tray-menu of useful functions. Use as you wish, or remove if not wanted.

; For local admins, these always run unrestricted. Examples:

; (C:\)=explorer.exe C:\

Control Panel=control.exe

; Printers and Faxes=control printers

; Network Connections=ncpa.cpl

; Computer Management=compmgmt.msc

; Disk Management=diskmgmt.msc

; Registry Editor=regedit.exe

; Task Manager=taskmgr.exe

; Windows Firewall=firewall.cpl

; Command Prompt=cmd.exe

; Salamander=salamand.exe

0コメント

  • 1000 / 1000

軽量ノートパソコンの選定から、整備補強、セキュリティ強化、通信費削減まで

忖度レビューから、大半のユーザに無用な性能の強調、性能スコアの不適切参照、フリーウェアの過小評価まで、 パソコン界に蔓延る買い煽り、高額化誘導を、パソコン歴40年以上のToshiが暴く!?