読者です 読者をやめる 読者になる 読者になる

Log.i53

Themidaのアンパックを目指すブログ(最近スプラトゥーンに浮気気味)

スプラトゥーンの午後ティーフェスのレモンティー陣営で貢献度3位になったくコβ彡

www.nintendo.co.jp

 2015/07/25日(土)の午後3時から翌2015/07/26日(日)の午後3時まで行われたスプラトゥーン午後ティーフェスにおいてレモンティー派閥で24時間弱耐久スプラトゥーンしたらフェスの貢献度ランキング3位になりました。武器はダイナモテスラで安全シューズとインク回復アップ8枚のギアでひたすら塗ってました。フェスTはイカ速度アップが2個ついてくれたおかげで潜伏移動が楽しめました。自身のウデマエですがロラコラ・ダイナモでA+99に到達した程度のローラー厨でシューターはぼちぼち…チャージャーは練習してないし全然使えません使ってません…!

イカ、感想

続きを読む

UPXにおけるIATのマニュアル再構築 【分析編】

i53.hatenablog.jp
 前回の記事でIATについて大雑把に勉強したので、その情報を元にIATのマニュアル再構築を試みます。

# 勉強したてホヤホヤなので間違いなどがあれば是非コメントにて指摘して頂けると助かります...!

続きを読む

IAT:インポートアドレステーブルについて

 そもそもIATってなんぞ
f:id:i53:20150702224157j:plain

 現状アンパック作業におけるIATの再構築はOllyDumpやImpRecなどのツールアシストで行っていましたがツールが利用できなかったとしたら分析者はマニュアルでこれを再構築する必要が生じます。IATのマニュアル再構築のためにまずIATについて理解しておく必要があります。またIATフックなどのテクニックを利用する場合にもIATの構造を理解しておく必要があります。自身の理解のためにIATについて簡単にまとめました。

# 簡単化のためにRVA(Relative Virtual Address)という単語はすべて(イメージベースからの/仮想アドレスにおける)オフセットという言葉に置き換えています

続きを読む

マニュアルアンパック:PECompact その②

 前記事で作成したスクリプトを以下の別のUnpackmeサンプルで試してみたところOEPに辿り着かず途中で終了してしまった:forum.tuts4you.com

 StrongODプラグインを入れて試してみたら無事OEPまで辿り着いたのでアンパックの途中で何かしらのアンチデバッグが行われているらしい。

 処理を追ってみたらIsDeuggerPresent命令に遭遇したのでどうやらこれが原因である:
f:id:i53:20150712045618p:plain

 スクリプトの最初でdbhコマンドを実行させることで無事OEPに到達することができた:
f:id:i53:20150713062127p:plain

マニュアルアンパック:PECompact

導入

 PECompactは速度とパフォーマンスに焦点を当てて設計された商用パッカーです。無償の学生版はマルウェア作者によって使用されることが多かったため廃止され、使用用途や組織名による登録が必要な試用版に置き換えられています。このパッカーでパックされたプログラムは、アンチデバッグ例外や難読化コードを含んでいるためアンパックするのが難しくなっています。PECompactはサードパーティ製のツールを組み込むことが可能となるプラグインフレームワークが実装されており、マルウェア作者の多くはアンパックの難易度を上げるためのサードパーティ製のツールを付加しています。
 PECompactのマニュアルアンパックはUPXのマニュアルアンパックと基本的に同じです。ただし、プログラムがいくつかの例外を発生させるので、OllyDbg上でプログラムに例外を渡す設定をする必要があります。
 最終的にはテールジャンプを探すことでOEPを見つけることができます。いくつかの関数をステップオーバーすると、多くの0x00バイトが続くjmp eax命令からなるテールジャンプを確認することができます。

続きを読む

Inside Code Virtualizer を読んだ

tuts4you.com
OreansのCode Virtualizer 1.0.1.0のデモ版をリバースエンジニアリングした結果を纏めたScherzo氏の文献を読みました。ただし、このバージョンがリリースされたのが2006年の6月なので現行のCode VirtualizerやThemidaで利用されるものとは大きく異なっている可能性もあります。あくまでCode Virtualizerの動作原理の基礎的な部分を知るための読み物です。

# 例によってフェアユースの概念で公開していますが問題があれば削除致します
# ところどころ翻訳がおかしいのでとりあえず読めればいいという人向け

続きを読む

マニュアルアンパック:ASPack

導入

 ASPackはUPXよりかは幾分セキュリティに焦点を当てており、プログラムのアンパックを難しくするためのいくつかのテクニックを採用しています。ASPackは自己置き換えコード(self-modifiing code)と呼ばれるブレークポイントの設置や一般的な分析を難しくする技術を使用しています。
 ASPackは著名であるため多くの自動アンパックツールが利用可能となっています。これらの自動アンパックツールは常に有効であるとは限らないものの手っ取り早くアンパックしたい場合には最初に試す価値があります。
 自動アンパックツールによりASPackでパックされたファイルを正常にアンパックすることもできるでしょうが、分析者であればマニュアルでファイルをアンパックできるに越したことはありません。ASPackでパックされたファイルをデバッガでロードすると、UPXでパックされたファイルと同様に、アンパッキングスタブのコードの最初にPUSHAD命令があるのを確認することができるでしょう。UPXで利用したESPトリックはASPackにおいても有効です。PUSHAD命令をステップ実行した後でスタックアドレス上にハードウェアブレークポイントを設置します。対応するPOPAD命令が呼び出されるとブレークポイントがトリガーされ、そのPOPAD命令のすぐ後ろにOEPに到達するための(PUSH・RET命令を利用した)テールジャンプを確認することができるでしょう。

続きを読む