EDRの時代には、レッドチームのオペレーターはコンパイル済みのペイロードの使用をやめることができなくなりました。そのため、マルウェアの開発は、あらゆるオペレーターにとって不可欠なスキルになりつつあります。maldevの使用を開始するのは困難に思えるかもしれませんが、実際には非常に簡単です。このワークショップでは、始めるために必要なすべてを紹介します。
このリポジトリには、2022年パリのハックで開催される「MalDevforDummies」ワークショップのスライドとそれに伴う演習が含まれています(追加の会議TBA
⚠ 免責事項:マルウェア開発は、(攻撃的な)セキュリティの分野を促進し、防御を鋭く保つために、有効に使用できるスキルであり、使用する必要があります。このスキルセットを使用して、許可されていないアクティビティを実行する場合は、このワークショップの目的よりも大きなダミーであるため、ここから抜け出す必要があります。
ウイルス対策(AV)およびエンタープライズ検出および応答(EDR)ツールが分単位で成熟するにつれ、レッドチームは時代の先を行くことを余儀なくされています。変更されていないペイロードをディスクにドロップする時代は
execute-assembly終わりました。エンゲージメントを1週間以上持続させたい場合は、ペイロードの作成とマルウェア開発ゲームを強化する必要があります。ただし、この分野から始めるのは困難な場合があり、適切なリソースを見つけるのは必ずしも簡単ではありません。
このワークショップは、この分野の初心者を対象としており、マルウェア開発者としての最初のステップをガイドします。これは主に攻撃的な施術者を対象としていますが、防御的な施術者も参加してスキルセットを広げることを歓迎します。
ワークショップでは、いくつかの理論を検討し、その後、ラボ環境を設定します。現在のスキルセットと対象に対する快適さのレベルに応じて、さまざまな演習を完了することができます。ただし、ワークショップの目的は学習することであり、すべての演習を完了することではありません。マルウェア開発に使用するプログラミング言語は自由に選択できますが、ワークショップ中のサポートは主にC#およびNimプログラミング言語に対して提供されます。
ワークショップでは、独自のマルウェアの作成を開始するために必要な主要なトピックについて説明します。これには以下が含まれます(ただし、これらに限定されません)。
マルウェアの開発を開始するには、ホストマシンで実行される可能性のある防御ツールに煩わされないように、開発マシンが必要になります。私は開発にWindowsを好みますが、LinuxでもMacOSでも同じようにうまくいきます。選択したIDEをインストールします(Visual Studioを使用するC#を除くほとんどすべてにVS Codeを使用してから、選択したMalDev言語に必要なツールチェーンをインストールします。
Windows Defenderを無効にするか、適切な除外を追加することを忘れないでください。そうすれば、ハードワークが隔離されません。
ℹ 注:多くの場合、aptなどのパッケージマネージャーやChocolateyなどのソフトウェア管理ツールを使用して、依存関係のインストールと管理を便利で繰り返し可能な方法で自動化できます。ただし、パッケージマネージャーのバージョンは、実際のものよりも遅れていることが多いことに注意してください。以下は、前述のツールを一度にインストールするためのChocolateyコマンドの例です。choco install -y nim choosenim go rust vscode visualstudio2019community dotnetfx
C#とNimはどちらもコンパイル型言語です。つまり、コンパイラを使用して、ソースコードを選択した形式のバイナリ実行可能ファイルに変換します。コンパイルのプロセスは言語ごとに異なります。
C#コード(
.csファイル)は、直接(
cscユーティリティを使用して)コンパイルすることも、VisualStudio自体を介してコンパイルすることもできます。このリポジトリのほとんどのソースコード(ボーナス演習3のソリューションを除く)は、次のようにコンパイルできます。
ℹ 注:以下のコマンドを「VisualStudio開発者コマンドプロンプト」で実行して、場所がわかるようにしcscてください。ご使用のバージョンのVisualStudioには「x64ネイティブツールコマンドプロンプト」を使用することをお勧めします。
csc filename.exe /unsafe
/optimizeフラグを使用して、コンパイル時の最適化を有効にできます。追加することでコンソールウィンドウを非表示にすること
/target:winexeも、DLLとしてコンパイルすることもでき
/target:libraryます(ただし、コード構造がこれに適していることを確認してください)。
Nimコード(
.nimファイル)は
nim cコマンドでコンパイルされます。このリポジトリのソースコードは、次のようにコンパイルできます。
nim c filename.nim
サイズとストリップのデバッグ情報についてビルドを最適化したい場合(opsecの場合ははるかに優れています!)、次のフラグを追加できます。
nim c -d:release -d:strip --opt:size filename.nim
オプションで、追加してコンソールウィンドウを非表示にすることもできます
--app:gui。
ほとんどのNimプログラムは、WindowsAPIとのインターフェイスを「Winim」と呼ばれるライブラリに依存しています。次のように、パッケージマネージャーを使用してライブラリをインストールでき
Nimbleます(Nimのインストール後)。
nimble install winim
ワークショップのスライドは、開始するために使用できるいくつかのリソースを参照しています。追加のリソースは
README.md、すべての演習のファイルにリストされています。