Magnet User Summit CTF, Defcon DFIR CTF 2018 writeup
最近、DFIR系のCTFに2つ参加したのでその紹介と全体像に対するwriteupです。
一般的なCTFにおけるForensicsのジャンルの問題と言えば、1つのファイルを渡されてその中にあるフラグを探すという形式が多いかと思います。
今回、紹介する2つのCTFは大きな(10GB以上の)イメージファイルが数台分提供されます。それらを解析して各問題文の内容に回答するといった感じです。問題例は次のような感じです。
問題例:攻撃者が最初にシステムにログオンしたのはいつか? UTC時間で YYYY-MM-DD hh:mm:ss という形式で答えろ。
問題例からも分かる通り、フラグはMyCTF{663d63e8c755f1b4}のような形ではないです。そのため、一般的なCTFとは若干毛色が異なります。
それでは2つのCTFの紹介です。
CTF紹介
Magnet User Summit CTF
- 紹介ページ:
- CTFページ: Magnet User Summit CTF
- イメージ配布: Dropbox - MagnetUserSummit - Simplify your life
解析対象は1台のディスクイメージとメモリイメージ。
問題ジャンルは4種類
- Intrusion
- Anti-Forensics
- Misc
- Exfiltration
Defcon DFIR CTF 2018
- 紹介ページ: Hacking Exposed Computer Forensics Blog: Daily Blog #451: Defcon DFIR CTF 2018 Open to the Public
- CTFページ: Defcon DFIR CTF 2018
- イメージ配布:
- Image1: Dropbox - Image1.7z
- Image2: Dropbox - Image2.7z
- Image3: Dropbox - Image3.7z
解析対象は3台のディスクイメージ。
- HR Server
- File Server
- Desktop
配布イメージにはパスワードがかかっており、HR Serverの解凍パスワードは tacoproblems
一定の点数を獲得すると、次のイメージを解凍するためのパスワードが書かれた問題が現れる。
writeup
問題としては一問一答形式なので全体の流れを意識しなくても解ける問題も多いです。
ただし、イメージファイルはストーリーがあるので一問ずつ解いて、分かった事実を時系列に並べていくことで全体のストーリーが見えてくるのが楽しかったです。(終わってからも調べたくなる事がいくつか出てきました)
Defcon DFIR CTF 2018についてはwriteupを検索すると日本語の記事が3件あったので紹介させていただきます。
Defcon DFIR CTF 2018 # Image1 - HRServerをやる - socketo.hatenablog.jp
Defcon DFIR CTF 2018 # Image2 - FileServerをやる - socketo.hatenablog.jp
Defcon DFIR CTF 2018 Writeup(HR Server + File Server) - Shi0shishi0
今回は、個々の問題に対する解き方ではなく、全体のタイムラインから大きな流れを読み取っていきます。(以降、ネタバレ注意です。)
作成したタイムラインは下にも書いてみましたが、googleスプレッドシートにも書いてあります。(色分けしている部分もあるので見やすいと思います)
docs.google.com
Magnet User Summit CTF
- 端末情報
対象 | OS | IPアドレス | 端末名 |
---|---|---|---|
MaxPowers | Windows 10 Enterprise (2018/3/13 18:15:49) | 172.81.132.172 | DESKTOP-EDSLQM8 |
- タイムライン
以下、日付は全て2018/04/26 のため省略。
時間(UTC) | 事象 | ソース |
---|---|---|
15:33:51 | Tom Hanks |
ost |
15:34:27 | Outlookを起動 | Prefetch |
15:35:34 | メールで添付されたzipファイルを7zipで解凍する | Prefetch |
15:37:45 | Excelを起動して解凍した添付ファイルを開く | NTUSER.DAT |
15:37:52 | マクロが動き、powershellが動く | Prefetch |
18:07:21 | nc.exe が作られる | Created |
18:09:23 | nc.exe が実行される | Prefetch |
18:16:29 | RDPログオン(maxpowers アカウント) | EVTX |
18:17:12 | itsupport ユーザ作成 | SAM |
18:20:16 | RDPログオフ(maxpowers アカウント) | EVTX |
18:22:31 | RDPログオン(itsupport アカウント) | EVTX |
18:28:09 | itsupport ユーザが maxthon5.2.1 のインストーラをダウンロード | Web Firefox |
18:28:28 | maxthonを起動 | Prefetch |
18:32:51 | Dropboxを起動 | Prefetch |
18:35:29 | Dropbox 経由で ProjectE,S,U,Cを持ち出し | Created |
18:39:03 | itsupport ユーザが ERASER をインストール | Prefetch |
18:39:43 | ERASER.EXE でワイプ | Prefetch |
18:41:50 | RDPログオフ(itsupport アカウント) | EVTX |
18:44:27 | RDPログオン(maxpowers アカウント) | EVTX |
18:45:28 | WebBrowserPassView で chrome に保存された github の認証情報を取得する | Prefetch |
18:45:29 | chrome で github.com にログインし、レポジトリ削除 | Web Chrome |
18:48:46 | RDPログオフ(maxpowers アカウント) | EVTX |
- メモ
攻撃の起点はメールによるexcelファイルからのマクロ実行。
新規でitsupportというユーザを作成され、Dropboxを経由して複数のProjectフォルダを持ちだされる。
最後にgithubの認証情報が取得され、リポジトリが削除される。
問題を解く上で最初のきっかけとなるマクロを細かく解析する必要はなかったのですが、深く読んでいくと msfvenom で作成されたと思われるshellcodeが実行されることを確認しました。
実行されるAPIは以下の流れで処理を実行します。ただし、途中でゴミが入っていて、私の解析環境では途中で動作を停止したので、若干環境依存の箇所があるのかもしれません。
LoadLibrary("ws2_32") WSAStartup() WSASocketA() connect() recv() VirtualAlloc() recv() VirtualFree() closesocket() ExitProcess()
Defcon DFIR CTF 2018
- 端末情報
対象 | OS | IPアドレス | 端末名 |
---|---|---|---|
HR Server | Windows Server 2016 Datacenter (2018/5/1 21:57:49) | 74.118.139.108 | WIN-29U41M70JCO |
File Server | Windows Server 2008 R2 Enterprise SP1 (2017/1/29 12:46:34) | 74.118.139.11 | WIN-M5327EF98B9 |
Desktop | Windows 10 Enterprise (2018/7/6 18:45:44) | 74.118.138.195 | DESKTOP-1N4R894 |
- タイムライン
以下、日付は全て2018/08/07 のため省略。
時間(UTC) | 事象 | 対象 | ソース |
---|---|---|---|
18:38:30 | http[:]//142[.]93.50.86:8000/out.hta からout.hta をダウンロード | Desktop | Web Chrome |
18:38:30 | Chromeで http[:]//142[.]93.50.86:8000/out.hta からダウンロードし、 C:\Users\mpowers\Downloads\out.hta に保存 | Desktop | Web Chrome |
18:39:56 | out.hta を mshta で実行 | Desktop | Prefetch |
18:39:59 | empire の stager が Powershell にて実行される | Desktop | EVTX |
18:40:55 | TeamViewer 経由で mpowers アカウントで侵入 | Desktop | TeamViewer Log |
18:43:16 | KeePass を実行 | Desktop | UserAssist |
19:12:11 | 31.14.75.59 から Administrator で RDPログオン成功 | Desktop | EVTX |
19:31:56 | Administratorのパスワード変更 | Desktop | SAM |
19:38:46 | C:\vss\SAM をコピー | Desktop | Created |
19:38:49 | C:\vss\SYSTEM をコピー | Desktop | Created |
19:52:05 | Administrator が https[:]//www[.]dropbox.com/request/51bpm0D7zHjRbfvuqGzt にアクセス (データのアップロード) | Desktop | Web IE/Edge |
19:52:49 | 7zip を実行 | Desktop | Prefetch |
19:52:57 | C:\vss\Desktop.7z を作成 | Desktop | Created |
19:54:50 | C:\vss 削除 | Desktop | Recycle.bin |
19:54:58 | C:\temp 削除 | Desktop | Recycle.bin |
20:05:18 | 74.118.138.195 から RDPログオン | FileServer | EVTX |
20:05:58 | Desktop\project_0x03.zip を作成 | FileServer | LNK |
20:08:38 | Desktop\test\Projections.zip を作成 | FileServer | LNK |
20:11:08 | mpowers が https[:]//www[.]dropbox.com/request/51bpm0D7zHjRbfvuqGzt にアクセス (データのアップロード) | FileServer | Web Chrome |
20:32:34 | C:\M4Projects\project_0x02 がPrivaZer.exeによって削除 | FileServer | UsnJrnl |
20:34:26 | FileServer から Administrator でRDPログオン | HRServer | EVTX |
22:20:09 | localhost で稼働している /symfony/web/index.php/dashboard にアクセス | HRServer | Web IE/Edge |
23:05:57 | phpmyadmin にアクセスし、orangehrm_mysql データベースを取得する | HRServer | Web Chrome |
23:06:57 | Administrator が https://www[.]dropbox.com/request/51bpm0D7zHjRbfvuqGzt にアクセス (データのアップロード) | HRServer | Web Chrome |
23:10:39 | Security.evtx の監査ログが消去される | HRServer | EVTX |
23:11:40 | FileServer から Administrator でRDPログオフ | HRServer | EVTX |
23:11:50 | 74.118.138.195 から RDPログアウト | FileServer | EVTX |
- メモ
攻撃起点はwebからダウンロードした empire の stager。
KeePassのマスタパスワードが弱く、他のシステムへの認証情報が盗まれたことをきっかけにFile Serverのproject関連のファイルが持ちだされ、HR ServerからはDBを抜き出される。
情報の持ち出し方法はdropboxへのアップロードを利用。
まとめ
個々の証拠だけではなくて、複数の証拠をつなぎ合わせることで攻撃者の狙いや動きが少し見えてくる点が面白く、楽しいと感じました。
今回、参加してみて解析の網羅性や速度、正確性など課題を色々と感じました。XWF欲しい。課金したい気持ちもありますが、不便だからこそどういうツールがあると便利か見えてくると思うのでしばらく頑張ろうと思います。
間違い等あれば後学のためにご指摘いただけると幸いです。