2019.04.22
難読化シェル芸の世界 Bashとすてきな難読化④
『難読化シェル芸の世界 Bashとすてきな難読化』。ディープでユーモアあふれる難読化シェル芸の世界に触れてみてください。
『難読化シェル芸の世界』PDF書籍をマイナビブックス・Manateeにて販売中です。
またマイナビブックスにて紙版+電子版のセットでご購入いただくと、電子版商品が半額になるキャンペーンを実施中。通常 6,048円 のところ 4,536円 (1,512円OFF)になる2019年5月7日までのキャンペーンです。お見逃しのないよう、お願いいたします。
難読化シェル芸の解析と妨害
難読化シェル芸における耐タンパー性 1) の確保について考えてみましょう。 解析しようとする行為を検出して、通常と違う動作(停止など)を行うようにすることを考えてみます。 解析しようとする行為とは、どういったものか、そして解析の妨害をどうやっていくか説明します。難読化シェル芸の解析
xオプションの利用
シェルスクリプトと同様にファイルになっていることが前提になりますが、bashのxオプションを使ってデバックすることができます。 通常、シェルスクリプトのデバックにもよく使われる手法ですが、bashのxオプションを使うことで いくら難読化されたシェル芸でも最終的に評価されたコマンドを確認することができます。難読化シェル芸の解析 echoの利用
実は難読化シェル芸の効率的な解読方法があります。 echoを先頭に付けて実行することです。いくら複雑に難読化していても内容が見れてしまいます。xオプションの検出
bashのxオプションは、特殊なシェル変数$-で知ることができます。 以下を難読化シェル芸に書いておけば、bashのxオプションを検出して処理を終了させることができます。この実行例では、xオプション検出時の処理をexitとしていますが、任意の処理を書くことができます。
echoの検出
「先頭にechoを付けられたことを検出するシェル芸」ができればいいんですが・・・先頭のechoを検出するシェル芸・・・できるでしょうか。 以下のような方法を考えました。":"を使います何も出力されない。
:が出力される。
これを利用して、echo検出シェル芸を作ってみます。
echo が先頭に付くと「echo hoge」が実行される。
「echo hoge」の代わりに「exit 1」などにしておけば解析を妨害できますね!
応用して本当にやらせたい処理も隠蔽できます。
頭にechoを付けると実行されない。
これらにより・・・
耐タンパー性の確保ができました! これにより難読化シェル芸は、簡単に解析できないより危険な物になってしまいました。
妨害工作
この解析妨害は、従来の実行形式バイナリファイルに対する解読妨害(アンチデバック)2)と異なり、カウンター攻撃が可能になります。 難読化シェル芸の解読妨害機能は、解析を検知して「 任意のシェル芸」 が実行可能になります。つまり、こんなことができます。
・解析しようとすると無限ループ
・解析しようとするとターミナルが落ちる。
・解析しようとすると奴のSSH秘密鍵を盗む。
そして・・・ この「echo検出 危険シェル芸」を難読化して複数仕込むことで、闇を深くすることができます。 解析手順を1つでも誤ると死ぬという恐怖・・・!