UJP - PowerShellでマルウェアを検出するには

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

  • カテゴリ ニュース・徒然 の最新配信
  • RSS
  • RDF
  • ATOM

ブログ - PowerShellでマルウェアを検出するには

PowerShellでマルウェアを検出するには

カテゴリ : 
セキュリティ » ニュース・徒然
ブロガー : 
ujpblog 2019/11/13 23:51
 Windowsに搭載されているスクリプト言語環境がPowerShell.バッチプログラム(拡張子.bat)の現在進行形.

 Windowsのマルウェアの主流はPowerShellを用いたファイルレスマルウェアなのだそうです.スクリプト言語なので送り込んでもファイルじゃなくて主記憶メモリ内で展開して実行されるから,従来型のファイルスキャンのパターンマッチングのアンチウイルスソフトでは検知できない.

 それに向けての対策もPowerShell 5.0から行なわれていて,ログの出力ができるようになっているそう.設定が必要で,グループポリシーのWindows Shellで「XXX ログを有効にする」を[有効]にすることで有効になる.

モジュールログ

 イベントとログにスクリプト名や引数が記録されるようになる.
 まずはどういうスクリプトをいつ実行しているかな程度のもの.バッチ処理の実行実績の確認程度の用途かな.対セキュリティでは無い.

PowerShellスクリプトブロックのログ記録

イベントとログにスクリプト名や引数が記録されるようになる.対話的な呼び出しも記録されるけれど,実行結果は記録されない.

PowerShellトランスクリプション

 これまでの話の流れからいうと,実行結果も記録される.これまでも,デバッグ用途でStart-Transcriptと入力すると,トランスクリプトログが記録される.Transcript=転写という意味.
 グループポリシーで設定することで,わざわざStart-Transcriptと入力しなくてもログが取得されるようになる.逆にいうと強制的にログを吐き出させる.

 こんな感じで使う.

 

 すると,こういうログが作成される.
**********************
Windows PowerShell トランスクリプト開始
開始時刻: 20191113004136
ユーザー名: windows81pro\ujpadmin
RunAs ユーザー: windows81pro\ujpadmin
構成名: 
コンピューター: WINDOWS81PRO (Microsoft Windows NT 10.0.17134.0)
ホスト アプリケーション: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
プロセス ID: 9164
PSVersion: 5.1.17134.765
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.17134.765
BuildVersion: 10.0.17134.78-)65
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
トランスクリプトが開始されました。出力ファイル: C:\test.log
PS C:\Users\ujpadmin> write-host "test"
test
PS C:\Users\ujpadmin> Stop-Transcript
**********************
Windows PowerShell トランスクリプト終了
終了時刻: 20191113004146
**********************
 なるほど.

 こういう仕組みということで,PowerShellで作成されたマルウェアを検知しようとすると,まず第一にイベントログの中から実行されたスクリプト名を取り出す仕組みから,しばらくはモニタリング期間として実行されるスクリプト名やパラメータ,時間(タイミング)などの情報を収集して辞書を作成.
 辞書が出来上がったら,検出モードとして,辞書にないスクリプトが実行されたら通知する感じかな.

 そして第2として,スクリプトの中の実行された命令を見て,マルウェアが使いがちな命令を検出すること.

「Powload」の手口の変化:ファイルレスな活動からステガノグラフィまで
https://blog.trendmicro.co.jp/archives/20694

 この記事によるとPowerShellの場合Get-Cultureというコマンドでコンピュータの地域設定を取得しているそうだ.
 単純に外部プログラムを実行するコマンドのStart-Processなどを検出しても良いのかもしれない.この辺は,多くの検体を持っているセキュリティ対策を行っている会社の方が強いだろうなぁ.Trend Micro Anti-Threat Toolkitとかで提出を受けるのかな.

トラックバック


広告スペース
Google