myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

Maya mel Malware

1,2週間前から取引先から最近流行っているMayaのマルウェアの報告がありました。

感染すると:

・userSetup と animImportExport.pres.mel を書き換えて、マルウェアコードを追加します。
・シーンを保存する時に、マルウェアコードを追加して保存します。
2020年6月27日以降Mayaを起動すると無限ループでMayaをクラッシュさせます。

まーまーやばいやつですね。
何も知らないでこのままいったら、おそらくプリファレンスフォルダ削除で直していたんでしょうね。
喜んだ後に普通に仕事して、感染したファイルを開いて、また無限ループ。
の無限ループ。

melなので、コードの中身は簡単に確認が出来るけど、結構読み辛いです。
で、少し調べてみたら、githubにマルウェアのdeobfuscated コードがあがっていました。
興味があったら:

マルウェアコード
https://gist.github.com/OriginalAdric/acbe902c89064e8300f2bc475a953e05

・・・ deobfuscate って日本語でなんていうのかな。



--- 解決方法 ---


Autodesk Maya Security Tool
https://apps.autodesk.com/MAYA/en/Detail/Index?id=8637238041954239715&appLang=en&os=Win64
※ Autodeskアカウントが必須

インストール方法など(ボンデジ)
https://support.borndigital.co.jp/hc/ja/articles/900001472643

以上のツールを使えばマルウェア駆除が出来ますが、シーン1つ修正するとMayaが強制終了してしまうので、
複数ファイルをやるときにかなり時間が掛かってしまいます。

もっと早く出来ないかと色々検証してみて、出来たのはこれです:


checkMalware
download

仕組みはシンプルです。
・入力したフォルダの中をmaとmbファイルを探して、そのファイルの中に怪しい変数名が入っているかどうかを検索して、感染したファイルをリスト化します。
・Clean up にクリックすると Maya batch モードで MayaScanner を使ってマルウェア駆除します。
ファイルの大きさやプラグインを使っている数によって処理時間が異なりますが、1ファイル30秒以上が掛かります。
・ログも残しているので、なにかしらの原因で駆除が出来なかった場合はスクリプトエディターで報告が出てくるはずです。その場合はMayaScannerを手動でやるしかありません。

checkMalware.png

■ インストール
Mayaの scripts フォルダにコピー

■ 実行方法
import checkMalware; checkMalware.main()

入力ウィンドウが出てきて、ここに確認したいフォルダを入力して、OKにクリック。
感染したファイルのリストが出てきて、シーン名にダブルクリックで開けます。

※ incrementalsaveの中はチェックしない


注意:
・ignore userSetup,py というオプションは一時的に userSetup.py を userSetup.py.skbk にリネームして読み込まれないようにしているだけで、スクリプトが中断されたらリネームしたまま残ってしまう可能性があります。
・ツールはバージョンの確認はしないので、修正されたファイルは実行されたMayaのバージョンになります。
・ファイルアトリビュートを変更しないので、ファイルは読み取り専用になっていれば、上書きが出来なくてエラーになってしまいます。あらかじめに読み取り専用のチェックを外してください


readonly.png

Maya Batch モードだと userSetup.py で読み込んでいる弊社のパイプラインツールはうまく動かなかったから、エラーで中断していた。userSetupを無視するオプションはMayaにはないので、一時的に userSetup をリネームすることにしました。

時々エラーが出ていて、マルウェア駆除が出来ていませんでした。
その原因は、たまに起こる原因不明の現象。cmds.file(q=True, sn=True) でシーン名を取得が出来ない。
そのワークアラウンドは cmds.file(query=True, l=True)[0] でシーン名を取得すること。

なので、MayaScannerCB.py を編集して、以下のコードを追加しました

# myara -------------------------------------------------------------------------------
if cmds.file(q=True, sn=True) == "":
cmds.warning("No Name Found. Renaming")
realName = cmds.file(query=True, l=True)[0]
cmds.file(rename=realName)
# ------------------------------------------------------------------------------- myara




MayaScannerFIX
download

MayaScanner をインストールした後にこのファイルを上書き

C:\ProgramData\Autodesk\ApplicationPlugins\MayaScanner\Contents\plug-ins