「悪意のあるコード解析の実践」実験 - Labs-09

「悪意のあるコード解析の実践」実験 - Labs-09

「Malicious Code Analysis Practice」に実験を記録し、関連リンクを提供します。

Labs-09-01 実験

静的解析:

1. シェルを確認します。シェルはありません。
ここに画像の説明を挿入します
2. インポート テーブルを確認します。
KERNEL32.dll、(ファイルの読み取り、コピー、作成および変更、ファイル名の取得とファイルの削除、プロセスの作成、文字列の比較、システム バージョン情報の取得)
ADVAPI32.dll 、(サービスの作成と削除、レジストリの作成、変更、削除)
SHELL32.dll、(システムコマンドをリモート実行)
WS2_32.dll、(ネットワーク接続とデータ送信を実行)
ここに画像の説明を挿入します
ここに画像の説明を挿入します
3. 文字列解析: 接続されている可能性のある URL が表示されます。 a システム パスは、他の悪意のあるファイルを保存するために使用される可能性があります。-cc、-re、-in はコマンド ライン パラメータに似ています。
ここに画像の説明を挿入します

IDA分析

1) IDA 解析を開き、全体のフローチャートを観察します。ジャンプはプログラムのパラメーターに基づいて行われることがわかります。デフォルトのパラメーターのみがある場合 (つまり、プログラムをダブルクリックした場合)、プログラムのロジックは非常に単純で特別なコードは実行されません; もう 1 つのマルチパラメータ分岐のロジックはより複雑です 1 つずつ分析してみましょう: 2) 左側の論理分岐は指定されたパラメータを取得して分析し
ここに画像の説明を挿入します
ますキー値が存在しない場合は直接関数を呼び出して自身を削除し、キー値が存在する場合は sub_402360 関数を呼び出して終了します。
ここに画像の説明を挿入しますここに画像の説明を挿入します
3) sub_402360 関数を分析のために追跡し、sub_401280 と sub_402020 の 2 つの関数だけが呼び出される無限ループがあることを確認します 4) まず sub_401280 を分析し、この関数が指定されたレジストリの下のキーと値のペアを取得することを確認し
ここに画像の説明を挿入します
ます5) 次に、
ここに画像の説明を挿入します
sub_402020 関数を分析し、この関数がバックドアによって実行される関数であることを確認します。これには、「スリープ」、「アップロード」、「ダウンロード」、「cmd」などの命令が含まれます。関数 sub_401E60 を通じて取得されます。
ここに画像の説明を挿入します
ここに画像の説明を挿入しますここに画像の説明を挿入します
ここに画像の説明を挿入しますここに画像の説明を挿入します
6) 次に、関数 sub_401E60 を追跡して分析すると、sub_401AF0 関数が非常に疑わしいことがわかります。関数に渡されたパラメーターには、ホットや名前などのキーワードが含まれています。この関数にはネットワーク データ送信が含まれている可能性があると推測されます。
ここに画像の説明を挿入します
7) この関数をたどると、これがネットワーク データの送受信関数であることがわかります。ネットワーク データ パケットの関連パラメータは、前の関数 sub_401470 および sub_401D80 を通じて、指定されたレジストリのキー値から取得されます。
ここに画像の説明を挿入します
8) 右分岐で関数 sub_402510 の呼び出しが見つかりました。この関数の呼び出しは、次の論理ジャンプに直接影響します。さらに分析した結果、この関数はプログラム実行パスワードの検出関数であることがわかりました。パラメーターに入力された文字列は次のとおりです。 1 つずつ比較して決定します。 次のジャンプ ロジック:
i) 最初にパスワードの長さが 4 であるかどうかを確認し、次に最初の桁が 'a'、2 番目の桁が 'b'、3 番目の桁が 'c であるかどうかを確認します。 '、および 4 番目のビットは 'd' です。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
9) ロジックに基づくさらなる分析に基づいて、プログラムはコマンド ラインに入力された別のパラメーターに従って異なるコードを実行することがわかりました。「-in」、「-re」、「-c」といういくつかのモードがあります。 ', '-cc'
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
10) "-in" モジュールを分析します。このモジュールはパラメーターの数を判断しますが、パラメーターの数が 3 と 4 の 2 つの分岐で同じ関数が呼び出されます。分析後、次のことができます。関数を決定する 悪意のあるプログラムのインストール コード部分の名前を Func_install に変更します。
ここに画像の説明を挿入します
- 関数を選択し、F5 キーで疑似コード分析を実行すると、変更されたコードがサービスを作成し、プログラム自体をシステム ディレクトリ ファイルにコピーすることがわかります。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
- ただし、このコードの分岐で関数 sub_4015B0 が呼び出されており、関数を実行した後、この関数によって変更された新しくコピーされたファイルのタイムスタンプがシステム ファイルと同じであることがわかります。
ここに画像の説明を挿入します
- 同時に、このコードは次のモジュールにジャンプして sub_401070 関数を呼び出し、不審な文字列「60」、「80」、および「http://www.practicalmalwareanalyss.com」がパラメータとして表示されます。ここに画像の説明を挿入します
- この関数に従って分析した結果、この関数はレジストリ キー "HKLM\SOFTWARE\Microsoft\XPS" の "構成" キーを作成し、対応するキーの値を入力パラメータ、つまり上記の値に変更することがわかりました。弦。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
11) 「-re」モジュールを分析します。「-in」モジュールと同様に、このモジュールもパラメータの数を決定します。3 つのパラメータと 4 つのパラメータは異なるロジックにジャンプしますが、最終的には同じ関数が呼び出されます。 sub_402900、右側の関数は、sub_402900 を呼び出す前に sub_4025B0 関数も呼び出します。この関数は非常に単純で、左側の関数 sub_402900; の入力パラメータを取得するために、現在のプログラムの実行の絶対パスを取得するために使用されます。 、パラメーターはコマンド ラインから入力されます。つまり、2 つのブランチはコマンド ラインの入力パラメーターの数に応じて呼び出し関数 sub_402900 のパラメーターを取得します。
ここに画像の説明を挿入します
- 分析のために関数 sub_402900 を追跡します。この関数は、受信したサービス名に従ってプログラムによって作成されたサービスを削除し、同時に指定されたパスに従ってプログラム自体を削除することがわかります。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
12) 「-c」モジュールを分析します。このモジュールには 2 つの論理分岐があり、1 つは「-cc」モジュールを指します。ここでもう 1 つのモジュールを分析します。このモジュールには 7 つのパラメータが必要です。同時に、この関数はsub_401070 関数は、指定されたキー値を変更します。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
13) 「-cc」モジュールを再度分析すると、いくつかの自己削除された関数呼び出しロジック モジュールに加えて、別のロジック ブランチが関数 sub_401280 および sub_402E7E を呼び出します。
ここに画像の説明を挿入します

  • このうち、sub_401280 は 4) で解析したもので、この関数は指定された登録項目の下のキーと値のペアを取得し、指定されたキャッシュ領域に配置します。
  • もう 1 つの関数 sub_402E7E は、IDA によってシステム関数として分類されており、入力パラメータは文字列と 4 つの変数であり、文字列出力関数である printf 関数の形式によく似ています。
    ここに画像の説明を挿入します
    14) この時点で、悪意のあるプログラムの分析は基本的に終了しますが、悪意のあるプログラムの分析については、詳細には立ち入らないように注意してください。
    15) 次にまとめてみましょう:
    • この悪意のあるプログラムをインストールするにはコマンド ライン「-in」が必要で、インストールにはパスワード「abcd」が必要です。
    • 悪意のあるプログラムは、インストールには「-in」、悪意のあるプログラムを完全に削除するには「-re」、レジストリの印刷には「-cc」、レジストリの構成には「-c」というさまざまな命令を実行することもできます。
    • インストールが成功すると、この悪意のあるプログラムは自分自身を指定されたシステム ディレクトリにコピーし、自動起動するサービスを作成します。
    • さらに、プログラムは C&C と通信して任意のコマンドを実行するためのバックドアも作成します。

質問

  1. 自動的にインストールするコードを取得するにはどうすればよいですか?
    回答: コマンド ラインを使用してパラメータ「-in」とパスワード「abcd」を入力します。
  2. この悪意のあるコードのコマンド ライン オプションは何ですか? どのようなパスワードを要求されるのでしょうか?
    回答:悪意のあるプログラムは、インストールには「-in」、悪意のあるプログラムの完全な駆除には「-re」、レジストリの印刷には「-cc」、悪意のあるコードの更新構成には「-c」など、さまざまな命令を実行することもできます。 ; 要件 パスワードは「abcd」です。
  3. OllyDbg を使用してこの悪意のあるコードに永続的にパッチを適用し、指定されたコマンド ライン パスワードを必要としないようにするにはどうすればよいですか?
    回答:検査部分を直接変更するだけで、検査ステップは省略できます。
  4. この悪意のあるコードのシステムベースの特徴は何ですか?
    回答: レジストリ キー "HKLM\SOFTWARE\Microsoft\XPS" を指定する "構成" キー" が作成されます。サービスも作成されます。サービスの名前は、インストール中に渡されたパラメータによって決まります。さらに、また、プログラムはそれ自体を Windows システム ディレクトリに割り当てます。
  5. この悪意のあるコードは、ネットワーク コマンドを介してどのようなさまざまなアクションを実行しますか?
    回答: 「スリープ」、「アップロード」、「ダウンロード」、「cmd」、および「何もしない」はネットワーク コマンドを通じて実行できます。
  6. この悪意のあるコードにはネットワーク特性がありますか?
    回答: 指定されたサイトに対して http (HTTP/1.0 GET) リクエストが行われます。デフォルトのサイトは「http://www.practicaolmalwareanalysis.com」です。

Labs-09-02 実験

静的解析:

Labs-09-03 実験

静的解析:

1. シェルを確認します。シェルはありません
ここに画像の説明を挿入します
。 2. インポート テーブルを確認します。

  • KERNEL32.dll、(ファイルの読み取り、コピー、作成および変更、ファイル名および
  • ファイルの削除、プロセスの作成、文字列の比較、システムのバージョン情報の取得)
  • ADVAPI32.dll、(サービスの作成と削除、レジストリの作成、変更、削除)
  • SHELL32.dll、(システムコマンドをリモートで実行)
  • WS2_32.dll、(ネットワーク接続およびデータ転送用)

ここに画像の説明を挿入します
ここに画像の説明を挿入します
3. 文字列分析: 接続されている可能性のある URL が表示されます。システム パスは、他の悪意のあるファイルの保存に使用される可能性があります。-cc、-re、および -in はコマンド ライン パラメーターのようなものです。
ここに画像の説明を挿入します
4. IDA分析

  1. IDA 解析を開いて全体のフローチャートを観察すると、ジャンプはプログラムのパラメーターに基づいて行われることがわかります。デフォルトのパラメーターのみがある場合 (つまり、プログラムをダブルクリックした場合)、プログラムは非常に単純で特別なコードの実行はありませんが、もう 1 つはパラメータ分岐のロジックがより複雑で、1 つずつ分析できます。
    ここに画像の説明を挿入します
  2. 左側の論理ブランチは指定されたレジストリを取得して解析し、キー値が存在しない場合は直接関数を呼び出して自身を削除し、存在する場合はsub_402360関数を呼び出して終了します。
    ここに画像の説明を挿入しますここに画像の説明を挿入します
  3. sub_402360 関数を追跡して分析した結果、sub_401280 と sub_402020 の 2 つの関数だけが呼び出される無限ループがあることがわかりました。

ここに画像の説明を挿入します
4) まず sub_401280 を分析し、この関数が指定されたレジストリでキーと値のペアを取得し、指定されたキャッシュに入れることを確認します。 5) 次に sub_402020 関数を分析し、この関数がバックドアによって実行される関数であることを確認します
ここに画像の説明を挿入します
。 「スリープ」、「アップロード」、「ダウンロード」、「cmd」およびその他の命令。取得される命令は関数 sub_401E60 を通じて取得されます。
ここに画像の説明を挿入します
ここに画像の説明を挿入しますここに画像の説明を挿入します
ここに画像の説明を挿入しますここに画像の説明を挿入します
6) 次に、関数 sub_401E60 を追跡して分析すると、sub_401AF0 関数が非常に疑わしいことがわかります。関数に渡されたパラメーターには、ホットや名前などのキーワードが含まれています。この関数にはネットワーク データ送信が含まれている可能性があると推測されます。
ここに画像の説明を挿入します
7) この関数をたどると、この関数がネットワーク データの送受信関数であることがわかります。ネットワーク データ パケットの関連パラメータは、前の関数 sub_401470 および sub_401D80 を通じて、指定されたレジストリのキー値から取得されます。
ここに画像の説明を挿入します
8) 右分岐で関数 sub_402510 の呼び出しが見つかりました。この関数の呼び出しは、以下のロジック ジャンプに直接影響します。さらに分析した結果、この関数はプログラム実行パスワードの検出関数であることがわかりました。パラメーターに入力された文字列は次のとおりです。 1 つずつ比較して次のジャンプ ロジックを決定します。

  • まずパスワードの長さが 4 桁であるかどうかを確認し、次に 1 桁目が「a」、2 桁目が「b」、3 桁目が「c」、4 桁目が「d」であるかどうかを確認します。

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
9) ロジックに基づくさらなる分析に基づいて、プログラムはコマンド ラインに入力された別のパラメーターに従って異なるコードを実行することがわかりました。「-in」、「-re」、「-c」といういくつかのモードがあります。 '、'-cc'

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
10) 「-in」モジュールを分析します。このモジュールはパラメーターの数を判断しますが、パラメーターの数が 3 と 4 の 2 つの分岐で同じ関数が呼び出されます。分析後、インストール用の関数を決定できます。悪意のあるプログラムのコード部分を削除し、名前を Func_install に変更します。

ここに画像の説明を挿入します

  • 関数を選択し、F5キーで疑似コード解析を行うと、コードを変更するとサービスが作成され、プログラム自体がシステムディレクトリファイルにコピーされることが分かります。
    ここに画像の説明を挿入します
    ここに画像の説明を挿入します
    ここに画像の説明を挿入します
    ここに画像の説明を挿入します
  • ただし、このコードの分岐には関数 sub_4015B0 が含まれており、この関数を実行したところ、この関数によって変更された新しくコピーされたファイルのタイムスタンプがシステム ファイルと同じであることがわかりました。
    ここに画像の説明を挿入します
  • 同時に、このコードは次のモジュールにジャンプして sub_401070 関数を呼び出しますが、同時に不審な文字列「60」、「80」、「http://www.practicalmalwareanalyss.com」がパラメータとして表示され、関数に渡されます。
    ここに画像の説明を挿入します
  • この関数に従って分析した結果、この関数はレジストリ キー "HKLM\SOFTWARE\Microsoft\XPS" の "構成" キーを作成し、対応するキーの値を入力パラメータ、つまり上記の文字列に変更することがわかりました。 。
    ここに画像の説明を挿入します
    ここに画像の説明を挿入します
    ここに画像の説明を挿入します
  1. 「-re」モジュールを分析すると、「-in」モジュールと同様に、このモジュールもパラメータの数を決定します。3 つのパラメータと 4 つのパラメータは異なるロジックにジャンプしますが、最終的には同じ関数 sub_402900 が呼び出されます。右側の関数は、sub_402900 を呼び出す前に sub_4025B0 関数も呼び出します。この関数は非常に単純で、現在のプログラムの実行の絶対パスを取得して関数 sub_402900 の入力パラメータを取得するために使用されます。一方、左側の部分では、パラメータはコマンド ライン入力によって提供されます。つまり、2 つのブランチはコマンド ライン入力パラメータの数に基づいて呼び出し関数 sub_402900 のパラメータを取得します。
    ここに画像の説明を挿入します
  • 分析のために関数 sub_402900 を追跡します。この関数は、受信サービス名に従ってプログラムによって作成されたサービスを削除し、同時に指定されたパスに従ってプログラム自体を削除することがわかります。
    ここに画像の説明を挿入します
    ここに画像の説明を挿入します
    ここに画像の説明を挿入します
  1. 「-c」モジュールを分析します。このモジュールには 2 つの論理分岐があり、1 つは「-cc」モジュールを指します。ここでもう一方のモジュールを分析します。このモジュールには 7 つのパラメータが必要です。同時に、この関数は sub_401070 関数も呼び出します指定されたキーの値を変更します。
    ここに画像の説明を挿入します
    ここに画像の説明を挿入します
  2. 「-cc」モジュールを再度分析すると、いくつかの自己削除された関数呼び出しロジック モジュールに加えて、別のロジック ブランチが関数 sub_401280 および sub_402E7E を呼び出しています。
    ここに画像の説明を挿入します
  • このうち、sub_401280 は 4) で解析したもので、この関数は指定された登録項目の下のキーと値のペアを取得し、指定されたキャッシュ領域に配置します。
  • もう 1 つの関数 sub_402E7E は、IDA によってシステム関数として分類されており、入力パラメータは文字列と 4 つの変数であり、文字列出力関数である printf 関数の形式によく似ています。
    ここに画像の説明を挿入しますここに画像の説明を挿入します

5. この時点で、悪意のあるプログラムの分析は基本的に終了しますが、悪意のあるプログラムの分析については、詳細には立ち入らないように注意してください。

6. 次にまとめてみましょう。

  • 1) この悪意のあるプログラムをインストールするにはコマンド ライン「-in」が必要で、インストールにはパスワード「abcd」が必要です。
  • 2) 悪意のあるプログラムは、インストールには「-in」、悪意のあるプログラムの完全な削除には「-re」、レジストリの印刷には「-cc」、レジストリの構成には「-c」というさまざまな命令を実行することもできます。
  • 3) インストールが成功すると、この悪意のあるプログラムは指定されたシステム ディレクトリに自分自身をコピーし、自動起動するサービスを作成します。
  • 4) さらに、プログラムは C&C と通信し、任意のコマンドを実行するためのバックドアも作成します。

質問

  1. 自動的にインストールするコードを取得するにはどうすればよいですか?
    回答: コマンド ラインを使用してパラメータ「-in」とパスワード「abcd」を入力します。
  2. この悪意のあるコードのコマンド ライン オプションは何ですか? どのようなパスワードを要求されるのでしょうか?
    回答: 悪意のあるプログラムは、インストールには「-in」、悪意のあるプログラムの完全な駆除には「-re」、レジストリの印刷には「-cc」、悪意のあるコードの更新構成には「-c」など、さまざまな命令を実行することもできます。 ; 要件 パスワードは「abcd」です。
  3. OllyDbg を使用してこの悪意のあるコードに永続的にパッチを適用し、指定されたコマンド ライン パスワードを必要としないようにするにはどうすればよいですか?
    回答: まず IDA でパスワード検証後のジャンプ アドレスを見つけてから、それを OD で開き、指定された場所を見つけて、逆アセンブリ コードを直接変更して次の論理部分にジャンプし、バイナリ ファイルを保存します。
  4. この悪意のあるコードのシステムベースの特徴は何ですか?
    回答: レジストリ キー "HKLM\SOFTWARE\Microsoft\XPS" を指定する "構成" キー" が作成されます。サービスも作成されます。サービスの名前は、インストール中に渡されたパラメータによって決まります。さらに、また、プログラムはそれ自体を Windows システム ディレクトリに割り当てます。
  5. この悪意のあるコードは、ネットワーク コマンドを介してどのようなさまざまなアクションを実行しますか?
    回答: 「スリープ」、「アップロード」、「ダウンロード」、「cmd」、および「何もしない」はネットワーク コマンドを通じて実行できます。
  6. この悪意のあるコードにはネットワーク特性がありますか?
    回答: 指定されたサイトに対して http (HTTP/1.0 GET) リクエストが行われます。デフォルトのサイトは「http://www.practicaolmalwareanalysis.com」です。

おすすめ

転載: blog.csdn.net/weixin_39561364/article/details/109226822
おすすめ