昨日のPowerShellで実行されるコマンドって何だったの?(自分が知りたい)
皆さんこんにちは、紫夜千景です。
まずは謝罪から。
昨日と一昨日、2日連続で遅延証明書を発行する事態となり申し訳ございませんでした。
次からはこのような事態がないよう努力いたします。
不名誉な記録はここで途絶えさせるために頑張っていきます。
さて、気を取り直して今日は昨日の記事でできなかったやつを検証していこうと思います。
昨日できなかったこととは、そうまさに「コマンド解析」です。
その前に
※注意
今回の記事で、危なそうだなと千景さんが思ったところは載せていません。
もしコード、プログラムなど気になるという方がいらっしゃいましたらTwitterでもコメントでも良いので教えてください。
ただし、自分で行う際は自己責任でお願いします。
※追記:サンプルで保存してたコードやプログラムがWindows Defenderに消されたのでできなくなりました。ごめんなさい。
実はあのコマンド、YouTubeなどの注意喚起で出回っている動画では
「mshta」というWindowsの標準ツールを使っているのですが、実はそれが使われていないコマンドのやつがサンプルだったので調べるのに苦労しました。
ちなみにmshtaというのは、HTMLアプリケーションを起動させるツールでその後のコマンドに悪意のあるファイルへのリンクを乗っけることでそのファイルをダウンロードして実行させる仕様です。
そこら辺の解説はネットにいくらでもあるのでそちらを参照していただければと思います。
今回は、自分が当たったコマンドを問題ない部分まで載せて解説しようと思います。
こいつです。
最初の「powershell」は、powershellで実行することを意味しています。
これだけを昨日のWinキー+Rキーで実行できるツールに入力して実行するとpowershellというコマンドプロンプトの上位互換?みたいなのが立ち上がります。
その後に続いている「-win mini」は、powershellのウィンドウを最小化させるコマンドが続いています。
実は「-win mini」、このコマンド単体では実行することが出来ず先のpowershellを頭に置いて実行すると動作します。
その後の「-enc」、千景さんは何らかの暗号化方式で暗号化されていた続く文字列を復号するコマンドだと思ってたんです。
「enc」って文字が「encrypt」の略で本来なら「暗号化」って意味なのに千景さんは「復号」と勘違いしました。
勘違いが役に立ちましたが次からは気を付けます。
調べると「-enc」で使われている暗号化方式はBase64らしいのでデコードサイトを用いてモザイクで隠した文字列の部分を復号してみました。
すると
こんな文章になりました。
このコマンドを調べていくと「curl」というのは記事冒頭で解説したmshtaと同じものだと考えていただいて結構です。
実際ちょっと違いがありますが、ざっくり言うと大体一緒なので細かいことは省略します。
curlを用いてhttp://から始まるリンクのサイトにアクセスします。
最後の「Invoke-Expression」はサイト内部を調べた後に解説した方が都合が良いので後でします。
ここで表示されていたリンクにアクセスしたんですが、
謎の文字列がこれでもかというくらい乗ってるページにつながりました。
コマンドプロンプトでping飛ばしても何も起きなかったのでサーバー消えてると予想してたんですが予想外ですね。
文字数を計算してみたんですが、なんとまさかの23498文字ありました。
嘘やろ...
ちなみに、先ほどの「Invoke-Expression」は入力されている文字列をコマンドとして実行するように指定するコマンドです。
恐らくこのサイトの文字列をコマンドとして入力させ実行するコマンドが暗号化されて隠されていた。というのが復号したコマンドの動作だと思います。
しかし、23498文字もかけてコマンド作るでしょうか...?んなわけない。
コードを難読化させたことで、23498文字も使ってるんだと思います。
というわけなので、何も分からない素人がほぼ勘頼りで難読化されたコードの中で要らない部分を省いたところ、
「802」文字になりました。
22696文字も減ったのか...どんだけ難読化させてたんだ...
「流石に減りすぎだろ」
と思うかもしれませんが、PowerShellのコマンドは「$」が関係してるというヒントをこの記事を書いている途中で得たのでそれを探しながら難読化したコードを省いてました。
怪しいところが2文字ありますが、あってもなくても多分動作変わんないなと思ったので省いてません。
しかし、この省いて出てきたプログラムはPowerShellで動くコマンドで、千景さんはPowerShellのコマンド(プログラム?)は完全未履修なのでコマンド(プログラム?)の内容が分かったら記事にしようと思います。
Base64の解読あたりですぐ終わると思って記事書いてたけど、全然そんなことなかった。

.png)
コメント
コメントを投稿