ASLR (Address space layout randomization)とは、実行プログラムがメモリ領域に格納するデータのアドレスをランダム化する技術のこと。 プログラムを攻撃から守るためのセキュリティ機能ではあるものの、プログラムをデバッガ等で解析する際は、アドレスが固定されていたほうが解析しやすい。 解析対象がWinodwsファイルの場合、CFF Explorerを利用してASLRを無効化できる。 ファイルをCFF Explorerで開き、Optional HeaderセクションからDllCharactersiticsのClick hereをクリックする。"DLL can move"の項にチェックが入っている場合はASLRが有効化されている。無効にしたい場合はチェックを外す。 参考https://www.sans.org/blog/tools-for-analyzing-static-properties-of-suspicious-files-on-windows/https://www.sans.org/blog/dealing-with-aslr-when-analyzing-malware-on-windows-8-1/
Category: Reversing
[Windows] ベース・アドレスのメモ
Windowsにおいて、ベース・アドレスとはプログラムがメモリにロードされる際に使用されるデフォルトのアドレス位置のこと。
[32ビット・システム] 関数呼び出し時のスタックの動きのメモ
32ビット・システムにおける関数呼び出し時のスタックの動きについて。こちらの記事でも書いた内容を改めてまとめ直した。 まずは関連用語の覚書 スタック関数の引数、関数内部のローカル変数や戻りアドレスが格納される。LIFO (Last In, First Out 後入れ先出し)。スタック領域はメモリの上位アドレスから下位アドレスに向かって確保されていく。スタック領域はプログラム実行時にコンパイラやOSによって自動的に割り当てられる。 ヒーププログラムの実行中に動的に確保されるメモリ領域。例えばmallocによって動的にメモリ領域を確保する場合は、ヒープ領域上に確保される。ヒープ領域はメモリの下位アドレスから上位アドレスに向かって確保されていく。 EIP次に実行する命令文のアドレスを格納している。命令文が実行されるたび、EIPの値は加算される (どのくらい加算されるかは実行された命令文のサイズによる) ESPスタック・ポインタ。スタック領域のトップに積まれたデータのメモリー・アドレスを格納する。スタックはメモリの上位アドレスから下位アドレスに向かって積み上がっていくので、ESPは最下位のアドレスに格納されたデータを指す。 EBPベース・ポインタ。データの格納領域の基点のメモリー・アドレスを格納する。通常、関数の最初において、EBPにはESPの値が設定される。これは関数の引数とローカル変数を追跡するためである。ローカル変数へのアクセスはEBPからオフセットを引くことによって行われる。関数の引数へのアクセスはEBPにオフセットを加算することによって行われる。※ただし、gccなどのGNUコンパイラは関数の引数・変数へのアクセスにEBPではなく、ESPを用いる。
PsKillについてのメモ
PsKillとはWindows Sysinternalsより提供されている、プロセスをkillするためのコマンドライン・ツール。ローカルホストのプロセスだけでなく、リモートホストのプロセスも終了させることができる。
Inno Setupのアンパックにはinnounpが便利
Inno Setupのアンパックにはinnounpが便利。本記事投稿時点の最新バージョンは0.49。 innounp.exe -x -d<target dir> <Inno installer binary> 以上。
今さらWannaCryを解析してみた
WannaCryとは2017年5月頃に確認され、猛威を振ったをランサムウェアです。なぜ今さら取り上げたのかと言うと、先日このWannaCryを目にする機会があったためです。 WannaCryはすでに色々な人や組織が解析記事を書いています。腕試しにWannaCryを解析して、他所の解析記事と解析結果を比較(答え合わせともいう)してみました。 今回自分が解析したサンプルはmssecsvc.exe (MD5ハッシュ値: 478abb44dbba06e87decd2df49f3d986)およびmssecsvc.exeがドロップしたバイナリです。 ※逆アセンブル内の変数名や関数名は一部解析に当たり、わかりやすいようにデフォルトのものから変更しています。
PsExecについてのメモ
PsExecについて、すでに色々なまとめ記事がありますが、個人的に押さえておきたいポイントだけ、さっとメモ。
.NETファイルの難読化を解除するにはde4dotが便利
前回の記事同様、きっかけはCTF。 先日参加した社内のCTFに.NETファイルを取り扱った問題がありました。 「.NETファイルならdnSpyでデコンパイルしてコードを眺めればすぐ解けそう!」と思い勇んで挑戦しました。
エンディアンに気をつけよう
先日、社内のCTFに参加して、バイトオーダーに考えが及ばなかったばかりに初級の問題を落とす羽目になり、悔しい思いをしたのでメモ。
stack stringsとは
stack stringsのメモ