4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Antimalware Scan Interfaceを勉強中

Last updated at Posted at 2019-11-07

AMSI(Antimalware Scan InterFace)

  • Microsoftが開発したWindows10から標準で搭載されているMalware対策用インターフェース
  • Powershell,VBscript,JavaScriptなどと統合されており、実行されるスクリプトのほとんどはAMSIを通じてWindowsDefenderに送られスキャンが行われる。
    • AmsiProviderを独自で作成することでAMSIを通じて自身のProviderに実行されるスクリプトの情報を送ることが可能。そして、受け取ったスクリプトの情報から悪意のあるものか判別してスクリプトの動作を止めることができる。

PowerShellとAMSIの関係について主に勉強

  • PowerShellで実行されるスクリプトはAMSIを通じてWindowsDefenderに送られる。
  • AMSIは実行されるスクリプトの原文を送信
  • 具体的には、PowerShellの中ではwin32APIの中のAmsiScanBuffer関数かAmsiScanString関数がAMSIにスキャン要請を出している。
      
    image.png

引用元
https://docs.microsoft.com/en-us/windows/win32/amsi/how-amsi-helps

  • 上記の図をPowerShellの部分だけ抜粋し,通常で行われている処理を簡単に表すと以下の図となる.
    image.png

実際にいろいろ触ってみて得られた知見

  • PowerShellを起動した際

裏で5回スクリプトが実行されており,初期処理が行われている.
(AMSIを通じてスクリプトが実行されていることを確認)

  • スクリプト実行の際,エラーが起きた時

裏で5回スクリプトが実行されており,エラー処理が行われている.
(こちらもAMSIを通じてスクリプトが実行されていることを確認)
その後,エラー内容が表示されてプロンプトが起動する.

アプリケーション作成者のAMSI使用方法

  • AmsiInitialize関数 初期化処理           ↓
  • AmsiScanBuffer関数 スキャンを依頼する処理    ↓
  • AmsiUninitialize関数 初期化前に戻す処理      ↓

この順番で実行することでスキャンを依頼できる。

  • 関数の定義(c++)

image.png
image.png
image.png

使用の具体例(定義だけではわからない人向け)

  • 変数定義

HAMSICONTEXT amsiContext = NULL;
HAMSISESSION amsiSession = NULL;
AMSI_RESULT result = AMSI_RESULT_NOT_DETECTED;
char buffer[]="スキャンしたい文字列"
  • コード本体
AmsiInitialize(L"myapplication", &amsiContext);
AmsiScanBuffer(amsiContext,buffer,strlen(buffer), L"Scan Sample", amsiSession, &result);
AmsiUninitialize(amsiContext);

ここから先更新予定

参考文献

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?