17 ポイント 投稿者 GN⁺ 2023-09-14 | 5件のコメント | WhatsAppで共有
  • エクスプローラーのクラッシュが急増したため原因を調べていたところ、スタック上にマルウェアに似た関数ポインタを発見
  • 調べてみるとマルウェアではなくアンインストーラーだった
  • アンインストーラーは終了後、自分自身のバイナリを削除しようとして待機していた(Self Deleting)
    • このコードは CodeProject で 10 年前に紹介された方法を使っていた
  • おそらく何らかの DLL の関数を呼び出す必要があったのだが、それが迂回(Detour)されて起きたもの
  • 自分自身を削除するなら、このように別プロセス(エクスプローラー)へのコード注入や迂回をせず、次のように cleanup.js のような一時ファイルを使うこと
    • このコードは自分自身を削除し、その後アンインストーラーについても 20 秒間削除を試みる
var fso = new ActiveXObject("Scripting.FileSystemObject");  
fso.DeleteFile("C:\\Users\\Name\\AppData\\Local\\Temp\\cleanup.js");  
  
var path = "C:\\Program Files\\Contoso\\contoso_update.exe";  
for (var count = 0; fso.FileExists(path) && count < 40; count++) {  
    try { fso.DeleteFile(path); break; } catch (e) { }  
    WSH.Sleep(500);  
}  

5件のコメント

 
[このコメントは非表示になっています。]
 
kuroneko 2023-09-14

当時、残骸削除プログラムを使っていたのを思い出しますね…
それでも最近は Windows でもパッケージ管理ツールが少しずつ進化しているので、期待しています。+_+

 
botplaysdice 2023-09-14

「高度に」という言葉をよく使っていた気がします。十分に発達した科学は魔法と区別がつかない。

 
xguru 2023-09-14

記事のタイトルは、有名なSF小説家アーサー・C・クラーク卿の言葉に由来しています。

"Any sufficiently advanced technology is indistinguishable from magic."
「十分に発達した科学技術は魔法と見分けがつかない。」

 
GN⁺ 2023-09-14
Hacker Newsのコメント
  • 高度なアンインストーラーとマルウェアの類似性についての議論で、自己削除型実行ファイルに焦点が当てられている
  • 自己削除型実行ファイルのコードを含む CodeProject へのリンクが提供されている
  • バイナリが自己削除し、スリープし、アンインストーラーと相互作用するため、マルウェアのように見えると著者は示唆している
  • 提案された解決策をめぐる議論があり、それが元のものより優れているのか、悪質性の判断に粗悪なヒューリスティックを使っているだけではないかという疑問が出ている
  • 一部のコメントでは、なぜ Windows のプログラムに特別なインストーラー/アンインストーラーが必要なのか、そしてなぜそれを Windows 自体が処理しないのかという疑問が呈されている
  • wscript の使用にも言及があり、コード署名や実行前に検証できないことから、マルウェアとしてプロファイリングされうるとしている
  • 「デツアー」という概念が持ち出され、Linux の LD_PRELOAD コマンドと比較されている
  • アンチウイルスソフトに気づかれないまま、すべてのディレクトリをアンインストーラー一覧に追加した Windows 95/98 向けの単純なアプリについての回想もある
  • アプリを簡単にインストールまたは削除できる独立したフォルダーとして扱う AmigaOS のアプローチを好むと述べるコメントもある
  • 記事は、Windows が JavaScript をシェルスクリプトとして実行できることをサポートしているという驚きの事実で締めくくられている