logo

ハッシュ

まず最初に、基本から始めて、ハッシュという概念について知りましょう!

ハッシュアルゴリズム - は任意のサイズのデータを取り込み、ハッシュまたはメッセージダイジェストと呼ばれる出力を生成する数学的関数です。出力は入力データの一意の表現であり、データが改ざんされていないことを検証するために使用できます。ハッシュアルゴリズムは、データの整合性と真正性を保証するために使用されます。簡単に言うと、ハッシュはデータの一意のデジタルフィンガープリントです。それはデータを表すコードのようなものです。このコードはハッシュ関数と呼ばれる数学的関数によって生成されます。データが少しでも変化すると、ハッシュは異なるものになります。

ハッシュには主要なキーポイントがいくつかあります:

  1. 決定性:ハッシュ関数は、与えられた入力に対して常に同じ出力を生成するべきです。これは、同じデータを2回ハッシュした場合、両方の回で同じハッシュ値を得られるべきだということを意味します。

  2. 不可逆性:ハッシュ値から元の入力データを再構築することが計算上実行不可能であるべきです。この属性は、ハッシュ値のみにアクセスできる攻撃者によって元のデータが発見されることを防ぐため、セキュリティにとって重要です。

  3. 一様性:ハッシュ関数は、すべての可能な入力にわたってハッシュ値の一様な分布を生成するべきです。これは、各ハッシュ値が発生する確率が等しく、ハッシュ値の分布にパターンやバイアスが存在しないことを意味します。

  4. 予測不可能性:他の入力のハッシュ値やハッシュ関数自体の特性を基に入力のハッシュ値を予測することが計算上実行不可能であるべきです。この属性は、攻撃者が衝突(2つの異なる入力が同じハッシュ値を生成すること)を作り出すのを難しくするため、セキュリティにとって重要です。

  5. 不可逆性:ハッシュ値から元の入力データを再構築することが計算上実行不可能であるべきです。この属性は、ハッシュ値のみにアクセスできる攻撃者によって元のデータが発見されることを防ぐため、セキュリティにとって重要です。

  6. 衝突攻撃への耐性:ハッシュ関数は衝突攻撃に対して耐性があるべきです。衝突攻撃とは、同じハッシュ値を生成する2つの異なる入力を見つけることを含む攻撃で、デジタル署名の不正作成やアクセス制御の回避に使用される可能性があるため、ハッシュ関数がそれに対して設計されることは重要です。

ハッシュのその他の特徴については、Wikipediaページで確認できます:

https://en.wikipedia.org/wiki/Hash_function

 

データ検証。ブラックリストとホワイトリスト。

アンチウイルスソフトウェアの文脈では、ハッシュアルゴリズムはマルウェアを検出したり、誤検知アラートを排除するために使用されます。アンチウイルスソフトウェアは、既知のマルウェアのハッシュ(ブラックリスト)と信頼できるソフトウェアのハッシュ(ホワイトリスト)のデータベースを維持しています。ファイルがスキャンされると、そのハッシュはデータベース内のハッシュと比較されます。データ検証に最も一般的に使用されるハッシュアルゴリズムはMD5、SHA-1、SHA-256およびSHA-512です。

アンチウイルスのブラックリストおよびホワイトリストでのハッシュの使用は、スキャンプロセスを速めるのに役立ちます。なぜならアンチウイルスプログラムは、各ファイルが悪意があるかどうかを判断するために詳細な分析を行う必要がなく、代わりにファイルのハッシュ値をブラックリスト/ホワイトリストのものと比較して、既知の脅威や信頼されたアプリを迅速に特定できるからです。

ブラックリスト。サイバーセキュリティやアンチウイルスソフトウェアの文脈において、ブラックリストは既知の悪意のあるファイルやそれらのファイルの一部のリストです。アンチウイルスプログラムがコンピューターやネットワークをスキャンする際、遭遇するファイルやエンティティをブラックリストと比較して、脅威を特定します。ファイルやエンティティがブラックリストのエントリーと一致する場合、アンチウイルスプログラムはそれを削除または隔離して害を引き起こすことを防ぐための措置をとります。

ブラックリストは既知の脅威を検出し、防止するのに役立つことがありますが、新しく未知の脅威に対して常に効果的であるとは限りません。攻撃者は、難読化やポリモーフィズムなどの様々な技術を使用して、ファイルやエンティティのコードや振る舞いを変更し、アンチウイルスプログラムによる検出を回避することができます。

そのため、アンチウイルスプログラムは、ホワイトリストや行動ベースの検出のような技術の組み合わせをしばしば使用し、ブラックリストの使用を補完し、より広範な脅威に対してより包括的な保護を提供します。

Whitelist. サイバーセキュリティやアンチウイルスソフトウェアの文脈において、whitelistとは安全であると認識されている信頼できるファイルのリストです。ファイルまたはエンティティがwhitelistのエントリーと一致する場合、そのファイルは安全とみなされるため、アンチウイルスプログラムは何もアクションを取らずに開く/実行を許可します。

ホワイトリストは、アンチウイルスやセキュリティプログラムでの誤検知を防ぐのに役立ちます。誤検知とは、プログラムやファイルが実際には安全であるにもかかわらず、悪意があるか危険としてマークされることです。ホワイトリストを使用することで、セキュリティプログラムはこれらの誤検知を回避でき、時間の節約と不要なアラートの防止につながります。

 

ハッシュやブラックリスト/ホワイトリストを利用することは、既知の脅威から保護し、アンチウイルスやセキュリティプログラムでの誤検知を防ぐ効果的な方法となることがあります。

 

なぜアンチウイルスは複数のハッシュアルゴリズムを使用するのか?

アンチウイルスプログラムはいくつかの理由で複数のハッシュアルゴリズムを使用します:

  1. ブラックリストは既知の脅威を検出し、防止する上で有効な手段ですが、万全ではありません。攻撃者は、データを変更してブラックリストのシグネチャとの一致を避けるなど、さまざまな技術を使用して検出を回避することができます。これらの技術は「コリジョン攻撃」と呼ばれています。コリジョン攻撃とは、攻撃者が異なる入力(ファイルやメッセージなど)を見つけ、それらがハッシュ関数を通じて同じハッシュ値を生成するようにする暗号攻撃の一種です(コリジョン)。コリジョン攻撃の目的は、デジタル署名、パスワード認証、データ完全性チェックなど、ハッシュ値の整合性に依存するシステムを潜在的に破壊するための入力のペアを作成することです。攻撃者がコリジョンを見つけることができれば、ハッシュ関数に依存するセキュリティ対策を回避するためにそれを使用することができます。コリジョン攻撃のリスクを軽減するために、アンチウイルスは攻撃に強い堅牢なハッシュ関数を使用し、同時に複数のハッシュ関数を使用します。例えば、アンチウイルスプログラムがMD5ハッシュアルゴリズムのみを使用している場合、攻撃者は正規のファイルと同じMD5ハッシュを持つ悪意のあるファイルを作成し、その悪意のあるファイルを安全としてアンチウイルスプログラムが扱うように騙す可能性があります。しかしながら、MD5、SHA-1、SHA-256など複数のハッシュアルゴリズムを使用することで、すべてのアルゴリズムに対して同時に機能するコリジョン攻撃を作成することは攻撃者にとってより困難になります。

  2. 効率性:異なるハッシュアルゴリズムは異なる計算要件を持ち、ファイルのサイズ、タイプ、その他のファクターによって、一部は他よりも効率的かもしれません。複数のハッシュアルゴリズムを使用することで、アンチウイルスプログラムは与えられた状況に最も適したアルゴリズムを選択することができ、時間と処理能力を節約することができます。たとえば、SHA-256はMD5よりも計算が集中しているため、アンチウイルスプログラムは小さいファイルにはMD5を使用し、大きいファイルにはSHA-256を使用するかもしれません。

  3. 柔軟性:異なるハッシュアルゴリズムは異なるユースケースやアプリケーション用に設計されています。複数のハッシュアルゴリズムを使用することで、アンチウイルスプログラムは様々なニーズやシナリオに適応することができます。たとえば、フォレンジック調査官は調査中にデータが変更されていないことを保証するために、アンチウイルスプログラムとは異なるハッシュアルゴリズムを使用するかもしれません。

 

複数のハッシュアルゴリズムを使用することは、サイバーセキュリティやアンチウイルスソフトウェアの開発において最適な方法であり、サイバー脅威の検出と防止において堅牢性、互換性、効率性、および柔軟性を提供します。

 

アンチウイルスはどのようにして類似しているが同一ではないデータやファイルを識別するのか?

 

似ているが同一ではないファイルは、攻撃者がアンチウイルスソフトウェアの検出を回避するために使用することができるため、サイバーセキュリティでは問題となることがあります。

たとえば、攻撃者は既知のマルウェアファイルを取り、コードや構造にわずかな変更を加えることがあります。これには、変数名を変更することや命令の順序を並べ替えることが含まれます。これらの変更は、元のマルウェアファイルと似ているが同一ではない新しいファイルを作成するのに十分であり、従来のハッシュベースの検出方法に依存するアンチウイルスソフトウェアでは検出されない可能性があります。

さらに、攻撃者は似ているが同一ではないファイルを使用して、検出を避けるために各感染ごとにコードまたは構造を変更するポリモーフィックマルウェアを作成することがあります。ポリモーフィックマルウェアは、マルウェアコード内の特定のパターンやシグネチャを認識することに依存している従来のアンチウイルス技術では検出が非常に困難です。

この問題を解決するために、アンチウイルスはファジーハッシュを使用します。

 

Fuzzy hashingは、類似しているが同一ではないファイル、特に多形性マルウェアを検出するために一部のアンチウイルスソフトウェアで使用される技術です。ファイルを小さなピースに分け、それらのピースのハッシュを他のファイルのハッシュと比較することによって、完全に同一ではなくても、類似したコードや構造を持つファイルを特定できます。

Fuzzy ハッシングは、ファイル全体に頻繁に現れるバイトのシーケンスを特定することによって機能します。これらのシーケンスは「チャンク」としても知られており、暗号ハッシュ関数を使用してハッシュ値を生成するためにハッシュされます。次に、類似したチャンクを特定するために、他のファイルのチャンクのハッシュ値と比較されます。

fuzzy hashingの利点は、ファイルが変更されたり難読化されたりした場合でも類似点を検出できることです。これにより、既知のマルウェアのバリアントを特定するための強力なツールとなります。たとえば、攻撃者が変数名や関数名を変更して既知のマルウェアファイルを変更した場合、伝統的なハッシュベースの検出方法では変更されたファイルを検出できないかもしれません。しかし、fuzzy hashingはオリジナルのマルウェアファイルの類似したチャンクを特定することで、変更されたファイルを依然として検出することができます。MD5、SHA-1、またはSHA-512のような暗号化ハッシングアルゴリズムとは異なり、fuzzy hashingアルゴリズムは入力データの類似性に基づいた可変長のハッシュ値を生成します。

 

ファジーハッシュの利点:

  1. 類似ファイルの検出:Fuzzy hashesはわずかに変更されたファイルであっても類似ファイルを検出することができ、既知のマルウェアの変種を特定するのに役立ちます。

  2. 誤検知の削減:Fuzzy hashesは、伝統的なハッシュベースの検出方法によって生成される誤検知の数を減らすことができます。これは、Fuzzy hashesが既知のマルウェアと同一ではないが類似のファイルを検出できるためです。

  3. 難読化への耐性:Fuzzy hashesは攻撃者が検出を回避するために使用する難読化技術に対してより耐性があります。これは、Fuzzy hashingアルゴリズムがファイルをより小さな部分に分割し、それぞれの部分に対してハッシュを生成するため、攻撃者が検出を回避するためにファイルを変更することがより困難になるからです。

Fuzzy ハッシュには、似ているが同一ではないファイルを検出する効果に影響を与えるいくつかの制限があります:

  1. 誤検知:ファジーハッシングは誤検知を引き起こすことがあります。これは、正当なファイルが、既知のマルウェアと似たコードや構造を持つために、悪意あるものとしてフラグが立てられる場合です。この問題は、ファイルが共通のライブラリやフレームワークを共有している場合に発生することがあります。

  2. パフォーマンス:ファジーハッシングは計算が集中的になることがあり、特に大きなファイルの場合はそうです。これにより、スキャンプロセスが遅くなり、システムのパフォーマンスに影響を与えることがあります。

  3. サイズの制限:ファジーハッシングは非常に小さいファイルやエントロピーが低いファイルではうまく機能しないことがあります。十分なユニークなチャンクがないと、意味のあるハッシュを生成できない可能性がありま

  4. 改ざん:攻撃者が特にファジーハッシングを標的にしてファイルを改ざんし、検出を回避する場合、ファジーハッシングは効果的ではないかもしれません。例えば、攻撃者が意図的にファイルの構造を変更し、ファジーハッシングによって識別されないようにすることができます。


 

暗号化ハッシュアルゴリズムとファジーハッシュアルゴリズムの違いは何ですか?

暗号化ハッシュアルゴリズムとファジーハッシュアルゴリズムはどちらもサイバーセキュリティで使用されていますが、目的と特性が異なります。

暗号化ハッシュアルゴリズム、たとえばSHA-256やMD5は、固定長でユニークなハッシュ値を生成することによって、データの完全性と認証性を提供するように設計されています。これらのハッシュ値は逆工学をすることがほぼ不可能です。暗号化ハッシュアルゴリズムは、データの完全性を検証するために使用されます。

ファジーハッシュアルゴリズム(例えばSSDEEP)は、マルウェアの作者によって修正されたり再パッケージされたりしたファイルのように、同一ではないが類似したデータを特定するために設計されています。ファジーハッシングはスライディングウィンドウ技術を使用してデータを小さなチャンクに分割し、可変長の確率的ハッシュを生成し、既知のマルウェアハッシュのデータベースと比較して潜在的に悪意のあるファイルを特定します。

暗号化ハッシュアルゴリズムは衝突耐性があり、同じハッシュ出力を生成する2つの入力を見つけることが極めて困難であるように設計されています。ファジーハッシュアルゴリズムは、一意のハッシュ出力を生成するのではなく、ファイル間の類似性を検出するよう設計されているため、衝突耐性である必要はありません。

暗号学的ハッシュアルゴリズムとファジーハッシュアルゴリズムの主な違いは、その決定性のレベルにあります。暗号学的ハッシュアルゴリズムは、各入力に対して固定長で決定論的なハッシュを生成するのに対し、ファジーハッシュアルゴリズムは、類似した入力に対して類似した可変長の確率的ハッシュを生成します。

 

私たちのソリューションで使用するファジーハッシングアルゴリズムは何ですか?

 

私たちのソリューションでは、SSDEEPとTLSHを使用する予定です。

 

ssdeep は類似しているが同一ではないデータ、たとえばマルウェアのバリアントを識別するために使用されるファジーハッシュアルゴリズムです。このアルゴリズムは入力データの類似性を表すハッシュ値を生成することによって機能し、暗号化ハッシュ関数のような一意の識別子とは異なります。ssdeep の出力は可変長であり、確率的であるため、二つのファイル間のわずかな違いも検出することができます。ssdeep はマルウェア解析や検出に一般的に使用されており、さまざまなセキュリティツールやアンチウイルスソフトウェアにも統合されています。

 

TLSH (Trend Micro Locality Sensitive Hash)は、マルウェアのバリアントなど、同一ではないが類似したデータを識別するために使用されるファジーハッシュアルゴリズムです。このアルゴリズムは、バイトの頻度や順序など、入力データのユニークな特徴を捉えるハッシュ値を生成します。TLSHの出力は可変長であり、確率的であるため、入力データが変更されたり難読化されたりしても、類似性を検出することができます。TLSHは、マルウェア分析と検出で一般的に使用され、さまざまなセキュリティツールやアンチウイルスソフトウェアにも統合されています。

 

ssdeep と TLSH は両方とも、2つのハッシュ値の類似性を決定するために距離メトリクスを使用します。しかし、ssdeep と TLSH が使用する距離メトリクスは異なります。

ssdeepは「ふわふわハッシュ距離」指標を使用して2つのハッシュ値の間の距離を計算します。この距離メトリックは、2つのハッシュ間の一致するブロックと一致しないブロックの数、およびハッシュのサイズに基づいています。距離メトリックは0から100までのパーセンテージ値で、0は2つのハッシュが同一であることを意味し、100は2つのハッシュが完全に異なることを意味します。

TLSHは一方で、2つのハッシュ値間の距離を計算するために「total diff」メトリックを使用します。この距離メトリックは、2つの入力データセットの局所感性特徴の違いに基づいています。「total diff」メトリックの出力は0から1000の間の値で、0は2つのハッシュ値が同一であることを意味し、1000は2つのハッシュ値が完全に異なることを意味します。

 

ハッシュモジュールの構築

私たちのソリューションには、オープンソースのライブラリを使用します:

    1. PolarSSL: https://polarssl.org/

PolarSSLは、Transport Layer Security (TLS)、Secure Sockets Layer (SSL)、Datagram Transport Layer Security (DTLS)などの暗号化プロトコルを実装するためのフリーでオープンソースのソフトウェアライブラリです。これは、ハッシュ関数、対称および非対称暗号化、デジタル署名、鍵交換アルゴリズムを含む様々な暗号化アルゴリズムとプロトコルを提供します。PolarSSLは軽量で効率的に設計されており、リソースが制約された環境での使用に適しています。

    2. ssdeep: http://ssdeep.sf.net/

    3. TLSH: https://github.com/trendmicro/tlsh/

プロジェクトにライブラリを実装した後、簡単なコードを追加します:

struct HashData
{
   	BYTE  md5[16];
   	BYTE  sha1[20];
   	BYTE  sha512[64];
   	std::string ssdeep;
   	std::string tlsh;
};

HashData hash(const void* buff, uint64_t size)
{
   	HashData snap = {};

   	hashes::md5(buff, size,  snap.md5);
   	hashes::sha1(buff, size, snap.sha1);
   	hashes::sha4(buff, size, snap.sha512);

   	snap.ssdeep = hashes::ssdeepHash(buff, size);
   	snap.tlsh   = hashes::tlshHash(buff, size);

   	return snap;
}

 

ハッシュモジュールの確認

 

ハッシュモジュールをテストする時間です! これを行うために、次の内容を含むテキストファイルを作成します:

All the World`s a Stage by William Shakespeare
All the world`s a stage,
And all the men and women merely players;
They have their exits and their entrances,
And one man in his time plays many parts,
His acts being seven ages. At first, the infant,
Mewling and puking in the nurse`s arms.
Then the whining schoolboy, with his satchel
And shining morning face, creeping like snail
Unwillingly to school. And then the lover,
Sighing like furnace, with a woeful ballad
Made to his mistress` eyebrow. Then a soldier,
Full of strange oaths and bearded like the pard,
Jealous in honor, sudden and quick in quarrel,
Seeking the bubble reputation
Even in the cannon`s mouth. And then the justice,
In fair round belly with good capon lined,
With eyes severe and beard of formal cut,
Full of wise saws and modern instances;
And so he plays his part. The sixth age shifts
Into the lean and slippered pantaloon,
With spectacles on nose and pouch on side;
His youthful hose, well saved, a world too wide
For his shrunk shank, and his big manly voice,
Turning again toward childish treble, pipes
And whistles in his sound. Last scene of all,
That ends this strange eventful history,
Is second childishness and mere oblivion,
Sans teeth, sans eyes, sans taste, sans everything.

 

テスト1: 同じ内容(上記のテキスト)を持つ二つの同一ファイルを作成して、ハッシュ値を計算します。

SSDEEPはファイルが100%同一であると言います。TLSHはファイル間の違いが0%であると言います。

 

テスト2: 同じ内容の同一のファイルを2つ作成し、2つ目のファイルに変更を加えてハッシュ値を計算する

第二のファイルの内容:

All the World`s a Stage by William Shakespeare
O lovely maidens, fall in love,
But not with Muscovites,
For Muscovites are foreign folk,
They do not treat you right.
A Muscovite will love for sport,
And laughing go away;
They have their exits and their entrances,
And one man in his time plays many parts,
His acts being seven ages. At first, the infant,
Mewling and puking in the nurse`s arms.
Then the whining schoolboy, with his satchel
And shining morning face, creeping like snail
Unwillingly to school. And then the lover,
Sighing like furnace, with a woeful ballad
Made to his mistress` eyebrow. Then a soldier,
Full of strange oaths and bearded like the pard,
Jealous in honor, sudden and quick in quarrel,
Seeking the bubble reputation
Even in the cannon`s mouth. And then the justice,
In fair round belly with good capon lined,
With eyes severe and beard of formal cut,
Full of wise saws and modern instances;
And so he plays his part. The sixth age shifts
Into the lean and slippered pantaloon,
With spectacles on nose and pouch on side;
His youthful hose, well saved, a world too wide
For his shrunk shank, and his big manly voice,
Turning again toward childish treble, pipes
And whistles in his sound. Last scene of all,
That ends this strange eventful history,
Is second childishness and mere oblivion,
Sans teeth, sans eyes, sans taste, sans everything.

SSDEEPはファイルが88%同一であると述べています。TLSHはファイル間の違いが4.7%あると言っています。

 

テスト3: 二つの全く異なるテキストファイルのハッシュを計算する

第二のファイルの内容:

"Katerina", poem of Taras Shevchenko
(translated by John Weir)

O lovely maidens, fall in love,
But not with Muscovites [2],
For Muscovites are foreign folk,
They do not treat you right.
A Muscovite will love for sport,
And laughing go away;
He`ll go back to his Moscow land
And leave the maid a prey
To grief and shame...
It could be borne
If she were all alone,
But scorn is also heaped upon
Her mother frail and old.
The heart e`en languishing can sing –
For it knows how to wait;
But this the people do not see:
“A strumpet!“ they will say.
O lovely maidens, fall in love,
But not with Muscovites,
For Muscovites are foreign folk,
They leave you in a plight.
Young Katerina did not heed
Her parent`s warning words,
She fell in love with all her heart,
Forgetting all the world.    

The orchard was their trysting-place;
She went there in the night
To meet her handsome Muscovite,
And thus she ruined her life.
Her anxious mother called and called
Her daughter home in vain;
There where her lover she caressed,
The whole night she remained.
Thus many nights she kissed her love
With passion strong and true,
The village gossips meanwhile hissed:
“A girl of ill repute!”
Let people talk, let gossips prate,
She does not even hear:
She is in love, that`s all she cares,
Nor feels disaster near.
Bad tidings came of strife with Turks,
The bugles blew one morn:
Her Muscovite went off to war,
And she remained at home.
A kerchief o`er her braids they placed
To show she`s not a maid,
But Katerina does not mind,
Her lover she awaits.
He promised her that he’d return
If he was left alive,
That he`d come back after the war –
And then she`d be his wife,
An army bride, a Muscovite
Herself, her ills forgot,
And if in meantime people prate,
Well, let the people talk!
She does not worry, not a bit –
The reason that she weeps
Is that the girls at sundown sing
Without her on the streets.
No, Katerina does not fret –
And jet her eyelids swell,
And she at midnight goes to fetch

The water from the well
So that she won`t by foes be seen;
When to the well she comes,
She stands beneath the snowball-tree
And sings such mournful songs,
Such songs of misery and grief,
The rose .itself must weep.
Then she comes home - content that she
By neighbours was not seen.
No, Katerina does not fret.
She`s carefree as can be -
With her new kerchief on her head
She looks out on the street.
So at the window day by day
Six months she sat in vain....
With sickness then was overcome,
Her body racked with pain.
Her illness very grievous proved.
She barely breathed for days ...
When it was over - by the stove
She rocked her tiny babe.
The gossips` tongues now got free rein.
The other mothers jibed
That soldiers marching home again
At her house spent the night.
“Oh, you have reared a daughter fair.
And not alone beside
The stove she sits - she`s drilling there
A little Muscovite.
She found herself a brown-eyed son...
You must have taught her how!...
Oh fie on ye, ye prattle tongues,
I hope yourselves you`ll feel
Someday such pains as she who bore
A son that you should jeer!
Oh, Katerina, my poor dear!
How cruel a fate is thine!

SSDEEPはファイルが完全に異なるとし、一致率は0%です。しかし、TLSHによるとファイルの差異は27.1%のみです。

 

それはなぜでしょうか?結局のところ、私たちは二つの全く異なるテキストファイルの間の距離を考慮していますよね?

 

上記のように、TLSHアルゴリズムは頻度を考慮に入れています。

テキストが異なるにもかかわらず、同じ言語で書かれ、同じアルファベットを使用し、いくつかの同じ単語があります。このハッシュアルゴリズムの特徴は、悪意のあるファイルの変更を検出するのに役立ちます。

 

テスト 4: 2つのWindowsシステムファイルを比較する

SSDEEPは、ファイルが全く異なり、一致率は0%であると述べています。

しかし、TLSHアルゴリズムによると、ファイルはたったの14.5%しか異なりません。これは、おそらく同じコンパイラー、同じ会社によって、同じコードパターンを使用してビルドされたためでしょう。ファイルには似たVERSION_INFOとMZヘッダが含まれています。

 

テスト 5: 2つのシステムファイルと私たちのhashpair.exeファイルを比較する

SSDEEPは、ファイルが完全に異なり、0%の一致があると述べています。

TLSHアルゴリズムによると、これらのファイルは73.3%の大きな違いがあります。これらのファイルは異なる会社によって、異なるライブラリと異なるコンパイラを使用してコンパイルされました。これらのファイルは異なるVERSION_INFOと異なるMZヘッダを持っています。したがって、TLSHアルゴリズムは実行可能ファイルを分類することを可能にし、類似の悪意のあるファイルや同じ家族の悪意のあるファイルを特定するのに役立ちます。

 

使用されたツールのリスト

    1. WinMerge: https://winmerge.org

WinMergeはWindows用のオープンソースの差分比較およびマージツールです。WinMergeはフォルダとファイルの両方を比較でき、違いを理解しやすく扱いやすい視覚的なテキスト形式で表示します。

    2. Notepad++: https://notepad-plus-plus.org/downloads

Notepad++は「自由な発言の自由(free speech)」および「無料のビール(free beer)」として無料のソースコードエディターであり、複数の言語をサポートするNotepadの代替品です。MS Windows環境で動作し、その使用はGNU General Public Licenseによって管理されています。

 

GITHUB

プロジェクト全体のコードは、私たちのgithubで見ることができます:

https://github.com/SToFU-Systems/DSAVE

 

次は何ですか?

皆様のご支援に感謝いたします。今後とも当コミュニティへのご参加を心よりお待ちしております。

次の記事では、あなたと一緒に最もシンプルなPEリソースパーサーを作成します。

この記事の著者に関するご質問は、以下のメールにてお送りください:articles@stofu.io

ご注意いただきありがとうございます。素敵な一日をお過ごしください!