TryHackMe(THM):MAL: Researching

この記事は、DeepL翻訳を利用して和訳しています。

www.deepl.com

 

このサイトに書かれている攻撃手法は「自分に権利のあるサイト」以外では使用しないでください

 

Task 1 Intro

暗号理論をいくつか取り上げますが、関連性を持たせ、できる限り視覚化しました。部屋の最後には、取り上げたトピックごとに「Further Reading」というタスクで資料を用意しました。

ここでは、ファイルのチェックサムについて、なぜこれらの値が日常生活で重要なのか、さらにはマルウェアの分析にどのように利用できるのかを学びます。最初のいくつかのタスクは、理論的な内容が多いので、ご理解ください。しかし、終盤では、自分でチェックサムを生成し、オンラインサンドボックスの使用方法を学び、そこから生成されたレポートを分析します。

Task 2 Deploy!

インスタンスをデプロイし、THMのVPNに接続されていることを確認します。

Task 3 Checksums 101

チェックサムとは何ですか?

チェックサムは、マルウェア解析のコミュニティでは重要な属性です。チェックサムは、マルウェア解析のコミュニティだけでなく、情報技術(IT)業界でも広く知られています。簡単に言えば、チェックサムは入力に対する数学的な演算の結果であり、出力は一連の文字である。

最終的に、コンピュータシステム上のデータのマークアップは、1と0の2進法であり、それぞれの値が「ビット」となります。暗号チェックサムでは、この「ビット」を数学的操作の入力として使用します。数学的操作が複雑であればあるほど、チェックサムの安全性は高まると考えられます。これらのチェックサムは、一般に「ハッシュ」とも呼ばれています。

暗号アルゴリズムの仕組み上、ファイルなどの入力サイズに関わらず、出力の長さは同じになります。例えば、あるアルゴリズムを用いて、以下の2つのファイルに対してこれらの数学的操作を適用してみましょう。

File Name File Size
My_Video.mp4 4GB
My_Selfie.png 10MB

 

ファイルサイズは大きく異なりますが、算出される出力の長さは、内容は違えど同じになります。例えば、私が例として挙げたこのアルゴリズムでは、出力の長さは12文字です。

File Name File Size The output from the Algorithm
My_Video.mp4 4GB 3DEFAD92D23AD
My_Selfie.png 10MB  FFDE312DAEFF

 

アルゴリズムから算出された値は、各ファイルごとに異なりますが、ファイルサイズに関わらず、同じ長さのままです。この場合、2つのファイルの内容が異なるため、それぞれの出力はファイルごとに異なります。

数学的な演算が複雑になることで、内容の異なる2つのファイルが同じ出力になる可能性が大幅に減ります。これが起こると、「ハッシュの衝突」と呼ばれます。この現象がどのようにして起こるのかを数学的に説明することはできませんが、非常に稀なケースです。最近の有名な例では、ハッシュアルゴリズムMD5は、1秒間に60億個のファイルをハッシュ化する必要があり、これを100年間平均して続けます。(Kornel., 2008) 

ハッシュ衝突が発生する確率はかなり低いと言ってもいい一方で、数学的には可能です。例えば、研究者(Stevens et al., 2017)は、SHA1ハッシュの衝突を実際に実証できたShattered.ioについて報告しています。このような衝突がどのようにしてコンセプトの証明になるのかを理解するだけでなく、このような発見が情報セキュリティの世界でなぜ重要なのかを理解するために、時間をかけて報告書に目を通すことを大いにお勧めします。

数学的には可能ですが、このようなエラーが起こるのはかなり稀だと言ってよいでしょう。以下では、これを可視化します。

 

チェックサムの続きです。

チェックサムについてもう少し詳しく説明しましょう。IT業界では、チェックサムはデータの整合性を検証するために使用されます。USBドライブにファイルをコピーしたとき、Windowsが「ファイルが壊れています」と警告したことはありませんか?これはデータの破損です。つまり、ソフトウェアやハードウェアのエラーにより、転送プロセスのどこかでバイナリデータが失われたということです。

チェックサムは、データが新しい場所に完全にコピーされたかどうかを確認するのに最適です。人間は、2つのファイルのバイナリデータ(比較すると数百万の値になる)を比較して、それらが正しいかどうかを確認することはできません。しかし、人間は2つの固定長の値を比較することができます。例えば、上記のアルゴリズムの12文字の長さの出力を比較することができます。現実の世界では、SHA1、SHA-256、場合によってはSHA-512などの一般的なアルゴリズムがあり、それぞれのアルゴリズムの出力長は、その安全性に応じて変化します。

以下では、ハッシュアルゴリズムの仕組みを視覚的に説明します。

f:id:akebono-haze:20210725173946p:plain

ここで、最初の2つのファイルの内容が「TryHackMe」と同じであることをご覧ください。同じアルゴリズムを使用すると、生成されるチェックサムは同じになります。これは、この2つのファイルのバイナリデータが同じであるため、同じアルゴリズムでは同じ結果が出力されるからです。これはハッシュの衝突ではありません。

「TryHackMe」の内容が同じで、結果的に同じバイナリデータになった3つ目のファイルは、チェックサムが異なることに注目してください。これは、アルゴリズム(この場合、従来のMD5ではなくSHA256)が異なる数学的演算を使用しているためです。このアルゴリズムの背後にある数学は、MD5と比較して複雑であるため、出力文字列の長さが長くなります。

最後に、下のスクリーンショット(上のスクリーンショットの最後のファイルで、わかりやすくするために下にトリミングしただけ)で、ファイルの内容が「TryHackMe」ではなく「TryHackeM」になっていることに注目してください。

f:id:akebono-haze:20210725174053p:plain

 

最初の2つのファイルで使用された同じアルゴリズムがこのファイルでも使用されていますが(MD5)、内容が異なるため(非常に似ていますが)、出力は比較して異なっています。

ハッシュの衝突を視覚化する。

 

さて、ここで私に我慢してください。かなり理論的な内容になってしまいましたが...もうすぐですよ。以下のスクリーンショットの例は、使用するアルゴリズムやファイルの内容に応じて、様々な出力がどのように異なるかを示しています。ここでは、ハッシュの衝突の例を見てみましょう。

f:id:akebono-haze:20210725174305p:plain

2つのファイルの内容は非常に異なっています。現実世界では、単に文字を追加したり削除したりするだけの違いですが、この例ではイメージしやすいようにドラマ仕立てにしています。

ハッシュの衝突とは、内容の異なる2つのファイル(上の2つなど)が同じ出力を持つことです。数学的には、これらのファイルは同一です。しかし、中身を見れば、まったく違うことがわかります。

Answer the questions below

Name the term for an individual piece of binary

バイナリの個々のピースを表す用語の名称について説明文にあります。

What are checksums also known as?

Take3の初めに書かれていました。

Name the algorithm that is next in the series after SHA-256

これも説明の中に解答があります。

According to this task, how long will you need to hash 6 million files before a MD5 hash collision occurs?

このタスクによると、600万個のファイルをハッシュ化するのに、MD5ハッシュの衝突が起こるまでにどれくらいの時間が必要でしょうか。

単位は違うけど、設問のアンカーリンクに解答があります。

Who developed the MD5 algorithm?

設問をGoogleで検索すると解答が出てきます。

 

 Task 4 Online Sandboxing

オンライン・サンドボックスとは何ですか?

時には、専門家に任せた方が良いこともあります。特に、マルウェアの解析の場合はそうです。しかし、オンライン・サンドボックスは、趣味の人だけでなく、より多くの人に利用されています。

情報セキュリティの文脈では、サンドボックスとは、プロセスを隔離して相互に直接作用しないようにするための技術である。これには多くの例があります。例えば、ハイパーバイザーとしてVirtualboxを使用し、メインコンピューター上でKali Linuxオペレーティングシステムを仮想的に並行して実行します。Kali Linux内のプロセスは、Virtualboxを介してのみ相互に作用し、WindowsなどのメインOS上のプロセスとは干渉しません。

マルウェア解析では、アナリストはTryHackMeのような仮想環境を利用して、潜在的な悪意のあるコードをより安全に解析することができます。

しかし、このような仮想環境から分析者のホストシステムに侵入するマルウェアも存在します。このリスクは洗練されたマルウェアにある程度限定されるものの、非常に実現可能なものです。例えば、CVE-2018-2689はVirtualboxのCVEであり、マルウェアはこの制限された仮想環境から逃れることができます。このようなCVEは非常に価値が高く、発見者とその意図、すなわち悪意のあるマルウェア作者のために、めったに開示されません。

マルウェアがどのようにして仮想環境にいることを検知するのか、また、マルウェアがどのような経路で逃げることができるのかについては、私のブログで詳しく書いています。この課題から得られるのは、仮想環境だけではマルウェアから身を守れないということです。単純に、仮想環境はコードを解析するための便利なプラットフォームを提供するだけです。

簡単に言えば、オンラインサンドボックスとは、このような仮想環境のことですが、以下のようなサービスによってオンラインに置かれています。

このようなサービスを利用することで、趣味でマルウェアの挙動を理解することができ、自分自身に不利益やリスクを与えることはありません。さらに、オンラインサンドボックスのプラットフォームは高度に洗練されており、アナリストが見逃してしまうような動作を報告してくれる可能性があります。

そうは言っても、自動分析は、アナリストが発揮するスキルや深さを代替することはできませんし、それを踏襲することもできません。例えば、リバースエンジニアリングです。これらのプラットフォームは、マルウェアを実行し、OSとのやり取り、通信の試み、残されたシグネチャに基づいてレポートを生成することしかできません。例えば、以下のようなものです。

  • Contacting a domain name (DNS Lookups, etc)
    ドメイン名への問い合わせ(DNSルックアップなど)
  • Creating registry keys
    レジストリキーの作成
  • Read/Writing files
    ファイルの読み込み/書き出し
  • Creating system processes
    システムプロセスの構築
  • Maintaining persistent through system startup entries
    システム起動時のエントリーによる永続性の維持  

これらはすべて、時間が経てば分析者が発見できるものです。したがって、オンラインサンドボックスは、ファイルを事前に検査するのに有効です。

オンライン・サンドボックス・サービスとのインタラクション

 

下のスクリーンショットの例では、このサンプルをハイブリッド分析サービスで実行しました。このサンプルの所要時間は合計10分で、料金は無料でした。レポートには、ネットワークトラフィックや実行チェーンなど、膨大な数の動作が詳細に記載されており、分析者が自分で詳細を調べるには相当な時間がかかったことでしょう。

f:id:akebono-haze:20210725212811p:plain

ファイルはまだ「チェックサム」によってのみ識別されていることに注意してください。

f:id:akebono-haze:20210725212915p:plain

アナリストがこれらのチェックサムを使ってgoogleを検索した場合、このサンドボックスエンジンが生成したレポートは、今後のアナリストのためのリストとして提供されます。

レポートを読み進めていくと、以下のような興味深い行動がまとめられています。

f:id:akebono-haze:20210725213033p:plain

f:id:akebono-haze:20210725213217p:plain

次の質問に答えるために、この分析されたサンプルに目を通してください。

 

Answer the questions below

Name the key term for the type of malware that Emotet is classified as

PDFファイルを見ると、解答の言葉が至る所にあります。

Research time! What type of emails does Emotet use as its payload?

迷惑メールは大抵この分類になります。

Begin analysing the report, what is the timestamp of when the analysis was made?

報告書の1ページ目に日付があります。

Name the file that is detected as a "Network Trojan"

報告書を「Network Trojan」での検索すると解答が見つかります。

What is the PID of the first HTTP GET request?

報告書で「GET」で検索すると解答が見つかります。

What is the only DNS request that is made after the sample is executed?

サンプル実行後に行われる唯一のDNS要求とは? 報告書で「DNS」で検索すると解答が見つかります。

Task 5 Practical: Calculating & Reporting Checksums

提供された資料のMD5チェックサムを計算する。

インブラウザ機能を使用してインスタンスにアクセスすることができますが、以下の詳細を使用してRDPで接続することもできます - 事前にTryHackMe VPNに接続されていることを確認してください。

リモートデスクトップを起動します。
$ service xrdp-sesman start

f:id:akebono-haze:20210725215041p:plain

IP Address: MACHINE_IP

Username: cmnatic

Password: Tryhackm3!

 

このインスタンスでは、質問に答えるためのツールと資料を用意しています。2つの方法でファイルのMD5 Checksumを取得する方法を説明します。

必要な資料は、以下の写真のように、「cmnatic」ユーザーのデスクトップにあります。

f:id:akebono-haze:20210725215100p:plain

サードパーティ製アプリケーション「HashTab」を使用。

  1.  Right-click the file you wish to retrieve the checksum of. I will be using "ComplexCalculatorv2" in this example.
    チェックサムを取得したいファイルを右クリックします。ここでは "ComplexCalculatorv2 "を例に説明します。
  2. Left-click the "Properties" title in the drop-down.
    ドロップダウンで「プロパティ」のタイトルを左クリックします。

    f:id:akebono-haze:20210725215252p:plain

  3. In the popup, navigate to the "File Hashes" tab, where you will see a screenshot akin to the one below. Note that this tab is not present on a default Windows installation:
    ポップアップで「ファイルのハッシュ」タブに移動すると、以下のようなスクリーンショットが表示されます。なお、Windowsのデフォルトのインストールでは、このタブは存在しません。

    f:id:akebono-haze:20210725215343p:plain

これで、質問1に答えることができます。

Windowsの「Powershell」を使う。

  1. Firstly we will need to open up "Powershell". You can do this opening the Windows Search bar.
    まず、「Powershell」を開きます。Windowsの検索バーから開くことができます。

    f:id:akebono-haze:20210725215539p:plain

  2. Next, change the directory the users Desktop by using cd Desktop
    次に、cd Desktopを使って、ユーザーのデスクトップのディレクトリを変更します。
  3. Verify you are in the right directory by using dir to list the files in the directory. You should see the three below:
    dirを使ってディレクトリ内のファイルをリストアップし、正しいディレクトリにいることを確認します。以下の3つが表示されるはずです。

    f:id:akebono-haze:20210725215933p:plain

Powershellには CertUtilと File-Hashコマンドがあり、MD5SHA1、SHA2、SHA-256など、ファイルの様々なチェックサムを取得することができます。以下、ファイルのMD5チェックサムを計算する、両者の構文を詳しく説明します。

CertUtilを使う

CertUtil -hashfile ComplexCalculatorv2.exe MD5|SHA256|SHA512 or "CertUtil -hashfile <filename> <algorithm>" such as in the example below:

f:id:akebono-haze:20210725221545p:plain

FileHashを使う

Get-FileHash file_name -Algorithm MD5|SHA256|SHA512 

 

それでは、残りの質問に答えてください。

Answer the questions below

Using the HashTab tool, what is the MD5 checksum for "LoginForm.exe"?

CertUtilコマンドを実行するとチェックサムが表示されます。

 certutil -hashfile .\LoginForm.exe MD5

f:id:akebono-haze:20210725221908p:plain

Using Get-FileHash in Powershell, retrieve the SHA256 of "TryHackMe.exe"

PowershellのGet-FileHashを使って、"TryHackMe.exe "のSHA256を取得します。

以下のコマンドを実行します。

 Get-FileHash TryHackMe.exe -Algorithm SHA256

 

What would be the syntax to retrieve the SHA256 checksum of "TryHackMe.exe" using CertUtil in Powershell?

上の設問で使っているCertUtil文でオプションを「SHA256」にします。

f:id:akebono-haze:20210725224812p:plain

 

Task 6  VirusTotal

このチェックサムを利用したオンラインサービスにVirustotalがあります。Virustotalは、さまざまなアンチ・ウィルス(AV)エンジンのインデクサーおよびアグリゲーターとして機能します。チェックサムがVirsutotalに送信されると、他のマルウェア・アナリストは、そのファイルに起因するAVレポートを閲覧することができます。

f:id:akebono-haze:20210725224957p:plain

  • The IP Addresses that samples communicate with
  • Checksums
  • The file itself

下のスクリーンショットでは、Virustotalに「TryHackMe.exe」の実行ファイルをアップロードしています。Virustotalにアクセスして、ファイルのチェックサムを入力すると、このレポートを発見することができます。ここでは、そのレポートを提供しています。

f:id:akebono-haze:20210725225037p:plain

THMコントリビューターのDarkstar7471さんが、メモリ解析フレームワークであるVolatilityとVirustotalの両方を使った素晴らしい部屋を公開しています。ファイルを抽出してVirusTotalと対話し、集約されたAV評価からその悪意を判断する際には、ぜひチェックしてみてください。

提示されたレポート(こちら)を読み、提示された質問に答えてください。

Answer the questions below

設問にあるURLにアクセスします。 [詳細]タブに移動して[名前]欄にある解答します。

In the same "Details" tab, what is the reported compilation timestamp?

同じく「詳細」タブで、報告されたコンパイル時のタイムスタンプがあります。

What is the THM{} formatted flag on the report?

レポートの[コミュニティ]タブに移動すると解答があります。

Task 7  Future Reading (References)

Cryptography and Checksums:

クリプトグラフィとチェックサム

A Meaningful MD5 Hash Collision Attack - (Narayana D. Kashyap., 2008)

Cryptography & Network Security - (Behrouz A. Forozuan., 2007) 

暗号技術とネットワークセキュリティ - (Behrouz A. Forozuan., 2007)

フルSHA-1の最初のコリジョン - (Stevens et al, 2017) / (Shattered.io)

 

ブログ(無我夢中のプロモ)

マルウェアの解析をしたいということですね。

 

サンドボックス化されたエンジン。

any.run

hybrid-analysis

Answer the questions below

Thanks! I'll stay tuned for more.

ありがとうございました。これからも期待しています。

完了!

Task7はいらないかな?