APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

TryHackMe Advent of Cyber 2023から2024へ(4) Reverse engineering(リバースエンジニアリング)

自己紹介

こんにちは、エーピーコミュニケーションズiTOC事業部 BzD部 0-WANの田中と申します。
弊社でEDR製品を導入いただいたお客様のインシデント調査を主に担当しております。
その傍らプログラマーとしての経験と知識を生かしてセキュリティに関するウェブアプリケーションを設計構築するなどSOCチームのメンバーとして日々サイバーセキュリティと共に在るエンジニアです。

TryHackMeの「Advent of Cyber2023の復習と2024の予習」をテーマにした連載第4回目の今回は「Reverse engineering(リバースエンジニアリング)」の問題に挑戦してみましょう。

一般的なTryHackMeの使い方は以下にまとめてありますので参照してください。 techblog.ap-com.co.jp

タスク「Reverse engineering(リバースエンジニアリング)」

tryhackme.com

今回挑戦するタスクはこちらです。

[Day 5]A Christmas DOScovery: Tapes of Yule-tide Past(クリスマスの発見: 過去のクリスマスのテープ)

タスク11[5日目]リバースエンジニアリングクリスマスの DOScovery: 過去のクリスマスのテープ

[ウォークスルービデオをみるにはここをクリックしてください!]の▲をクリックすると解説動画を表示できますので必要に応じてチェックしてみてください。

このタスクの学習目標は以下の通りです。

  • 馴染みのないレガシーシステムを操作する方法を体験します。
  • DOSと、同時代のWindowsコマンドプロンプトとの関連について学習します。
  • データ復旧とファイルシステム分析におけるファイル署名とマジック バイトの重要性について説明します。

ディスク オペレーティング システム

DOS(Disk Operating System)は、1980年代に普及したシンプルで効率的なコマンドラインベースのオペレーティングシステムで、軽量でハードウェア資源の消費が少なく、直接ハードウェアと対話できるため、開発者にとって非常に柔軟性が高い環境を提供しました。

DOSの開発者は、ティム・パターソン(Tim Paterson)で後にMicrosoftがQDOSを購入し、MS-DOS(Microsoft Disk Operating System)として改良・販売しました。

IBM PCの標準OSとして採用されたMS-DOSは、シンプルで効率的なコマンドラインインターフェースを提供し、多くのソフトウェア開発者に支持されました。 この基盤の上で、Microsoftは次第にグラフィカルユーザーインターフェースを取り入れたWindowsを開発。Windows 95以降のバージョンでDOSの依存度が減少しましたがパーソナルコンピュータの基本的な操作環境を提供し、その後のWindowsの発展に重要な役割を果たしました。

DOSを操作してみましょう

このタスクの右上にある緑色の「マシンを起動」ボタンをクリックして、分割画面ビューで仮想マシンを起動します。

「マシンを起動」ボタンをクリック

デスクトップにある「DosBox-X」アイコンをダブルクリックして、DOSエミュレータを実行します。その後、DOS環境のウェルカムスクリーンが表示されます。

DOSエミュレータを起動

clsを入力してキーボードのEnterキーを押して画面をクリアします。 いろいろなコマンドをたたいてみましょう。

dirを実行するとディレクトリの内容が表示されます。

>dirを実行

typeを実行するとファイルの内容が表示されます。

>type plan.txtを実行

cdでディレクトリ間を移動することができます。一つ上の階層に移動するときは「..」を指定します。

ディレクトリ間を移動する

helpでヘルプを表示することができます。利用できるコマンドとその説明を表示することができます。

>helpを実行

バックアップからファイルを復元しましょう

ではさっそくバックアップからファイルを復元してみましょう。 toolディレクトリにあるBUMASTER.EXEを使用してバックアップファイルAC2023.BAKから復元します。

>BUMASTER.EXE C:\AC2023.BAKを実行

エラーになりました。 TYPEコマンドに代わってEDITコマンドを使用すると、グラフィカルユーザーインターフェイスが開き、ファイルを簡単に表示および編集できるようになります。

トラブルシューティング

readme.txtを開きトラブルシューティングのセクションを確認すると、発生している問題はファイル署名の問題である可能性が高いとのことです。

ファイル署名/マジックバイト

ファイル署名は一般に「マジックバイト」と呼ばれ、ファイルのコンテンツ タイプと形式を識別または検証する、ファイルの先頭にある特定のバイトシーケンスです。これらのバイトには対応するASCII文字が含まれていることが多く、検査時に人間が読みやすくなっています。 識別プロセスにより、ソフトウェアアプリケーションはファイルが処理可能な形式であるかどうかをすばやく判断でき、運用機能とセキュリティ対策に役立ちます。

簡単なプログラムを使ってマジックバイトを確認してみましょう。 用意されているhello.cを用意されているBorland Turbo Cコンパイラで開きビルドしてexeファイルを生成します。

>tc hello.cを実行

ビルド成功

hello.exeができました

先ほどのエディタ(EDITコマンド)を使って生成されたexeファイルの内容をみてみましょう。

editでhello.exeを表示します

先頭2バイトにはMZの文字が見えます。 トラブルシューティングのセクションによると、 BUMASTER.EXEファイルのマジックバイトは41 43であるようです。

エディタでマジックバイトを変更するには16進数値をASCII表現に変換する必要があります。 オンラインコンバーターを使用して変換します。

41 43に対応するASCII文字を調べます

調べたASCII文字でバックアップファイルの先頭2バイトを書き換えます。

マジックバイト変更前

準備は整いました。 先ほどと同じように復元コマンドを実行してみます。

復元結果
どのような結果になりましたか?

問題に挑戦

では実際に問題を解いてみましょう。

問題1.AC2023.BAKファイルの大きさ (バイト単位) はどれくらいですか?

dirコマンドで表示することができます。

問題2.バックアッププログラムの名前は何ですか?

復元に使用したツールですね。

問題3.バックアップを適切に復元するには、バックアップのファイル署名に正しいバイトが何である必要がありますか?

トラブルシューティングでreadmeに記載されていたマジックバイトの値です。

問題4.バックアップを正常に復元した後のフラグは何ですか?

復元が終わると表示されます。

まとめ

いかがでしたでしょうか? 単純な形式のリバース エンジニアリングでしたがワクワクしていただくことができたと思います。 もっと深く学びたい方はこちらのコースもおすすめです。(有料コンテンツです) tryhackme.com

今回はReverse engineering(リバースエンジニアリング)のテーマのもと以下について学ぶタスクをご紹介しました。

  • 馴染みのないレガシーシステムを操作する方法を体験します。
  • DOSと、同時代のWindowsコマンドプロンプトとの関連について学習します。
  • データ復旧とファイルシステム分析におけるファイル署名とマジック バイトの重要性について説明します。

ここで使用したBUMASTER.EXEのようにバックアップファイルから復元するツールはいろいろとありますのでぜひ調べてみてください。

最後まで読んでいただきありがとうございました。次回もお楽しみに。

0-WANについて

私たち0-WANは、ゼロトラスト製品を中心とした、マルチベンダーでのご提案で、お客様の経営課題解決を支援しております。 ゼロトラストってどうやるの?製品を導入したけれど使いこなせていない気がする等々、どんな内容でも支援いたします。 お気軽にご相談ください。

問い合わせ先、0-WANについてはこちら。 www.ap-com.co.jp

一緒に働いて頂ける仲間も募集しています

今までの経験を活かして、私たちと一緒にゼロトラスト分野で活躍しませんか? www.ap-com.co.jp