Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Antimalware Scan Interfaceを勉強中

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);

ここから先更新予定

参考文献

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away