
レッドチームおよびペネトレーションテストのための対話型コマンドプロンプトです。proxychainsを介してSOCKS4/5プロキシ経由でコマンドを自動的に送信します。オプションのCobalt Strike連携により、チームサーバーからビーコンのSOCKS4/5プロキシを取得します。アクティビティはローカルCSVファイルと(設定されている場合は)Cobalt Strikeチームサーバーに自動的に記録されます。
レッドチーム演習やペネトレーションテストのためのインタラクティブなコマンドプロンプトです。proxychainsを介してSOCKS4/5プロキシ経由でコマンドを自動的に送信します。オプションのCobalt Strike連携により、チームサーバーからビーコンのSOCKS4/5プロキシを取得します。アクティビティをローカルのCSVファイルとCobalt Strikeチームサーバー(設定されている場合)に自動的に記録します。
RedShellは内部でproxychainsを使用しているため、TCPトラフィックのみがプロキシされることに注意してください。
RedShellはPython 3.8以上で動作します。
依存関係のインストール:
pip3 install -r requirements.txt
proxychains-ngのインストール (https://github.com/rofl0r/proxychains-ng):
apt install proxychains4
RedShellはCobalt Strikeに依存しなくなりました。ただし、Cobalt Strike統合を使用する場合は、RedShellと同じホストにCSクライアントをインストールする必要があります。また、agscriptラッパーを実行可能にします:
chmod +x agscript.sh
RedShellの起動:
$python3 redshell.py
____ _______ __ ____
/ __ \___ ____/ / ___// /_ ___ / / /
/ /_/ / _ \/ __ /\__ \/ __ \/ _ \/ / /
/ _, _/ __/ /_/ /___/ / / / / __/ / /
/_/ |_|\___/\__,_//____/_/ /_/\___/_/_/
Logging to: /home/user/.redshell/redshell_2022_08_22_13_00_13.csv
redshell >
ヘルプの表示:
redshell > help
Documented commands (use 'help -v' for verbose/'help <topic>' for details):
===========================================================================
beacon_exec cs_connect cs_status help pwd socks
cd cs_disconnect cs_use_pivot history quit
config cs_load_config exec log set
context cs_pivots exit proxy_exec shell
オプションの設定:
redshell> set option VALUE
RedShellは、beacon_exec、proxy_exec、exec、logコマンドを使用してアクティビティを自動的に記録します。ログ記録は起動時に自動的に初期化され、ログファイルは~/.redshellに書き込まれます。
Cobalt Strikeにログを記録するには、チームサーバーに接続し、ピボットを選択し、beacon_execコマンドを使用します。
RedShellはproxychains-ngとカスタムのproxychans設定ファイルを使用します。設定ファイルの変更とコマンドのプロキシはその場で処理されます。
Cobalt Strikeを介してプロキシするには、チームサーバーに接続し、ピボットを選択し、beacon_execコマンドを使用します。詳細はCobalt Strikeのセクションを参照してください。
カスタムのsocksバージョン4または5プロキシはsocksコマンドで設定できます。
redshell > socks -h
usage: socks [-h] [-u SOCKS5_USER] [-p SOCKS5_PASS] {socks4,socks5} ip_address socks_port
Use a custom socks4/5 server
positional arguments:
{socks4,socks5}
ip_address
socks_port
options:
-h, --help show this help message and exit
-u SOCKS5_USER
-p SOCKS5_PASS
RedShellは、選択時にSOCKSプロキシへの接続と認証(該当する場合)を自動的に検証します(socksまたはcs_use_pivotコマンドを使用します)。これは次のコマンドで無効にできます: set check_socks false
RedShellのコンテキストはアクティビティログの重要な側面です。コンテキストを使用すると、ターゲットネットワーク内でアクティビティを実行するソースホストの視点(アクティビティログ内)を設定できます。アクティビティログには次のコンテキスト属性を含めることができます: IPアドレス、DNS名、NetBIOS名、ユーザー名、プロセスID。IPアドレスのみ必須です。
コンテキストに関する注意:
socksコマンドでsocksプロキシを設定した後、contextコマンドでコンテキストの詳細を追加します。
RedShell> context -h
usage: context [-h] [-d DNSNAME] [-n NETBIOSNAME] [-u USERNAME] [-p PID] ip_address
Set a custom context (Source IP/DNS/NetBIOS/User/PID) for logging
positional arguments:
ip_address Source IP Address
optional arguments:
-h, --help show this help message and exit
-d DNSNAME, --dnsname DNSNAME
DNS Name
-n NETBIOSNAME, --netbiosname NETBIOSNAME
NetBIOS Name
-u USERNAME, --username USERNAME
User Name
-p PID, --pid PID Process ID
チームサーバー上でピボットを使用している場合、コンテキスト値はビーコンに基づいて自動的に設定されます。
コマンドプロンプトはコンテキスト変数(user@host)で自動的に更新されます。
次のRedShellコマンドはアクティビティログに記録されます:
beacon_exec - ビーコンsocksプロキシを介してコマンドを実行し、同時にチームサーバーにログを記録します。proxy_exec - カスタムsocksプロキシを介してコマンドを実行し、同時にローカルファイルにログを記録します。exec - コマンドを実行し、ローカルファイルにログを記録します。log - ローカルファイルに手動ログエントリを追加します。
Cobalt Strike接続オプションの設定:
redshell > set cs_host 127.0.0.1
redshell > set cs_port 50050
redshell > set cs_user somedude
チームサーバーに接続(チームサーバーのパスワードを求められます):
redshell > cs_connect
例:

または設定ファイルからロードします。注: チームサーバーのパスワードは設定ファイルから読み取られません。RedShellがチームサーバーのパスワードを要求し、その後自動的に接続します。
$ cat config.txt
cs_host=127.0.0.1
cs_port=12345
cs_user=somedude
cs_directory=/path/to/cobaltstrike/install
redshell > cs_load_config config.txt
利用可能なプロキシピボットを表示:
redshell > cs_pivots
例:

プロキシピボットを選択(注: チームサーバーへの接続が確立された後にのみ設定できます):
redshell > cs_use_pivot 2
SOCKS5 pivot requires authentication.
Enter SOCKS5 user: username
Enter SOCKS5 password:
Cobalt Strikeのステータスを確認:
redshell > cs_status
例:

ビーコンsocksプロキシを介してコマンドを実行します。これらは現在のユーザーのコンテキストで、またはsudoを介して実行できます。コマンドに'proxychains'を指定するのはオプションです。コマンドは強制的にproxychainsを通ります。MITRE ATT&CK戦術IDはオプションです。
redshell > beacon_exec -h
usage: beacon_exec [-h] [-t TTP] ...
Execute a command through beacon socks proxy and simultaneously log it to the teamserver.
positional arguments:
command Command to execute through the proxy and log.
optional arguments:
-h, --help show this help message and exit
-t TTP, --ttp TTP MITRE ATT&CK Tactic IDs. Comma delimited to specify multiple.
example:
beacon_exec -t T1550.002,T1003.002 cme smb 192.168.1.1 --local-auth -u Administrator -H C713B1D611657D0687A568122193F230 --sam
例:

RedshellとCSのインストールディレクトリオプションに関する注意 - スクリプトは自身の場所とCobalt Strikeの場所を知る必要があります。問題が発生した場合は、ディレクトリを適切に設定してください:
redshell > set redshell_directory /opt/redshell
redshell > set cs_directory /opt/cobaltstrike
*execコマンドで使用するパスワードに関する注意: パスワード内の特殊文字はシェルのメタ文字として解釈され、コマンドが失敗する可能性があります。これを回避するには、パスワードオプションを設定し、'$password'で呼び出します。例:
redshell > set password Test12345
password - was: ''
now: 'Test12345'
redshell > beacon_exec cme smb 192.168.1.14 --local-auth -u administrator -p $password --shares
RedShellにはファイルシステムを移動するためのコマンドが含まれています:
redshell > cd /opt/redshell/
redshell > pwd
/opt/redshell
追加のコマンドはshellコマンドまたは'!'ショートカットを使用して実行できます:
redshell > shell date
Mon 29 Jul 2019 05:33:02 PM MDT
redshell > !date
Mon 29 Jul 2019 05:33:03 PM MDT
コマンドは追跡され、historyコマンドでアクセスできます:
redshell > history
1 load_config config.txt
2 status
3 help
RedShellにはタブ補完とctrl + lによる端末ウィンドウのクリア機能も含まれています。
Datetime,IP Address,DNS Name,NetBIOS Name,User,PID,Activity,TTPs
2021/09/21 14:22:32 +0000,192.168.56.106,,WINDEV,USER,7312,[PROXY] cme smb 192.168.56.105,
注:
このプロジェクトはApache 2.0オープンソースライセンスの条件に基づいてライセンスされています。完全な条件についてはLICENSEを参照してください。