a

よろしくのキワミ

1日1解析 part1

1日1解析 part1

Malwareの解析がしたくなったのとアセンブリを読む練習のために気になったやつを書いていこうと思います。

今回のサンプル

https://app.any.run/tasks/8ecca9e4-c541-4317-9001-1f5052060d24/

表層解析

importされた文字列を見てみると、気になる文字列がいくつか見える。

f:id:toDo:20200611153131p:plain

f:id:toDo:20200611153135p:plain

さらにsectionをみてみると以下のようになっている。

f:id:toDo:20200611153310p:plain

.symtabというセクションが存在する。これはGolangで書かれた実行ファイルにみられる特徴なのでこのmalwaregolangで書かれていることがわかる。

静的解析

アセンブリをみても訳がわからなかったので簡単なbinaryを読んでわかった気になることにする。

IDA Proにはgoのタイプ情報を解析するスクリプトがあるが、そんなリッチなものは持っていないのでゴリ押しで解くことになる。(何かいい方法があれば教えてください)

github.com

Hello Worldを表示するバイナリを作成して逆アセンブラにかけてみる。

package main
import "fmt"

func main() {
    fmt.Println("Hello World")
}

文字列一覧をみてみると文字列Hello Worldが表示されていないことがわかった。 普段は文字列やimportされているLibraryなどから解析を進めるようにしていたので困った。

と思ったが、以下の内容が引っかかった。

f:id:toDo:20200611225005p:plain

frame.sp=に代入?されている文字列の一部にHello Worldが見える。

他の文字列でも試してみることに

package main
import "fmt"

func main() {
    fmt.Println("SAMBA RYTHM")
}

これの結果は以下のようになった。

f:id:toDo:20200613223024p:plain

文字列がAから順に連なっているのがわかる。

What do you mean? ooh...

動的解析

動かしながらアセンブリを読んでいくことに。

人によっては

「どうして静的解析を頑張ってから動的解析しないの?練習にならないよ?」と思うかもしれませんが、

www.nicovideo.jp

動かしてみる

管理者権限で実行する。

すると、いくつかのファイルが暗号化され、閲覧できなくなる。

f:id:toDo:20200611232122p:plain

さらにデスクトップとC:¥にファイルが追加されていた。

f:id:toDo:20200611232239p:plain

textの内容を要約すると

  • 文書、データベース、写真を暗号化した
  • 複合してほしいならツールを売るからメールしてくれ
  • メールに3つのファイルを3MBまで添付してくれたら無料で複合する

ということらしい。

Malwareの流れ

ProcMonを見てみると大雑把に以下のような流れで動いていることがわかる。

  1. registoryを編集
  2. 各ファイルを暗号化
  3. 脅迫文を作成

C&Cサーバとの接続とかは特にしていないっぽいですね。

お手上げ

よくわからなかったのでGo のbuild idを検索対象に含めただけの簡単なyara ruleだけ作ってあとは調べることに。

golang.org

Yara rule

rule EkansRansome {
    meta:
        Description = "Ekans Ransomeware rule"
    
    strings:
        $a = "Go build ID: \"X6lNEpDhc_qgQl56x4du/fgVJOqLlPCCIekQhFnHL/rkxe6tXCg56Ez88otHrz/Y-lXW-OhiIbzg3-ioGRz\""
    
    condition:
        all of them
}

すると下記のブログでSnakeという名前のマルウェアを解析している記事が見つかった。

medium.com

読んでいる限りだとEKANSとほぼ同じっぽい。

せっかくなので作ったyaraをかけてやるがどちらもチェックに引っかかった。

f:id:toDo:20200614074256p:plain

がhash値をとってみると違うので微妙に変更点とかがあるっぽい...

f:id:toDo:20200614074257p:plain

感想

ファイルを暗号化するってことがわかった段階で、複合するプログラム書こうと思ったのですがそもそも全く解析できなかったので難

こういうタイプのマルウェアは日本で有名なやつがあったのでそれで練習したいと思いました。。。。

精進します

プライバシーポリシー お問い合わせ