Practical Malware Analysis Lab 11-2 のサンプル・バイナリ Lab11-02.dllのXORデコーディングの処理内容について調べました。

本の中の解説ではXORデコーディングの部分については、XORデコードの関数のアドレスにブレークポイントを設定してデコードされたデータを確認するというもので、
XORデコードの処理の内容については触れられていなかったので、アセンブリから処理の内容を読み取ろうと思います。

MORE »

VBAマクロの抽出・解析にはolevbaが便利。

hogefugafuga.png

解析のサマリーをファイルとして保存:
olevba -d example.doc > summary.txt

以上。
PEヘッダーの各セクションの概要

.text
CPUが実行する命令が含まれている。基本的には.textのみが実行可能なコードを保持している。

.rdata
importおよびexportに関する情報を含んでいる。また、このセクションはプログラムが使用する読み取り専用のデータも格納できる。しばしば、内部に.idata (import情報を含んでいる)と.edata (export情報を含んでいる)というセクションを保持している。

.data
プログラムのグローバル・データ(プログラム中のどこからでもアクセスできるデータ)を含んでいる。ローカル・データはこのセクションに含まれていない。(ローカル・データはPEファイルそれ自体には格納されていない)

.rsrc
アイコン、画像、メニュー、文字列など、プログラムが使用する実行コード以外のリソースが含まれている。文字列は.rsrcセクションとメイン・プログラムのどちらにも格納することができるが、多言語サポートのため、多くの場合.rsrcセクションに格納されている。
.rsrcセクションには実行ファイルやドライバファイルなどを埋め込むこともできる

以上。
HTMLのフォーム経由でデータがPOSTされた場合

## パラメータ名のみを表示
tshark -r example.pcap -Y "http.request.method eq POST" -T fields -e urlencoded-form.key

## 値のみを表示
tshark -r example.pcap -Y "http.request.method eq POST" -T fields -e urlencoded-form.value

## パラメータ名と値の両方を表示
tshark -r example.pcap -Y "http.request.method eq POST" -T fields -e http.file_data

使用しているtshark/wiresharkのバージョンがhttp.file_dataフィルタをサポートしていない場合は以下のようにするのもアリ
tshark -r example.pcap -Y "http.request.method eq POST" -T json | grep 'urlencoded-form.key\|urlencoded-form.value' | awk '{print $2}' | perl -pe 's/,\n/=/g'
(上記のように場合によっては "-T json"でjson形式で出力したほうがデータ整形しやすいかも。。。)

直接バイナリデータがPOSTされた場合

## バイナリデータを16進数で表示
tshark -r example.pcap -Y "http.request.method eq POST" -T fields -e data
※ "-e data" を "-e data.data" にすると16進数がコロン(:)で区切られます。(aa:3f:56)

## バイナリデータを平文で表示
tshark -r example.pcap -Y "http.request.method eq POST" -T fields -e data | xxd -r -p

## POSTリクエストが複数あった場合、それぞれのバイナリデータを平文で1行ずつ表示
for i in $(tshark -r example.pcap -Y "http.request.method eq POST" -T fields -e data); do echo $i | xxd -r -p; echo; done

## POSTリクエストが複数あった場合、それぞれのバイナリデータをファイルとして保存
for i in $(tshark -r example.pcap -Y "http.request.method eq POST" -T fields -e data); do tmpfile=$(jot -w out -r 3 1 100); echo $i | xxd -r -p > $tmpfile; done

## 時刻 (UTC)も一緒に表示
tshark -r example.pcap -o gui.column.format:"utctime","%Yut" -Y "http.request.method eq POST" -T fields -e _ws.col.utctime -e http.file_data

重複データを無視したい場合はsort -uにパイプするなど、用途に応じて、どんどんコマンドをパイプさせていく。

以上。
sedを使って特定の行から特定の行までを切り出したいときは以下のようにします。

sed -n [start line number],[end line number]P file.txt

以下は具体例です。

以下のようなファイル"a.txt"があります。
a-txt.png

"a.txt"からアスタリスクのバナー文字だけを抽出したいときは以下のようにします。

sed -n 14,26P a.txt

"a.txt"の14行目から26行目までを切り出します。
sed.png

コピーしたい行が数百、数千行にまたがっていて、マウスでドラッグするのがシンドいときに使えます。

以上。

 | HOME |  »

奇妙な風景 Unique Scene
<< >>

プロフィール


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


スポンサード リンク


FC2カウンター


検索フォーム


RSSリンクの表示


リンク


ブロとも申請フォーム


QRコード