Tofsee ボットネットは独自のドメイン名生成アルゴリズムを使用する

Tofsee ボットネットは独自のドメイン名生成アルゴリズムを使用する

概要

スイス政府コンピュータ緊急対応センター (GovCERT) は最近、Tofsee ボットネット マルウェアの新しいサンプルを発見しました。驚いたことに、Tofsee のドメイン名はアルゴリズムによってランダムに生成されていました。現在、同センターはアルゴリズムの詳細を復元し、今後 12 か月以内に出現する可能性のあるドメイン名をブラックリストに登録しています。

コンテンツ

本日、私たちは興味深いマルウェア サンプルを発見しました。これは数分間で数百件のスパム メールを送信しようとする Tofsee マルウェアであると特定されましたが、これが私たちのレーダーに表示された理由ではありません (私たちは毎日何千ものマルウェア サンプルを分析していますが、その多くがこの動作をしています)。この特定のサンプルに関して私たちの注目を集めたのは、それが使用したドメイン名の検索方法でした。使用されているドメイン名はアルゴリズムによって生成されているようで、約半分はスイスの国別トップレベルドメイン (ccTLD) です。

ドメイン生成アルゴリズム (DGA) を使用するマルウェアは非常にまれです。

分析する

私たちが分析した Tofsee サンプルには、ごく最近のタイムスタンプ「Fri, 16 Dec 2016 07:09:11」が付けられています。

シードを生成する

DGA の具体的なプロセスについて説明します。まず、1974 年 1 月 1 日 0:00 から現在までの秒数 (下図の 0x40A0A0) を計算し、この値に 0x0040A0A8 の 126230400 秒 (UNIX エポックから 1974 年 1 月 1 日までの秒数) を加算します。実際には、上記の手順で現在の UNIX 時刻が取得されます。現在の UNIX 時間を取得するためになぜこの複雑な方法を使用するのかは明らかではありません。この Unix 時間は 60、60、24、7 の 4 つの整数で除算され、最終結果は UNIX エポックから現在までの週数になります。この値は、ドメイン名生成アルゴリズムのシードとして使用されます。したがって、ドメイン名は UTC 時間で毎週木曜日から 1 週間有効になります。

[[180565]]

シード生成プロセス中に疑似乱数ジェネレーター (PRNG) も呼び出され、結果は 10 を法として 0 から 9 までの数値になります。この乱数ジェネレーターは、Borland C/C++ コンパイラーで使用される標準の線形合同アルゴリズムを使用します。

[[180566]]

r2の初期値はほとんど予測できません。

ドイツ

各ドメイン名生成プロセスでは、合計 10 個のドメイン名が生成されます。

(ドメイン レベルは、トップレベル ドメイン、セカンドレベル ドメインなどを含む URL 分類の標準です。完全なドメイン名は 2 つ以上の部分で構成され、各部分は英語のピリオド「.」で区切られます。最後の「.」の右側の部分はトップレベル ドメイン名 (TLD)、次の「.」までのトップレベル ドメイン名の左側の部分はセカンドレベル ドメイン名 (SLD)、セカンドレベル ドメイン名の左側の部分はサードレベル ドメイン名と呼ばれます。以下同様に続きます。ドメイン名の各レベルは、次のレベルのドメイン名の割り当てを制御します)

位置 0x040A0FC では、シードに基づいて週番号などのランダムな文字列が生成されます。このランダムな文字列は、0x040A114 に再度コピーされます。たとえば、文字列 dqg はここでは dqgdqg になります。この文字列の生成の詳細については後で説明します。

最初の SLD を生成するときは、前述の予測不可能な乱数生成アルゴリズム (0 から 9 までの 10 個の数字) を使用し、「a」から「j」までのランダムな文字 (合計 10 文字) を選択し、上記の文字列の末尾に追加して、dqgdqgc.ch などの第 2 レベル ドメイン名を生成します。次に、DGA は選択した文字から始めて、a から j までの文字を順番に選択します。たとえば、最初に「c」を選択した場合、次の文字は「d」、「e」、「f」、「g」、「h」、「j」、「a」、最後に「b」となり、合計 10 個のドメイン名が作成されます。

最初の5つのドメイン名のトップレベルドメイン名は「.ch」に設定され、残りは「.biz」に設定されます。

次に、0x040A0FC (上記dqgdqg) のランダム文字列がどのように生成されるかを見てみましょう。

この処理では、最初に生成されたシード r (週番号) を使用します。たとえば、1970 年 1 月から現在までの時間を週番号に変換し、次のように週番号を使用してランダム文字列を取得します。

たとえば、2016 年 12 月 20 日、UNIX エポックに従って計算された週番号は r=2450、string1 = 2450%26+'a'=g、r=2450/26=94 なので、最初の文字は g、r!=0 となり、ループは r=0 まで続きます。最後の文字は g、q、d です。続いて、ランダム文字列 gqd が dqg に反転されます。その後、もう一度コピーされて dqgdqg が取得されました。

プログラムの実施

以下は、Python で実装された DGA アルゴリズムです。このアルゴリズムは、指定された日付に基づいて、考えられる 20 個のドメイン名すべてを出力できます。実行中の Tofsee マルウェアごとに、これらのドメインの 1 つだけが使用されることに注意することが重要です。

[[180567]]

日付を 2016 年 12 月 20 日に設定した場合、考えられるドメインは 20 個あります。

ドメインリスト

次の表には、今後 52 週間に使用可能なすべてのドメイン名がリストされています。ドメイン名の括弧にはランダムな拡張子が含まれます。たとえば、dqgdqg{a..j}.{ch,biz} は 20 種類のドメイン名を表します。すべての時間は CET (中央ヨーロッパ時間) です。

取られた措置

Tofsee ボットネット運営者がスイスのドメイン名空間 (ccTLD .ch) を悪用するのを防ぐため、当社とスイスの国家トップレベル ドメイン レジストリはさらなる対策を講じました。DGA ドメインの可能なすべての組み合わせは、登録ステータスで未登録ステータスに設定されました。したがって、今後 12 か月間は、DGA アルゴリズムによって生成されたドメイン名は登録されません。

参考リンク

https://www.easyaq.com/newsdetail/id/1946003877.shtml

<<:  SKU多次元属性状態判定アルゴリズム

>>:  [文字列処理アルゴリズム] 入力文字列の各単語の順序を逆にするアルゴリズム設計とCコード実装

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

C# アルゴリズムの選択ソートの簡単な分析

C# 選択ソート アルゴリズムとは何ですか?これはどのように達成されるのでしょうか?この紹介が C#...

DAMOアカデミーのAI研究により、初めて大規模な膵臓がんの早期スクリーニングが可能に

私たちの日常生活では、携帯電話のロック解除から検索エンジンを使った地図ナビゲーションまで、人工知能と...

...

Pytorch の核心であるモデルの定義と構築を突破しましょう! ! !

こんにちは、Xiaozhuangです!今日はモデルの定義と構築についてお話ししましょう。初心者に最適...

人工知能システムにおける不確実性の定量化

翻訳者 | 朱 仙中校正 | 梁哲、孫淑娟まとめ人工知能 (AI) ベースのシステムは大きな可能性を...

AIを使用して一般的なビジネスプロセスを最適化する

現代のビジネス環境では、人工知能 (AI) がビジネスの運営方法を変えています。 AI をビジネス ...

「ビッグアイクリップ」が生まれ変わり、ChatGPTチャットボットに変身

6 月 29 日のニュースによると、かつては物議を醸し、今では懐かしく思われている Microsof...

TensorFlow を使用してシンプルなロジスティック回帰モデルをゼロから構築する

TensorFlow は Python ベースの機械学習フレームワークです。 Coursera でロ...

...

...

RustベースのZedエディタがオープンソース化され、OpenAIとGitHub Copilotのサポートが組み込まれました

ティム・アンダーソンノアが編集制作:51CTO テクノロジースタック(WeChat ID:blog)...

ビデオ生成における新たなブレークスルー:PixelDance、複雑な動きやクールな特殊効果を簡単に表現

最近では、画面を占め続ける大規模な言語モデルに加え、動画生成技術も大きく進歩し、多くの企業が新たなモ...

初め!プログラム可能なメモリスタコンピュータが誕生しました!

[[271164]]人類史上初のプログラム可能なメモリスタ コンピュータが誕生しました。音声コマン...