ラベル CTF の投稿を表示しています。 すべての投稿を表示
ラベル CTF の投稿を表示しています。 すべての投稿を表示

2013年5月6日月曜日

packer と unpacker

packer とはこちらのページによると

実行形式ファイルを実行可能な状態で圧縮(暗号化)するツールのこと。「コンプレッサ」などと呼ばれる場合もある。パックされたファイルは、ユーザーがダブルクリックするだけで自己解凍され、実行される。
 ウイルス対策ソフトの検出を逃れたり、解析を面倒にする目的でウイルス作者が使用する。パッカーを変更するだけで、簡単に亜種を作成できるため、現在の亜種の大量化のひとつの要因ともなっている。
 パッカーの形式は、通常のファイルには使用されない特殊な形式であることが多く、パッカーを使用しているファイルを「不正プログラムである可能性が高い」として検知する手法も有用である。

とのこと。そして、パックされた実行ファイルをもとの状態に戻すことをアンパックといい、そのためのツールが unpacker になる。

代表的な packer/unpacker として UPX がある。

UPX
日本語の解説は wiki が詳しい。 本家のサイトはこちら
Windows や Linux でフリーで使用できるので使い勝手はいい。ただし、Windows の 64 bit 実行ファイルには対応していないので注意が必要。
ファイル自体は MZ から始まるが、バイナリファイルを確認するとそのあと PE と続き UPX0 および UPX1 という文字が出てくるので識別は比較的容易。
Back Track でパックする場合は下記のコマンドを実行すれば同じファイルで圧縮される。

upx file.exe

アンパックする場合は -d オプションをつけて実行すれば同じファイル名でアンパックされる。

upx -d file.exe

Windows で実施する場合はコマンドラインで同様にパックおよびアンパックが可能。


そのほかにも FSG、tElock、Upack、MEW、PESpin、などなど多数あり、それぞれがどれぐらい圧縮されているかをテストした exe packer compression test というサイトもある。

そのため、実際にパックされたファイルやマルウェアをアンパックするには、PEiD などのパッカー確認ソフトでパッカーの種類を調べて、RL!Depacker でアンパックするというのが手っ取り早い。

2013年5月3日金曜日

autopsy の使い方

autopsy はディスクなどを調査するときに使用するフリーのフォレンジックツール。
ちなみに、Autopsy は日本語では「検死」となる。
ツールについてもう少し詳しく言えば autopsy は web インターフェースを提供するツールで、実際のディスク調査は The Sleuth Kit というツールが行う。

sleuthkit.org


日本語ヘルプ
http://www.monyo.com/technical/unix/TASK/autopsy-help-ja/

Back Track には The Sleuth Kit と autopsy がインストールされているのでそのまま使用できる。Windows で調べる場合は FTK imager あたり。

BT で使うにはまずメニューまたはコマンドラインで autopsy を立ち上げる。メニューなら Forensic あたりを探せば出てくるはず。実行すると下記のようなターミナルが立ち上がる。

============================================================================

                       Autopsy Forensic Browser 
                  http://www.sleuthkit.org/autopsy/
                             ver 2.24 

============================================================================
Evidence Locker: /tmp
Start Time: Thu May  2 23:31:24 2013
Remote Host: localhost
Local Port: 9999

Open an HTML browser on the remote host and paste this URL in it:

    http://localhost:9999/autopsy

Keep this process running and use  to exit

次に Web ブラウザで http://localhost:9999/autopsy へアクセスする。
ブラウザでアクセスすると下記のような画面が表示される。



解析を始める場合にはイメージファイルを準備して NEW CASE を選択する。



Case Name と Description を記入して NEW CASE を選択。これは単純に名前とコメントなので実際のインシデント解析でなければ適当で問題なし。



次の画面は必要なディレクトリを作成したことをお知らせしているだけ。次にホストを追加するので ADD HOST を選択する。



次の画面はホストの情報を調整する画面。時刻を合わせるなどの必要があれば入力する。通常は入力しなくても大丈夫。そのまま、ADD HOSTを選択。


ADD IMAGE を選択。



ADD IMAGE FILE を選択。


1. でイメージファイルの場所を選択、2. ではその Type を選択。 今回は USB デバイスのイメージだったので Partition を選択。3.はインポート方法なので、Copy を選択する。


MD5 を計算するかをどうかを選択して、File System Type を選択。今回はNTFS。


問題なければOKを押すと下記のように解析作業環境が整う。


あとは、 ANALYZE を押すだけ。


 この状態で解析を行うことができる。
FILE ANALYSIS で削除されたファイルの内容や属性情報を確認することができる。












2013年3月14日木曜日

Codegate 2013 Forensics 300 Writeup

Forensics 300 の問題は次のとおり。

Find key?

鍵を見つけろとだけ書かれていて、あとはファイルが置かれている。
リンクを保存すると「ce5a4c1f062bffc9eb02c1f911d449d8.docx」というファイルができる。拡張子が docx なのでとりあえずは普通に word として開いてみる。


複数の画像ファイルが埋め込まれているだけで、文字のようなものは見当たらない。
docx ファイルは zip 形式になっているので、まずは unzip を行ってみる。

forensics300# unzip ce5a4c1f062bffc9eb02c1f911d449d8.docx 
Archive:  ce5a4c1f062bffc9eb02c1f911d449d8.docx
  inflating: docProps/app.xml        
  inflating: docProps/core.xml       
  inflating: word/document.xml       
  inflating: word/embeddings/oleObject1.bin  
  inflating: word/fontTable.xml      
  inflating: word/media/image1.jpeg  
  inflating: word/media/image2.emf   
  inflating: word/media/image3.jpeg  
  inflating: word/media/image4.emf   
  inflating: word/media/image5.jpeg  
  inflating: word/media/image6.emf   
  inflating: word/settings.xml       
  inflating: word/styles.xml         
  inflating: word/theme/theme1.xml   
  inflating: word/webSettings.xml    
  inflating: word/_rels/document.xml.rels  
  inflating: [Content_Types].xml     
  inflating: _rels/.rels             
forensics300# ls -lh
total 1000K
-rwxr-xr-x 1 root root 981K 2013-03-14 22:02 ce5a4c1f062bffc9eb02c1f911d449d8.docx
-rw-r--r-- 1 root root 1.5K 2013-02-22 14:30 [Content_Types].xml
drwxr-xr-x 2 root root 4.0K 2013-03-14 22:02 docProps
drwxr-xr-x 2 root root 4.0K 2013-03-14 22:02 _rels
drwxr-xr-x 6 root root 4.0K 2013-03-14 22:02 word
forensics300# 

もとのファイルは画像が中心だったので、画像が保存されている word の下にある media フォルダを重点的に確認する。

forensics300/word/media# ls -lh
total 1.9M
-rw-r--r-- 1 root root  29K 2013-02-22 14:30 image1.jpeg
-rw-r--r-- 1 root root 1.4M 2013-02-22 14:30 image2.emf
-rw-r--r-- 1 root root 250K 2013-02-22 14:30 image3.jpeg
-rw-r--r-- 1 root root 7.2K 2013-02-22 14:30 image4.emf
-rw-r--r-- 1 root root 165K 2013-02-22 14:30 image5.jpeg
-rw-r--r-- 1 root root  13K 2013-02-22 14:30 image6.emf

中身をみると jpeg と emf ができていた。emf は windows の画像フォーマットの一つ。
それぞれのファイルをまずは画像ビューアで確認していると、image6.emf だけが開けなかったため、バイナリエディタで中を見る。

forensics300/word/media# hexdump -C image6.emf | more
00000000  50 4b 03 04 14 00 06 00  08 00 00 00 21 00 09 24  |PK..........!..$|
00000010  87 82 81 01 00 00 8e 05  00 00 13 00 08 02 5b 43  |..............[C|
00000020  6f 6e 74 65 6e 74 5f 54  79 70 65 73 5d 2e 78 6d  |ontent_Types].xm|
00000030  6c 20 a2 04 02 28 a0 00  02 00 00 00 00 00 00 00  |l ...(..........|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

すると、マジックナンバーが PK で、そのあとに xml の文字が確認できた。
そこでこのファイルの拡張子を docx に変更して開いてみる。




2013が鍵かとも思ったが違った。ここで行き詰ったので、ヒントを確認すると「Extra_Field_Entry」とある。
ヒントをもとに検索してみる。

どうやら docx の Extra Field entry に対してステガノグラフィーを使えるツールがあるらしい。上記のツールはいくつかの dll を要求されてうまく動かなかったので、Joakim Schicht という人が作成していた unhider を使ってみた。これは文字列の埋め込みまたは取り出しの時に暗号化および復号ができる。そこで先ほどの「2013」を指定してみる。





すると、Unhider のフォルダにテキストファイルで取り出した文字列が保存される。

c0d2gate~2o13!!F0r2nsic!!!!!

これが答え。



2013年3月9日土曜日

Codegate 2013 Forensics 200 Writeup

問題文とヒントは下記のとおり。
For sweeping child sexual abuse, Police makes a big plan.
Police found out common point of child sexual abuses.
The common point is that they are motivated from sexual video clips and materials related with child.
Police started to investigate child pornography, and then arrests downloaders.
One day, Police swoops one downloader’s house, and arrests him. Then they analysis downloader’s computer and digital storage, but the child pornography was deleted all.
Although they analysis all traces to gather evidences, there was no trace to download child pornography.
Police confirmed that the downloader by checking traffic mornitoring.
Police has traffic information as evidence, they can’t prosecute the downloader for lake of evidence.
Now Police is asking you.
“Please, find a conclusive evidence to prosecute the downloader”

Key format : SHA1("md5(Evidence File)_Download Time")

Download Time : KST, YYYY/MM/DD_HH:MM:SS

[For 200 Hint] Dir_completed_torrents88 

児童ポルノに関する証拠を見つけるのが問題らしい。 証拠ファイルはすべて削除されいるとのことなので、ダウンローダーのキャッシュかログファイルから答えを見つけるようだ。
まず file コマンドで確認するとディスクイメージのようなのでパーティションを確認してマウントする。

forensics200# file 69e315135f2ebfa153d947e3fa29c0c2 
69e315135f2ebfa153d947e3fa29c0c2: x86 boot sector; 
partition 1: ID=0x7, starthead 2, startsector 128, 1042432 sectors, 
code offset 0xc0, OEM-ID "      м", Bytes/sector 190, 
sectors/cluster 124, reserved sectors 191, FATs 6, 
root entries 185, sectors 64514 (volumes <=32 MB) ,
 Media descriptor 0xf3, sectors/FAT 20644, heads 6, 
hidden sectors 309755, sectors 2147991229 (volumes > 32 MB) , 
physical drive 0x7e, dos < 4.0 BootSector (0x0)
forensics200# 
forensics200# mmls 69e315135f2ebfa153d947e3fa29c0c2 
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors

     Slot    Start        End          Length       Description
00:  Meta    0000000000   0000000000   0000000001   Primary Table (#0)
01:  -----   0000000000   0000000127   0000000128   Unallocated
02:  00:00   0000000128   0001042559   0001042432   NTFS (0x07)
03:  -----   0001042560   0001048575   0000006016   Unallocated
forensics200# mount -o loop,offset=65536 -t ntfs 69e315135f2ebfa153d947e3fa29c0c2 evidence
forensics200# 

マウントしたファイルを眺めていると uTorrent を使っており、これがダウンローダーと推測できるがそこからすすまず。ヒントとなる torrents88 で検索をしてみると、下記のような情報がでてきた。

forensics200# strings 69e315135f2ebfa153d947e3fa29c0c2 | grep torrents88
23:default_torrent_handleri1e7:devicesd7:deviceslee19:dir_active_download22:C:\Users
\Administrator24:dir_active_download_flagi1e22:dir_completed_torrents88:C:\Users\CodeGate_Forensic\AppData\Roaming\Microsoft\Windows\Start
 Menu\Programs\Startup27:dir_completed_torrents_flagi1e17:dir_torrent_files88:C:\Users\CodeGate_Forensic\AppData\Roaming\Microsoft\Windows\Start
 Menu\Programs\Startup22:dir_torrent_files_flagi1e22:dl_image_modifiedsincel76:http://google.com/search?q=filetype%3Atorrent+  Tue, 14 Aug 2012 
15:19:23 GMT80:http://www.bittorrent.com/search?client=%v&search=

この情報をもとに C:\Users\CodeGate_Forensic\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup27 を autopsy を使って探す。すると、Startup27 というのはなく 052b585f1808716e1d12eb55aa646fc4984bc862 と言うファイルが見つかった。ファイルの中身には TorrentRG.com とあり、ダウンロードファイルの可能性が高い。



このファイルの属性情報を確認する。


必要な情報は
  • MD5: 449529c93ef6477533be01459c7ee2b4
  • Download Time:Mon Dec 24 13:45:43 2012

となる。これを問題文の書式に直して sha1 の値を取得する。

forensics200# sha1sum
449529c93ef6477533be01459c7ee2b4_2012/12/24_13:45:43
20789d8dae4efe2ece9194ef08b1c752c04b5e47

20789d8dae4efe2ece9194ef08b1c752c04b5e47 が答えになる。

Codegate 2013 Forensics 100 Writeup

問題文は与えられたファイルから従業員が不正に取得したと思われるファイルの特定、ファイルサイズ、オンラインストレージへのアップロード時間と変更時間を下記の形式で答えなさいというもの(記憶が若干曖昧)

Upload date&time(UTC+9:00)_Modified date&time(UTC+9:00)_Filename.extention_Filesize(logicalfilesize)

与えられたファイルは次のファイル。

8fb4cb1c2b32ed533f4fbdb6582501b5

まずこのファイルのバイナリを確認すると、7z\xbc\xaf\x27\x1cとなっているので7zファイルだとわかる。

forensics100# hexdump -C 8fb4cb1c2b32ed533f4fbdb6582501b5 | more
00000000  37 7a bc af 27 1c 00 03  43 f7 b4 28 09 8d 58 03  |7z..'...C..(..X.|
00000010  00 00 00 00 5e 00 00 00  00 00 00 00 49 74 ca 12  |....^.......It..|
00000020  00 19 b0 0d cd 06 0e 84  a1 eb fe fa 17 92 f1 cb  |................|
00000030  92 da c0 4b c7 a1 01 39  0e 67 78 13 b7 0c 93 a7  |...K...9.gx.....|
00000040  5a c9 ec 2b 85 e1 96 1f  7b e3 ce bf 81 e1 7e 0c  |Z..+....{.....~.|
00000050  34 d1 fa 45 a6 c1 a1 32  69 85 7b 39 8f bb 15 33  |4..E...2i.{9...3|
00000060  2d 39 84 3f 32 ca 4c 4d  15 1c a1 ea a2 76 fa 5c  |-9.?2.LM.....v.\|
00000070  09 0e 9f fa 00 33 c8 60  1c 97 c2 0a 97 15 28 2d  |.....3.`......(-|
00000080  cc 34 8d 4d 73 3a d2 44  c5 45 86 38 ee 80 e5 09  |.4.Ms:.D.E.8....|
00000090  21 8f 33 1e b9 1e 8f df  43 eb 09 c7 5d c6 bb bb  |!.3.....C...]...|

ファイルを 7zip で展開すると evidence.001 というファイルができる。
file コマンドで evidence.001 の内容を確認してみる。

forensics100# file evidence.001 
evidence.001: x86 boot sector; partition 1: 
ID=0x7, starthead 2, startsector 128, 198656 sectors, 
code offset 0xc0, OEM-ID "      м", 
Bytes/sector 190, 
sectors/cluster 124, reserved sectors 191, FATs 6, root entries 185, 
sectors 64514 (volumes <=32 MB) , Media descriptor 0xf3, 
sectors/FAT 20644, heads 6, hidden sectors 309755, 
sectors 2147991229 (volumes > 32 MB) , 
physical drive 0x7e, dos < 4.0 BootSector (0x0)


ディスクイメージのようなので mmls コマンドでパーティションレイアウト情報を確認する。

forensics100# mmls evidence.001 
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors

     Slot    Start        End          Length       Description
00:  Meta    0000000000   0000000000   0000000001   Primary Table (#0)
01:  -----   0000000000   0000000127   0000000128   Unallocated
02:  00:00   0000000128   0000198783   0000198656   NTFS (0x07)
03:  -----   0000198784   0000204799   0000006016   Unallocated

パーティションの2番目が調査すべきファイルのようなので、パーティションマウントして中身を確認する。

forensics100# mount -o loop,offset=65536 -t ntfs evidence.001 evidence

マウントしたパーティションが何なのかがわからないので、まずはファイルの一覧を眺めてみる。

forensics100# ls -lhR evidence/ | more
evidence/:
total 32K
drwxrwxrwx 1 root root    0 2013-02-16 12:44 17FCA978-3FF4-4FAD-A6CB-C346EAA816A2
drwxrwxrwx 1 root root 4.0K 2013-02-16 12:44 3BF5888C-B2FE-4E31-9FC2-480DEA405331
drwxrwxrwx 1 root root 4.0K 2013-02-16 12:44 3E068DCB-B90B-43DC-B1A9-D083B5BBABE7
drwxrwxrwx 1 root root 4.0K 2013-02-16 12:44 53C38695-70F0-42A0-9C59-34606A7802A8
drwxrwxrwx 1 root root 4.0K 2013-02-16 12:48 5BB3AF5D-01CC-45D9-947D-977DB30DD439
drwxrwxrwx 1 root root    0 2013-02-16 12:44 6BCC19E4-31A9-4381-AABA-88069F3A763F
drwxrwxrwx 1 root root 4.0K 2013-02-16 12:44 6F667589-637A-45E3-92AC-E421C00FF657
drwxrwxrwx 1 root root 4.0K 2013-02-16 12:48 7C0D5811-A2CC-4E45-A0D1-2600B299C54D
drwxrwxrwx 1 root root 4.0K 2013-02-16 12:48 7C10A720-1D64-4B77-AB4E-136AA429EBFF
drwxrwxrwx 1 root root 4.0K 2013-02-16 12:44 9A0ABEAF-D4E5-4BA6-8E8D-6FEB1D685B74
drwxrwxrwx 1 root root    0 2013-02-16 12:46 $RECYCLE.BIN

-- snip --

evidence/3E068DCB-B90B-43DC-B1A9-D083B5BBABE7/CNN-iPhone.app/SC_Info:
total 32K
-rwxrwxrwx 1 root root 1.1K 2012-12-27 13:27 CNN-iPhone.sinf
-rwxrwxrwx 1 root root  26K 2012-11-15 18:43 CNN-iPhone.supp

evidence/3E068DCB-B90B-43DC-B1A9-D083B5BBABE7/CNN-iPhone.app/SVProgressHUD.bundle:
total 9.0K
-rwxrwxrwx 1 root root 739 2012-11-06 12:58 error@2x.png
-rwxrwxrwx 1 root root 371 2012-11-06 12:58 error.png

-- snip --
evidence/5BB3AF5D-01CC-45D9-947D-977DB30DD439/Library/Caches:
total 61K
-rwxrwxrwx 1 root root 520 2012-12-27 18:32 analytics.log
-rwxrwxrwx 1 root root 20K 2012-12-27 17:58 asset_hashes.db
-rwxrwxrwx 1 root root 40K 2012-12-27 17:59 cache.db
drwxrwxrwx 1 root root   0 2012-12-27 18:50 CachedFiles
drwxrwxrwx 1 root root   0 2013-02-16 12:48 com.getdropbox.Dropbox
drwxrwxrwx 1 root root   0 2013-02-16 12:48 Dropbox
drwxrwxrwx 1 root root   0 2012-12-27 18:50 LogPool
drwxrwxrwx 1 root root   0 2013-02-16 12:48 Snapshots
drwxrwxrwx 1 root root   0 2012-12-27 18:50 Three20


ファイル名に iPhone などが出てくるため iPhone のファイルと仮定。また Dropbox というファイルもあったため、問題文にあるオンラインストレージは Dropbox とあたりをつけ、該当ファイルがある 5BB3AF5D-01CC-45D9-947D-977DB30DD439 を中心に作業を進める。

ファイルの一覧を眺めていると、下記のフォルダが見つかる。
./Documents:
total 64K
-rwxrwxrwx 1 root root 24K 2012-12-27 17:58 AlbumAssetsDB.sqlite
-rwxrwxrwx 1 root root 20K 2012-12-27 17:59 Dropbox.sqlite
drwxrwxrwx 1 root root   0 2012-12-27 18:48 Uploads
-rwxrwxrwx 1 root root 20K 2012-12-27 17:57 Uploads.sqlite

Dropbox.sqlite が Dropbox の何かのデータベースっぽいので SQLite Database Browser で中身を確認する。

Dropbox.sqlite

6行目で S-companysecurity.pdf とありこれが対象ファイルと判断。この情報でサイズや modifi 時間があるがアップロード時間がわからない。運営側から「base64」とのヒントがあり、手当たり次第 .sqlite や cache.db を確認していくと ./Library/Caches/cache.db を SQLite Database Browser で表示すると下記のような情報があるのがわかった。


この部分を切り出して base64 デコードしてから hexdump で確認する。

forensics100/base64# tr -d '\r\n' < base64.txt > base64 
forensics100/base64# base64 -d base64 > base64.dec
forensics100/base64# hexdump -C base64.dec 
00000000  62 70 6c 69 73 74 30 30  d4 01 02 03 04 05 08 b8  |bplist00........|
00000010  b9 54 24 74 6f 70 58 24  6f 62 6a 65 63 74 73 58  |.T$topX$objectsX|
00000020  24 76 65 72 73 69 6f 6e  59 24 61 72 63 68 69 76  |$versionY$archiv|
00000030  65 72 d1 06 07 54 72 6f  6f 74 80 01 af 10 21 09  |er...Troot....!.|

マジックナンバーに bplist00 とある。これは mac などで使われる xml ファイルらしい。そこで cache.db の中身をすべてデコードして、plist editer で中身を確認する。


S-Companysecurity.pdf という名前の前後に NS.time と 2.1MB という文字がある。NS.time については後ろのほうにもあるが、他のファイルを眺める限り前にある NS.time がファイルに関する該当時間のようであり、かつ NS.time の 378291354 は Dropbox.sqlite の MODIFIEDDATE とも一致する。
この時間を指定された時間形式に変換する。

forensics100/base64# date -d "1970-1-1 GMT +378291354 second"
Sun Dec 27 17:55:54 JST 1981
forensics100/base64# date -d "1970-1-1 GMT +357554798 second"
Fri May  1 17:46:38 JST 1981

Unix だと 1970-1-1 が基準時間だが mac などは 2001-1-1 が基準時間になる。そのため上記時間に31年を足した下記が答え。
2012-12-27 17:55:54_2012-05-01 17:46:38_S-Companysecurity.pdf_2.1MB