cyberchefで難読化解除してみる

背景

CyberChefとても便利ですよね。
自分は、簡単なデコードに使っているだけで、使いこなせているとは言えず、勉強したいと思っていました。

そんな中、かなり実践的な記事を発見!

https://www.freebuf.com/sectool/209290.html

勉強がてら、早速真似してやってみます。

Chefって料理人の意味。最初わかっておらず、なんで実行ボタンが”BAKE”なの、って思ってたw

Base64編

手順通り、HYBRID ANALYSISから抽出します。難読化された文字列をInputに貼り付けます。

base64のみを選択するために、正規表現のルールを作成します。

左側から[Regular expression]を中央の[Recipe]に移動させ、Regexにbase64にマッチする正規表現を記載します。

[0-9a-zA-Z/+=]{30,}

{30,}は30文字以上になります。[BAKE]をクリックすると、上手くbase64のみハイライトされています。

“FromBase64″をRecipeに追加しますが、可読文字列になりません。

Base64文字列の前にある”IO.Compression.DeflateStream”に注目して下さい。

圧縮等がされていることが推測されます。

Recipeより”Raw Inflate”を追加して”BAKE”してみて下さい。

上図の様に、”Generic Code Beautity”を使うと、Outputがさらに綺麗に表示されます。

なお、この方法で、Powershellスクリプトは大体復号化できるみたいです。

saveRecipeから一度作成したルールを保存できます、今回使用したルールは以下です。(compact json)

[{"op":"Regular expression","args":["User defined","[0-9a-zA-Z/+=]{30,}",true,true,false,false,false,false,"List matches"]},{"op":"From Base64","args":["A-Za-z0-9+/=",true]},{"op":"Raw Inflate","args":[0,0,"Adaptive",true,false]},{"op":"Generic Code Beautify","args":[]}]

charcode編

https://gist.github.com/jonmarkgo/3431818

上記のリンクにある文字列を料理します。

[Regular expression]にて正規表現を書きます。こんな感じで

([0-9]{2,3}(,\s|))+

次に[From Charcode]を選択します。DelimiterはCSVでいうところの区切り文字です。今回はコンマを指定します。

callback先はもう一度実施する必要がありそうなのでやってきます。

出てきました!CTFっぽいw

ルールは以下です。(chef format)

Regular_expression('User defined','([0-9]{2,3}(,\\s|))+',true,true,false,false,false,false,'List matches')
From_Charcode('Comma',10)
Regular_expression('User defined','([0-9]{2,3}(,\\s|))+',true,true,false,false,false,false,'List matches')
From_Charcode('Comma',10)

webshell編

webshell詳しくないですが、見よう見まねでやってみます。サンプルはこちら

Base64のRecipeを再利用してみます。

InputとOutputが少しだけ違います。何重にもBase64されているという事です。

ループ処理をRecipeに書いていきます。

まずはRecipeの先頭に[Label]を追加し、任意の名前をつけます。ここでは”start”とつけています。

Recipeの最後に”Jump”を追加し、jump先のラベルを追加と、ループ回数を指定します。

いや、素晴らしい〜。今回使用したルールは以下です。(chef format)

Label('start')
Regular_expression('User defined','[0-9a-zA-Z/+=]{30,}',true,true,false,false,false,false,'List matches')
From_Base64('A-Za-z0-9+/=',true)
Raw_Inflate(0,0,'Adaptive',true,false)
Jump('start',21)
Generic_Code_Beautify()

まとめ

CyberChef最高!!ブラウザでできるので、スマホでも頑張ればできそうですね。

前までは解析環境で動的に宛先取るのが早いと思ってましたが、CyberChefの方が早いですね。updateも頻繁なので、もっと使っていこうと思います。

最近https://www.freebuf.com/の記事をチェックするようになったんですが、他にも有益な情報が多いので、是非チェックしてみて下さい。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です