Desktop development with C++ ワークロードを選択しますさらに(任意)、より充実したリバースエンジニアリング体験のためにシンボルを設定します:
setx _NT_SYMBOL_PATH c:\Symbols;srv*c:\Symbols*https://msdl.microsoft.com/download/symbols
mkdir \symbols
Visual Studio で PMD.sln を開きます。
setup プロジェクトを選択し、以下のことができることを確認します:
a. プロジェクトをコンパイルできること
b. DebugView++ でデバッグ出力ステートメントを確認できること。
template プロジェクトのコンパイラおよびリンカーフラグを更新して、IAT エントリやその他の PE プロパティを操作します。
a. 動的 API 解決と MSDN ドキュメントに慣れてください。
b. 他に目立つプロパティはありますか? バイナリに対して Strings.exe を実行すると、何か目立つ文字列はありますか?
c. それらを削除/更新できますか?
演習を完了するには、任意のツールを使用してください(例: dumpbin/PE Bear)。scripts\props.py に pefile のラッパーが用意されています(依存関係をインストールしてください)。
VXUG からマルウェアサンプルをいくつかダウンロードします。
a. 良性と悪性の実行ファイルの主な違いは何ですか?
b. 私たちのバイナリと良性の実行ファイルの主な違いは何ですか?
現在使用されている API ハッシングアルゴリズムは fnv1a です。
solution プロジェクトを開き、API ハッシングフレームワークを使用して MessageBoxA を呼び出します。Cisco Webex をダウンロードします (https://www.webex.com/downloads.html)
CiscoCollabHost を見つけて、どの DLL が読み込まれるか確認します
Ghidra で CiscoCollabHost を開き、サイドローディングからコード実行を得るさまざまな方法を特定します
dll_template を編集してターゲットバイナリをサイドロードします。DebugView++ でデバッグ文字列を確認できることを検証します。
dll_template.dll の LastWriteTime と CreationTime をターゲット DLL に合わせて更新します。
ユーティリティプロジェクトをコンパイルして実行します。
a. さらに、ホストシステム上で実行することも検討してください。
特定した DLL を x64/{Debug,Release} ディレクトリにコピーし、ローダーコードを更新します。
API ハッシングフレームワークを使用して、別の関数でシェルコードを実行するように execute_sc を更新します。
クラウドストレージプロバイダーに登録します(例: AWS/CloudFlare)
ペイロードをパッケージ化してアップロードします
a. さらに、ダウンロードアクセスを制限/監査する方法を調査します
VM のスナップショットを取得します
ベース VM に戻し、「配信」シナリオ全体を実行します
.github\workflows\build.yml を更新して、時間を節約するための追加の前処理/後処理を好きなように実行します。アイデアをいくつか示します:
props.py を実行して出力を検証/含めるLastWriteTime と CreationTime の更新をターゲットに合わせて自動化する