Next Step
「Analyzing Malware」を一通りやり終えた。かなりやさしい説明で書かれているとはいえ、それでも一元さんには難しい内容で、この本を完全にマスターするには次のものをきちんと理解している必要があると感じた。上から優先度高。
...Windows PCの仕組みをまるっと覚えなさい、ということですね、わかりますん。というわけで、このAnalyzing Malwareを基幹にして以下の本に触手を伸ばしていこうかと思っています。実はいくつかはもうすでにチェックしていたりします。技術本の理解はとても大変であるということが身にしみた一方、だんだんとわかる範囲が広がっていくことの実感も楽しめるようになりました。上半期を目標にMalware解析が始められるようにしたいと思っています。
Win32 API
本はたくさんあるし、Webにも情報がたくさんありますね。実践を積むにはプログラミングをしていくしかないかと思っています。
APIで学ぶWindows徹底理解 (日経BPパソコンベストムック)
- 作者: 安室浩和,日経ソフトウエア編
- 出版社/メーカー: 日経BP社
- 発売日: 2004/04/15
- メディア: 雑誌
- 購入: 17人 クリック: 240回
- この商品を含むブログ (33件) を見る
- 作者: 天野司
- 出版社/メーカー: 日経BP
- 発売日: 2002/10/28
- メディア: 単行本(ソフトカバー)
- 購入: 9人 クリック: 51回
- この商品を含むブログ (46件) を見る
機械語、アセンブラ
新しい本は少ないですが、昔いやというほどテーマになった分野なので、情報は豊富。実践をどのようにこなしていくかが課題だと思っています。
x86アセンブラ入門―PC/ATなどで使われている80x86のアセンブラを習得 (TECHI―Processor)
- 作者: 大貫広幸
- 出版社/メーカー: CQ出版
- 発売日: 2006/01
- メディア: 単行本
- 購入: 7人 クリック: 195回
- この商品を含むブログ (10件) を見る
- 作者: 蒲地輝尚
- 出版社/メーカー: アスキー
- 発売日: 1988/08
- メディア: 単行本
- 購入: 5人 クリック: 22回
- この商品を含むブログ (17件) を見る
- 作者: 日向俊二
- 出版社/メーカー: 翔泳社
- 発売日: 2005/10/21
- メディア: 単行本
- 購入: 7人 クリック: 90回
- この商品を含むブログ (18件) を見る
PEフォーマット
テーマにした本は今確認していません。Webでフォローできるのではと考えています。
下の記事がとても素敵だと思いました。
http://codezine.jp/article/detail/412
http://codezine.jp/article/detail/403?p=1
MSDNのサイトではPEフォーマットのスペックも配っています。
http://msdn.microsoft.com/ja-jp/windows/hardware/gg463119
OS Kernel
やるのは、WindowsなのでできればWindows OS Kernelのソースコードがあれば・・・なのですが、もちろん開示しているわけもなく、Linuxの技術書で行くしかないですよね。ただ、Kernelの基礎の理解、イメージ作りは重要ですが、今回の目的の直接的な知識の習得にはならないかもしれません。
- 作者: Daniel P. Bovet,Marco Cesati,高橋浩和,杉田由美子,清水正明,高杉昌督,平松雅巳,安井隆宏
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/02/26
- メディア: 大型本
- 購入: 9人 クリック: 269回
- この商品を含むブログ (73件) を見る
- 作者: 高橋浩和,小田逸郎,山幡為佐久
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2006/11/18
- メディア: 単行本
- 購入: 14人 クリック: 197回
- この商品を含むブログ (118件) を見る
あとは、FreeDOSというDOSコマンドを利用できるOpen OSのソースを解読していくのもいいかと思いました。ちらっとみましたが、16bit OSでもハードルが高そう。
http://www.freedos.org/
コンパイラ
これはおまけですね。上のが理解できればあまり深くやる必要はないかと思っています。
- 作者: 青木峰郎
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2009/07/24
- メディア: 単行本
- 購入: 25人 クリック: 398回
- この商品を含むブログ (48件) を見る
こんな感じですかね。ある程度体系だてて効率よく学習をしていく必要性を感じています。あくまでもAnalyzing Malwareの補足になることを忘れないようにして・・・(脱線も楽しいのですが)。このプロジェクトとは別に、暗号化の理解と、Pythonも学習していきたいと思っています。うーん、ちょっと大変だぞ。
MSFCONSOLE がうまくいかない話 [未解決]
PDFファイルに実行ファイルを埋め込めるという触れ込みのMSFCONSOLEがHJの11月号で紹介されていた。ちょっくらためして見るかとBlack Track5をInstallして実行してみたもののうまくいかないでやんの。
エラーメッセージは後で貼る。
WindowsXP
いやー、焦った。現在トリプルブートの環境でセキュリティ系の実験をしているんだけど、Linux用のパーティションのOSを入れなおしたとたんWindowsに入れなくなってしまった。
表示されたメッセージがこちら。
Windows could not start because the following file is missing or corrupt.
Windows root\system32\hall.dll.
Please re-install a copy of the above file.
Windowsを入れたてならまぁ、上書きインストールしてもいいんけど、いろいろ入れた後だったからどうしても復活させたかった。いい加減Full Installで解決っていうのも卒業しなきゃだし。
解決は、WindowsのBoot.iniでした。しかもこのファイルはWindowsのBoot専用パーティションに入っているので、修正しにいくのはちょっと大変。簡単な方法はCD ブートしたLinuxファイルからWindowsのブートパーティションをマウントする方法。
Windows XPを入れた人はNTFS形式のパーティションが2つあるはず。そのうちの「入れた覚えのない」ほうにアクセスすると、boot.iniがあるはず。
これを編集する。あけると次の行がみえるはず。
default=multi(0)disk(0)rdisk(0)partition(6)\WINDOWS
このpartition(X)の数値の部分を(多分)、入れた覚えのある法のNTFS形式のパーティションを指定すればいいはずなのだ。
この作業で必要になってくるのがパーティションの番号で、Dual Bootするのはきちんとどの番号にどのOSが入っているのかをメモしておくととても助かります。
Immunity Debugger メモ
Malwareの解析で大活躍の Immunity Debugger について、3.2.3を終えて理解し始めたことメモ。
- Breakpoint condition でBreakpointを設定するための条件文を追加することができる。
3章 動的解析を妨害するマルウェアの解析 その2
アナライジング・マルウェア ―フリーツールを使った感染事案対処 (Art Of Reversing)
- 作者: 新井悠,岩村誠,川古谷裕平,青木一史,星澤裕二
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/12/20
- メディア: 単行本(ソフトカバー)
- 購入: 8人 クリック: 315回
- この商品を含むブログ (22件) を見る
「3.2.3 動的解析ツールが利用するデバイスファイルを検出する方法」終了。
サンプルコード detect_devicefile.c − 著者のサポートページより
- コードのサマリー
- 問題 (2012/02/11)
WindowsのOSの仕組みをもっと勉強すべきだと、この本を薦めるたびに痛感しています。。。
3章 動的解析を妨害するマルウェアの解析
アナライジング・マルウェア ―フリーツールを使った感染事案対処 (Art Of Reversing)
- 作者: 新井悠,岩村誠,川古谷裕平,青木一史,星澤裕二
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/12/20
- メディア: 単行本(ソフトカバー)
- 購入: 8人 クリック: 315回
- この商品を含むブログ (22件) を見る
ブログに書くと時系列がまとまらなくなりそうなので、Google Siteを使ってみることにしました。引き続きこのブログもへいようしてみます。日記でも書こうかなぁ。
- 3.2.1 プロセス一覧から動的解析用のツールを探し出す方法 - Beyond 0xFF
- https://sites.google.com/site/beyond0xff/test/3-2-2-u-indouwo-jian-chusuru-fang-fa
実はこの本自体は一通り読み終わりました。あとはコードを実際に走らせて見ていろいろ挙動を確認してレポートしていこうと思っています。この本の内容を理解できればかなりのスキルアップにつながると思ってがんばっています。
「Analyzing Malware」2章 パックされているマルウェアの解析 俺的備忘録
アナライジング・マルウェア ―フリーツールを使った感染事案対処 (Art Of Reversing)
- 作者: 新井悠,岩村誠,川古谷裕平,青木一史,星澤裕二
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/12/20
- メディア: 単行本(ソフトカバー)
- 購入: 8人 クリック: 315回
- この商品を含むブログ (22件) を見る
2章を一通り読み終わりました。備忘録的にまとめてみます。
PEファイルフォーマット
Windowsのexeやdllなどの実行ファイルで用いられているフォーマット。この形式を知らずしてMalwareを語ることなかれ、というぐらい重要みたい
アンパックのながれ
1. デバッガでOEPまで実行する
いくつかテクニックがあるとのこと
- pushadに対応するpopadに着目する
- 動的に生成されたエリア(圧縮されたデータの展開されたエリア)への制御が移動したところに着目
- jmp/call命令に着目する
2. OEPが見つかったらメモリのダンプ
3. IATの再構築 IATはローダによって書き換えられているので、ロード前の値に修復する
アンパックを妨害するテクニック
- Stolen Bytes 動的に確保された領域にオリジナルコードの一部分をコピーしたコードの実行後、元のコードを続けて実行する。メモリダンプの習得を妨害する
- SizeOfImageの改変 PEヘッダ内のOptionalHeader構造体に含まれる値。メモリにロードされるファイルのサイズを示す値で、異常に大きい値をいれることでデバッガのアッタチやメモリダンプを妨害する
- Import Redirection IATの再構築時や、逆アセンブラでの解析時にImport中のAPIをわかりにくくする。レジスタにアドレスを格納してJump命令で読み出すなどすると、Call命令の読み出しと違いAPIの情報がとりにくくなる。
2章読み終えた時点ですでに理解がおいつくのが大変です。何べんも読み直してマスターしていきたいと思います。