こんにちは、ぎんたです。
今回は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 暗号化された添付ファイルのパスワードは何ですか?
メール本文に記載されていました。
![メール本文にパスワードが記載](https://gintachan.com/wp-content/uploads/2023/06/task2-password.png)
Q lnkparseツールの結果に基づき、Command Line Argumentsフィールドに見られるエンコードされたペイロードは何ですか?
発見されたlnkファイル内に悪意のあるペイロードが隠されている可能性があります。
ここでは、LNKParseというツールを使用し、メールに添付されたlnkファイルを解析します。
lnkparseコマンドを実行したところ、エンコードされたペイロードを確認できました。
![LNKParseの実行結果](https://gintachan.com/wp-content/uploads/2023/06/51b7963d87022b2be3f92ac6c18ba7f3.png)
おまけ
CyberChefで解析します。
Base64形式のペイロードであることからRecipeで画面のような設定をしたところ、通信先を特定できました。
![task2でCyberChefを使用しペイロードをデコード](https://gintachan.com/wp-content/uploads/2023/06/task2-cyberchef-result-1024x459.png)
lnkファイルを開封した結果、ペイロード記載の不審な通信先にアクセスしたようです。
端末で実行されたPowerShellのログを解析-Task3
Q 攻撃者がファイルホスティングとC2のために使用したドメインは何ですか?ドメインをアルファベット順に並べてください。
JQツールを使い、変換されたPowerShellのログを調査します。
cat powershell.json | jq
![task3でpowershellのログをjqコマンド実行](https://gintachan.com/wp-content/uploads/2023/06/task3-jq-run.png)
JQツールを使うことでPowerShellのログをパースできましたが、すべてのフィールドが表示されているため解析するのに骨が折れます。
そこで特定のフィールドを抽出して表示させます。
今回必要なフィールドはScriptBlockTextのフィールドです。
このフィールドから、PowerShellで実行されたスクリプトのログを確認できます。
やり方は簡単で、jqコマンドの後にフィールド名を指定するだけです。
cat powershell.json | jq ‘{ScriptBlockText}
スクロールすると、C2に使用されたと思われるドメインを確認することができます。
![task3で不審なドメインを発見](https://gintachan.com/wp-content/uploads/2023/06/task3-jq-domain-find-1.png)
Q 攻撃者がダウンロードした列挙ツールの名称は何ですか?
ScriptBlockTextフィールドの内容を確認して回答できました。
![](https://gintachan.com/wp-content/uploads/2023/05/4ZLX31z8_400x400-1-150x150.jpg)
調査を効率化するために、grepコマンドもあわせて使っていくといいよ
![task3でseatbeltというツールを発見](https://gintachan.com/wp-content/uploads/2023/06/task3-seatbelt-find.png)
![task3でseatbeltというツールを発見](https://gintachan.com/wp-content/uploads/2023/06/task3-seatbelt-find.png)
Q ダウンロードしたsq3.exeを使用して、攻撃者がアクセスしたファイルは何ですか?エスケープされたバックラッシュを含むファイルパスを提供してください。
grepでsq3を指定し、ScriptBlockTextを調査したところ回答できました。
![task3でsq3.exeの実行した痕跡](https://gintachan.com/wp-content/uploads/2023/06/task3-sq3-run.png)
![task3でsq3.exeの実行した痕跡](https://gintachan.com/wp-content/uploads/2023/06/task3-sq3-run.png)
Q ファイルを使用するソフトは何ですか?
Microsoft Sticky Notes
上記画像でsq3.exeがアクセスしているファイルパスから判明しました。
Q 流出したファイルの名称は何ですか?
ScriptBlockTextを引き続き調査していくと、161.71.211.113へ送られたファイル(protected_data.kdbx)を発見できました。
![task3で流出したファイルを特定](https://gintachan.com/wp-content/uploads/2023/06/task3-kdbx-exfiltration.png)
![task3で流出したファイルを特定](https://gintachan.com/wp-content/uploads/2023/06/task3-kdbx-exfiltration.png)
Q .kdbxという拡張子は、どのようなファイルで使われていますか?
KeePass
フリーのパスワードマネージャーです。
デフォルトではクラウド上ではなく、ローカルの暗号化されたデータベースファイル(.kdbx)にパスワードを保存します。
Q 機密ファイルの流出試行時に使用されたエンコーディングは何か
前問の結果の少し上の箇所にHexを使って流出させた痕跡を確認できます。
$split = &hexと記載されています。
![Hexを用いてファイルを流出](https://gintachan.com/wp-content/uploads/2023/06/task3-hex-exfiltration.png)
![Hexを用いてファイルを流出](https://gintachan.com/wp-content/uploads/2023/06/task3-hex-exfiltration.png)
Q 流出に使用されたツールは何ですか?
上記の画像でnslookを使っているのが分かります。
DNS経由での情報流出と考えられます。
次のタスクで具体的な手法が判明します。
Wiresharkを使ったネットワークトラフィックの解析-Task4
Q 攻撃者がその推定ファイル/ペイロードサーバーをホストするために使用したソフトウェアは何ですか?
端末で取得されたパケットキャプチャのログを使って調査していきます。
![](https://gintachan.com/wp-content/uploads/2023/05/4ZLX31z8_400x400-1-150x150.jpg)
![](https://gintachan.com/wp-content/uploads/2023/05/4ZLX31z8_400x400-1-150x150.jpg)
![](https://gintachan.com/wp-content/uploads/2023/05/4ZLX31z8_400x400-1-150x150.jpg)
task3までに判明した通信先や情報流出手法を元に詳細を調べていこう
先ほど判明したIPアドレスを使用して、Wiresharkでフィルタリングします。
![task4で不審な通信先でフィルタしwiresharkを実行](https://gintachan.com/wp-content/uploads/2023/06/task4-wireshark-run.jpg)
![task4で不審な通信先でフィルタしwiresharkを実行](https://gintachan.com/wp-content/uploads/2023/06/task4-wireshark-run.jpg)
任意のフレームを右クリックし、「Follow」→「HTTP Stream」とクリックし、HTTP Streamを確認します。
確認すると、ServerでPythonが使われているのが分かります。
![task4でwiresharkを実施し、post通信がされていることを確認](https://gintachan.com/wp-content/uploads/2023/06/task4-wireshark-post.png)
![task4でwiresharkを実施し、post通信がされていることを確認](https://gintachan.com/wp-content/uploads/2023/06/task4-wireshark-post.png)
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がデータを取得した痕跡を発見](https://gintachan.com/wp-content/uploads/2023/06/task4-data-get.jpg)
![task4でwiresharkで解析し、sq3.exeがデータを取得した痕跡を発見](https://gintachan.com/wp-content/uploads/2023/06/task4-data-get.jpg)
その後取得したデータを外部へ送信したと思われるため、直近にてHTTPプロトコルでPostメソッドを使用したフレームを探してみます。
8パケット後のフレーム番号44467にてProtocolが「HTTP」でInfoが「POST」となっているフレームを発見します。
右クリックをし、「Follow」→「HTTP Stream」とクリックし、HTTP Streamを確認します。
![task4で10進数のデータを確認](https://gintachan.com/wp-content/uploads/2023/06/task4-decimal-data-1024x396.png)
![task4で10進数のデータを確認](https://gintachan.com/wp-content/uploads/2023/06/task4-decimal-data-1024x396.png)
Decimal(10進数)のデータを送信していることが分かったので、CyberChefを使って変換します。
Recipeに「From Decimal」を指定し解読をしたところ、パスワードを発見することができました。
![task4でcyberchefでパスワードを発見](https://gintachan.com/wp-content/uploads/2023/06/task4-cyberchef-password-1024x472.png)
![task4でcyberchefでパスワードを発見](https://gintachan.com/wp-content/uploads/2023/06/task4-cyberchef-password-1024x472.png)
Q 流出したファイル内に保存されているクレジットカード番号とは?
Task3から
- DNSを使ってデータを流出した
- 流出先は167.71.211.113である
ことがPowerShellのログから判明しているので、Wiresharkでフィルタを設定して調査します。
フィルタの欄を「dns && ip.dst == 167.71.211.113」に設定します。
![task4でwiresharkでdnsでフィルタ](https://gintachan.com/wp-content/uploads/2023/06/task4-wireshark-dns-1024x375.png)
![task4でwiresharkでdnsでフィルタ](https://gintachan.com/wp-content/uploads/2023/06/task4-wireshark-dns-1024x375.png)
このようにbpakcaging.xyz(ドメイン)の先頭に文字列を付与してDNS経由で情報を流出させているのが分かります。
すべてのクエリの文字列からこの部分のみを取り出して、情報を復元させていきます。
この作業はTSharkというツールを用いて行っていきます。
以下のコマンドを使用して、bpakcaging.xyzの行をとりだします。
tshark -r capture.pcapng -n -T fields -e dns.qry.name | grep “bpakcaging.xyz”
![task4でtsharkでドメイン部分を切り取り](https://gintachan.com/wp-content/uploads/2023/06/task4-tshark-domain.jpg)
![task4でtsharkでドメイン部分を切り取り](https://gintachan.com/wp-content/uploads/2023/06/task4-tshark-domain.jpg)
ここから、
- 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などで整形処理](https://gintachan.com/wp-content/uploads/2023/06/task4-tshark-uniq.png)
![task4でtsharkでuniqなどで整形処理](https://gintachan.com/wp-content/uploads/2023/06/task4-tshark-uniq.png)
最後に改行を削除すると完成です。
cat cat.txt | tr -d ‘\n’ > clean_cat.txt
![task4でtsharkで改行削除し処理を完了](https://gintachan.com/wp-content/uploads/2023/06/task4-tshark-final.jpg)
![task4でtsharkで改行削除し処理を完了](https://gintachan.com/wp-content/uploads/2023/06/task4-tshark-final.jpg)
この内容をCyberChefにコピーします。
Task3の回答からHex(16進数)で流出させたことが判明しているので、Recipeに「From Hex」を指定してデコードします。
デコードした内容をフロッピーのマークを押下して名前を付けて保存します。
![task4でcyberchefデコードし保存](https://gintachan.com/wp-content/uploads/2023/06/task4-cyberchef-kdbx-1024x503.png)
![task4でcyberchefデコードし保存](https://gintachan.com/wp-content/uploads/2023/06/task4-cyberchef-kdbx-1024x503.png)
保存したファイルを開くとパスワードが求められます。
先の問で判明したパスワードを入力します。
![keepassを起動しパスワードを入力](https://gintachan.com/wp-content/uploads/2023/06/task4-keepass-password.png)
![keepassを起動しパスワードを入力](https://gintachan.com/wp-content/uploads/2023/06/task4-keepass-password.png)
クレジットカード番号が判明しました。
機微な情報が流出していたようです。。銀行に相談しましょう。
![task4でkeepass内でcreditカード番号が判明](https://gintachan.com/wp-content/uploads/2023/06/task4-keepass-credit.png)
![task4でkeepass内でcreditカード番号が判明](https://gintachan.com/wp-content/uploads/2023/06/task4-keepass-credit.png)
まとめ
今回はTryHackMeで提供されている「Boogeyman1」というルームの攻略の過程を通して端末の調査を行ってきました。
- LNKParseを使い、添付されたlnkファイルに含まれるペイロードを発見した
- PowerShellのログから不審な通信先や情報流出の手口が判明した
- Wiresharkを使って流出した情報の詳細が判明した
この記事が少しでも役に立てば幸いです。
以上、ぎんたでした。
サイバーセキュリティを学ぶ上で必要な攻撃と解析に関する他の記事は、以下のリンクで確認できます。
学習に関しましては、以下のセキュリティの勉強法、おすすめの学習本・動画の記事が多くの方に読まれています。
資格の記事については以下の記事がおすすめです。
ITエンジニアへの転職については以下の記事がおすすめです。
その他学習・転職関連に関しましては、以下の記事もあわせて読まれています。
ぜひご覧ください!