DNSを使った情報流出の痕跡調査【TryHackMe】Boogeyman1-Writeup

幽霊が現れる
※当サイトはプロモーションが含まれています

こんにちは、ぎんたです。

今回はTryHackMeで提供されている「Boogeyman1」というルームの攻略の過程を記事にしています。

ルームはこちらからアクセスできます「Boogeyman1のURL」。

このルームでは、不審なメールを開封したことで感染した端末を調査し、情報流出の手段や流出した内容を特定することが目的となります。

  • LNKParseを使ったメールの添付ファイルの解析方法について知りたい方
  • PowerShellのログから不審な通信先や情報流出に関する調査を行う方法に興味がある方
  • Wiresharkを使って流出した情報の詳細を調べる方法に興味がある方
  • ログ解析について興味がある方

が今回の対象です。

このルームも無料でアクセス可能なので、試してみたい方はぜひやってみてください。

目次

不審なEメールを調査-Task2

Q フィッシングメールの送信に使用されたメールアドレスは何ですか?

該当のメールをThunderbirdで開き、Fromヘッダを確認します。

agriffin@bpakcaging[.]xyz

Q 被害者のメールアドレスを教えてください。

該当のメールをThunderbirdで開き、Toヘッダを確認します。

julianne[.]westcott@hotmail[.]com

Q DKIM-SignatureヘッダとList-Unsubscribeヘッダに基づき、攻撃者が使用したサードパーティーのメールリレーサービスの名前は何ですか?

Thunderbirdでメールを開き、View Sourceでメールヘッダを確認します。

DKIM-Signatureの箇所で答えが記載されていました。

elasticemail

Q 暗号化された添付ファイル内のファイル名は何ですか?

「Invoice.zip」をダウンロードし、解凍したところファイル名が判明しました。

ubuntu@tryhackme:~/Desktop/artefacts$ unzip Invoice.zip

Archive:  Invoice.zip

[Invoice.zip] Invoice_20230103.lnk password:

  inflating: Invoice_20230103.lnk   

lnkparse Invoice_20230103.lnk

Q 暗号化された添付ファイルのパスワードは何ですか?

メール本文に記載されていました。

メール本文にパスワードが記載

Q lnkparseツールの結果に基づき、Command Line Argumentsフィールドに見られるエンコードされたペイロードは何ですか?

発見されたlnkファイル内に悪意のあるペイロードが隠されている可能性があります

ここでは、LNKParseというツールを使用し、メールに添付されたlnkファイルを解析します。

lnkparseコマンドを実行したところ、エンコードされたペイロードを確認できました。

LNKParseの実行結果

おまけ

CyberChefで解析します。

Base64形式のペイロードであることからRecipeで画面のような設定をしたところ、通信先を特定できました。

task2でCyberChefを使用しペイロードをデコード

lnkファイルを開封した結果、ペイロード記載の不審な通信先にアクセスしたようです。

端末で実行されたPowerShellのログを解析-Task3

Q 攻撃者がファイルホスティングとC2のために使用したドメインは何ですか?ドメインをアルファベット順に並べてください。

PowerShellのログがevtx2jsonツールで処理されて元のevtxからJSONに変換されて提供されています。

JQツールを使い、変換されたPowerShellのログを調査します。

cat powershell.json | jq

task3でpowershellのログをjqコマンド実行

JQツールを使うことでPowerShellのログをパースできましたが、すべてのフィールドが表示されているため解析するのに骨が折れます。

そこで特定のフィールドを抽出して表示させます。

今回必要なフィールドはScriptBlockTextのフィールドです。

このフィールドから、PowerShellで実行されたスクリプトのログを確認できます。

やり方は簡単で、jqコマンドの後にフィールド名を指定するだけです。

cat powershell.json | jq ‘{ScriptBlockText}

スクロールすると、C2に使用されたと思われるドメインを確認することができます。

task3で不審なドメインを発見

Q 攻撃者がダウンロードした列挙ツールの名称は何ですか?

ScriptBlockTextフィールドの内容を確認して回答できました。

ぎんた

調査を効率化するために、grepコマンドもあわせて使っていくといいよ

task3でseatbeltというツールを発見

seatbelt:
このツールを使用することで、潜在的な特権昇格や永続化に役立つようなデータを収集できます。

Q ダウンロードしたsq3.exeを使用して、攻撃者がアクセスしたファイルは何ですか?エスケープされたバックラッシュを含むファイルパスを提供してください。

grepでsq3を指定し、ScriptBlockTextを調査したところ回答できました。

task3でsq3.exeの実行した痕跡

Q ファイルを使用するソフトは何ですか?

Microsoft Sticky Notes

上記画像でsq3.exeがアクセスしているファイルパスから判明しました。

Q 流出したファイルの名称は何ですか?

ScriptBlockTextを引き続き調査していくと、161.71.211.113へ送られたファイル(protected_data.kdbx)を発見できました

task3で流出したファイルを特定

Q .kdbxという拡張子は、どのようなファイルで使われていますか?

KeePass

フリーのパスワードマネージャーです。

デフォルトではクラウド上ではなく、ローカルの暗号化されたデータベースファイル(.kdbx)にパスワードを保存します。

Q 機密ファイルの流出試行時に使用されたエンコーディングは何か

前問の結果の少し上の箇所にHexを使って流出させた痕跡を確認できます。

$split = &hexと記載されています。

Hexを用いてファイルを流出

Q 流出に使用されたツールは何ですか?

上記の画像でnslookを使っているのが分かります。

DNS経由での情報流出と考えられます。

次のタスクで具体的な手法が判明します。

Wiresharkを使ったネットワークトラフィックの解析-Task4

Q 攻撃者がその推定ファイル/ペイロードサーバーをホストするために使用したソフトウェアは何ですか?

端末で取得されたパケットキャプチャのログを使って調査していきます。

ぎんた

task3までに判明した通信先や情報流出手法を元に詳細を調べていこう

先ほど判明したIPアドレスを使用して、Wiresharkでフィルタリングします。

task4で不審な通信先でフィルタしwiresharkを実行

任意のフレームを右クリックし、「Follow」→「HTTP Stream」とクリックし、HTTP Streamを確認します。

確認すると、ServerでPythonが使われているのが分かります。

task4でwiresharkを実施し、post通信がされていることを確認

Q 攻撃者が実行した出力コマンドに対して、C2が使用したHTTPメソッドは何ですか?

先の画像で確認すると、POSTメソッドが使われているようです。

Q 情報流出中に使用されたプロトコルは何ですか?

Task3から、nslookupを使用していたので、DNSが回答となります。

Q 流出したファイルのパスワードは何ですか?

Task3で判明したことを考察すると、「Microsoft Sticky Notes」アプリで使用されているデータベースファイルからsq3.exeというツールを用いて情報を取得したと考えられます

その中にパスワードの情報が入っている可能性があるので、Wiresharkを用いて調査してみます。

Wiresharkで「Ctr+F」キーを押しsq3.exeをキーワードとしてPacket全体を検索します。

調査対象を「Packet detail」、「String」と下記のようにそれぞれ設定し、「Find」を押しながら検索を進めていくと、フレーム番号44459で「Microsoft Sticky Notes」のデータファイルからデータを取得するコマンドを確認できます。

task4でwiresharkで解析し、sq3.exeがデータを取得した痕跡を発見

その後取得したデータを外部へ送信したと思われるため、直近にてHTTPプロトコルでPostメソッドを使用したフレームを探してみます

8パケット後のフレーム番号44467にてProtocolが「HTTP」でInfoが「POST」となっているフレームを発見します。

右クリックをし、「Follow」→「HTTP Stream」とクリックし、HTTP Streamを確認します。

task4で10進数のデータを確認

Decimal(10進数)のデータを送信していることが分かったので、CyberChefを使って変換します。

Recipeに「From Decimal」を指定し解読をしたところ、パスワードを発見することができました。

task4でcyberchefでパスワードを発見

Q 流出したファイル内に保存されているクレジットカード番号とは?

Task3から

  • DNSを使ってデータを流出した
  • 流出先は167.71.211.113である

ことがPowerShellのログから判明しているので、Wiresharkでフィルタを設定して調査します。

フィルタの欄を「dns && ip.dst == 167.71.211.113」に設定します。

task4でwiresharkでdnsでフィルタ

このようにbpakcaging.xyz(ドメイン)の先頭に文字列を付与してDNS経由で情報を流出させているのが分かります。

すべてのクエリの文字列からこの部分のみを取り出して、情報を復元させていきます。

この作業はTSharkというツールを用いて行っていきます。

TSharkはコマンドラインで実行できるパケット解析ツールです。

以下のコマンドを使用して、bpakcaging.xyzの行をとりだします。

tshark -r capture.pcapng -n -T fields -e dns.qry.name | grep “bpakcaging.xyz”

task4でtsharkでドメイン部分を切り取り

ここから、

  • bpakcaging.xyzの前の部分のみを取り出す
  • 重複行を排除する
  • cat.txtに結果を書き出す

ことを行います。

tshark -r capture.pcapng -n -T fields -e dns.qry.name | grep “bpakcaging.xyz” | cut -d “.” -f 1 | uniq > cat.txt

このコマンドを実行後にfind、cdnなどの不要な行を削除したところ、以下のような内容になります。

task4でtsharkでuniqなどで整形処理

最後に改行を削除すると完成です。

cat cat.txt | tr -d ‘\n’ > clean_cat.txt

task4でtsharkで改行削除し処理を完了

この内容をCyberChefにコピーします。

Task3の回答からHex(16進数)で流出させたことが判明しているので、Recipeに「From Hex」を指定してデコードします。

デコードした内容をフロッピーのマークを押下して名前を付けて保存します。

task4でcyberchefデコードし保存

保存したファイルを開くとパスワードが求められます。

先の問で判明したパスワードを入力します。

keepassを起動しパスワードを入力

クレジットカード番号が判明しました。

機微な情報が流出していたようです。。銀行に相談しましょう。

task4でkeepass内でcreditカード番号が判明

まとめ

今回はTryHackMeで提供されている「Boogeyman1」というルームの攻略の過程を通して端末の調査を行ってきました。

振り返り
  • LNKParseを使い、添付されたlnkファイルに含まれるペイロードを発見した
  • PowerShellのログから不審な通信先や情報流出の手口が判明した
  • Wiresharkを使って流出した情報の詳細が判明した

この記事が少しでも役に立てば幸いです。

以上、ぎんたでした。

サイバーセキュリティを学ぶ上で必要な攻撃と解析に関する他の記事は、以下のリンクで確認できます。

学習に関しましては、以下のセキュリティの勉強法、おすすめの学習本・動画の記事が多くの方に読まれています。

資格の記事については以下の記事がおすすめです。

ITエンジニアへの転職については以下の記事がおすすめです。

その他学習・転職関連に関しましては、以下の記事もあわせて読まれています。

ぜひご覧ください!

よかったらシェアしてね!
目次