0x00はじめに
レッドチームのSIEMには2つの主な目標があります。
複数のTeamServerからすべての関連する操作ログを収集および強化する集中管理センターを作成することにより、Redチーム担当者の可用性と概要を強化します。これは、運用の歴史的検索や、ブルーチームなどの運用のプレビュー可能なビューを提供するのに役立ちます。特に、マルチセナリオ、マルチタイムサーバー、マルチメンバー、マルチタイムオペレーションに適しています。また、すべてのスクリーンショット、IOC、キーボード出力などを表示する簡単な方法。
中央の管理センターから青いチームを発見して、リダイレクターからすべてのトラフィックログを収集して充実させます。特定のクエリを使用して、ブルーチームがインフラストラクチャを調査していることを検出することが可能になりました。
プロジェクトアドレス:https://github.com/outflanknl/redelk
0x01アーキテクチャの概要
以下は、Redelkの仕組みの概要です。
Redelkは、典型的なコンポーネントFileBeat(Transfer)、Logstash(Filter)、ElasticSearch(ストレージ)、およびKibana(ビュー)を使用します。 RSYNCは、TeamServerデータの2回目の同期に使用されます:ログ、キーボード入力、スクリーンショットなど。NGINXはキバナの認証に使用され、スクリーンショット、ビーコンログ、キーボード入力をオペレーターブラウザーで簡単に提供します。
Pythonスクリプトのセットは、青いチームの検出と同様に、ログデータを濃縮するために使用されます。
0x02インストールと構成
インストールを実行するには、いくつかの重要な手順が必要です。各ステップを実行する必要があります。
1.キーとパッケージの生成リダイレクター/チームサーバーとリデルクサーバー間のファイルビートトラフィックを暗号化するためのTLSキーペアを生成する必要があります。
./certs/config.cnfを構成して、TLS証明書の正しい詳細を含めるようにします。このファイルに正しいIP(IP.1)またはDNS(DNS.1)名をリストすることが非常に重要です!これらには、RedelkサーバーにIPまたはDNSが必要です。それ以外の場合、TLSの設定は機能せず、Logstashはログに隠されたエラーが発生し、重度に起動してクラッシュします。
実行されたら、実行:intialty-setup.sh ./certs/config.cnfこれにより、リダル、チームサーバー、エルクサーバー間の安全な通信に必要な証明書を生成し、エルクサーからチームサーバーまでの安全なRSYNC認証のためのSSHキーペアを生成するCAが作成されます。
また、各コンポーネントのインストールパッケージを含むTeamServers.tgz、redirs.tgz、およびelkserver.tgzも生成します。これらのTGZファイルを関連システムにコピーする必要があります(TeamServers、Redirs-En、Redelk Centerノードとして使用されるシステム)
この初期設定は、新しいTLSキーを使用する必要がある場合にのみ再実行する必要があります。この場合は、/certs/redelkca.* and ./certs/elkserver.*ファイルとRerun initial-setup.sh ./certs/config.cnfを削除します。
2。リダイレクターの設定の構成は、Haproxyサーバーのみをサポートします
Red Team Infrastructureの展開プロセスの一環として、Redirs.tgzをコピーおよび解凍リダイレクター。行:install-redir.sh $ filebeatid $ scenarioname $ ip/dns:port
$ filebeatidは、filebeatのリダイレクターの識別子です。
$ sinearionameは、攻撃シナリオのリダイレクターの名前です。
$ ip/dns:portは、redelkサーバーのIP/DNSとなるFileBeatログによって送信されたIPまたはDNS名とポート情報です。デフォルトのポート(TCP/5044)が使用されていても、パラメーターとして提供する必要があります。
このスクリプトはタイムゾーン(デフォルトはヨーロッパ/アムステルダムですが、スクリプトにこれを変更できます)、ファイルビートと依存関係をインストールし、必要な証明書をインストールし、ファイルビート構成を変更し、ファイルビートを開始します。
(1).Haproxy DetultedRedelkは、より詳細な情報を記録するために、デフォルトのHaproxy構成を変更する必要があります。
「デフォルト値」セクション:
log-format frontend:%f/%h/%fi:%fp \ backend:%b \ client:%ci3:%cp \ gmt:%t \ useragent:%[Capture.Req.hdr(1)] request:%r
フロントエンドセクション:
Capture Request Len 40000を宣言します
HTTP-Request Capture Req.Body ID 0
キャプチャリクエストヘッダーユーザーエージェントレン512
(2).haproxy構成ファイルの例次の構成は、Haproxyの実行例です。これは、デフォルトのコバルトストライク構成ファイルで動作します
ログ127.0.0.1 local2 debug
Maxconn 2000
ユーザーHaproxy
グループハプロキシ
デフォルト
ロググローバル
モードHTTP
オプションhttplog
オプションdontlognull
再試行3
オプションRedispatch
タイムアウト接続5000
タイムアウトクライアント10000
タイムアウトサーバー10000
log-format frontend:%f/%h/%fi:%fp \ backend:%b \ client:%ci3:%cp \ gmt:%t \ useragent:%[Capture.Req.hdr(1)] request:%r
フロントエンドwww-https
オプションhttp-buffer-request
Capture Request Len 40000を宣言します
HTTP-Request Capture Req.Body ID 0
キャプチャリクエストヘッダーユーザーエージェントレン512
log /dev /log local2 debug
バインド:443 V4V6 SSL CRT/ETC/LETSENCRYPT/LIVE/HAPROXY.PEM
reqadd x-orwarded-proto: \ https
ACL PATH_CS PATH -M BEG /DPIXEL
acl path_cs path -m beg /submit.php
acl path_cs path_reg ^/[0-z] [0-z] [0-z] [0-z] [0-z] $
path_csの場合、use_backend cobaltstrike-https
default_backend www-decoy
タイムアウトクライアント1M
フロントエンドwww-http
モードHTTP
オプションhttp-buffer-request
Capture Request Len 40000を宣言します
HTTP-Request Capture Req.Body ID 0
キャプチャリクエストヘッダーユーザーエージェントレン512
log /dev /log local2 debug
バインド:80 V4v6
reqadd x-orwarded-proto: \ http
ACL PATH_CS PATH -M BEG /DPIXEL
acl path_cs path -m beg /submit.php
acl path_cs path_reg ^/[0-z] [0-z] [0-z] [0-z] [0-z] $
use_backend cobaltstrike-http if path_cs
default_backend www-decoy
タイムアウトクライアント1M
バックエンドwww-decoy
モードHTTP
http-requestセットヘッダーホストlocalhost
サーバーlocalhost localhost:80
バックエンドCobaltstrike-https
Option Forwardfor
Server TeamServer $ {fqdnteamServer} :443 Check SSL Berify None
バックエンドCobaltstrike-http
Option Forwardfor
サーバーTeamServer $ {fqdnteamServer} :80
3. TeamServerのインストールと構成Red Team Infrastructure展開プロセスの一環として、Cobalt StriketeamServerのTeamServers.tgzをコピーおよび解凍します。実行:install-teamserver.sh $ filebeatid $ sinearioname $ ip/dns:port
$ filebeatidは、FileBeatのTeamServerの識別子です。
$ Scenarionameは、TeamServerが攻撃スキームに使用する名前です。
$ ip/dns:portは、redelkサーバーのIP/DNSとなるFileBeatログによって送信されたIPまたはDNS名とポート情報です。デフォルトのポート(TCP/5044)が使用されていても、パラメーターとして提供する必要があります。
filebeatがすでにインストールされている場合、このスクリプトは警告を発行します(ElkとFilebeatが同じバージョンとほぼ同じバージョンであることがあるため、これは重要です)、タイムゾーン(デフォルトはヨーロッパ/アムステルダムですが、スクリプトにこれを変更できますが、ファイルビートと依存関係をインストールします)、必要な本をインストールし、ファイルビート構成を修正し、SCPを開始します。 rsync。
4.Redelkのインストールと構成(1)。 Red Team Infrastructureの展開プロセスの一部として、Redelk ServerにElkserver.tgzをコピーおよびDecress elkserver.tgzにインストールします。
実行:install-teamserver.sh(パラメーターは不要)
このスクリプトはタイムゾーン(デフォルトはヨーロッパ/アムステルダムですが、スクリプトにこれを変更できます)、Logstash、Elasticsearch、Kibanaおよび依存関係をインストールし、必要な証明書をインストールし、Logstash構成と必要なカスタム拡張スクリプトを展開し、GEOIPデータベースをダウンロードし、NGINXをインストールし、NGINXを設置し、以前のユーザーを作成しました。 TeamServersは、スクリーンショットサムネイルを作成するためのスクリプトをインストールし、Redelk構成ファイルをインストールし、RedelkタスクのCrontabファイルをインストールし、Geoip Elasticsearchプラグインをインストールし、テンプレートを構成し、Python拡張スクリプトをインストールし、最後にPython Blueチーム検出スクリプトをインストールします。
まだ終わっていません。 /etc/cron.d/redelkにTeamServersの詳細を手動で入力し、/etc/Redelkで構成ファイルを調整する必要があります(以下のセクションを参照)
(2)。 /etc /redelkディレクトリのELKサーバーに構成されている場合、より良いリッチな機能とより良いアラートのために、Redelkインスタンスを調整するために使用できるいくつかのファイルを見つけることができます。必要なものもあり、一部はオプションです
必要な構成:/etc/redelk/alarm.json.conf:アラーム操作に必要な詳細。これには、オンラインサービスのAPIキー(ウイルス合計、IBM X-Forceなど)と、電子メールでアラートを送信するのに必要なSMTPの詳細が含まれます。このファイルに詳細を入力しない場合、Redelkはアラーム機能を使用できません。
提案された構成:/etc/redelk/iplist_redteam.conf:1行ごとに1つのレッドチームのパブリックIPアドレス。 Redチームのメンバーが実施したテストを簡単に識別できます。ここにアドレスを含む設定は、Redirhaproxy-*インデックスの該当するレコードにタグを設定することです。
/etc/redelk/iplist_customer.conf:ターゲットのパブリックIPアドレス、1行ごとに1つ。ここにアドレスを含む設定は、Redirhaproxy-*インデックスに該当するレコードのタグを設定することです。
/etc/redelk/iplist_unkinced.conf:ゲートウェイのパブリックIPアドレスについてはわかりませんが、再度警告を受け取りたくありません。 1行に1つ。ここにアドレスを含む設定は、redirhaproxy-*インデックスに該当するレコードのマークを設定します
/etc/redelk/rogue_useragents.conf:ユーザーエージェントは、C2バックエンドにアクセスする際に既知のエラーがあります。すでにCurl、Python-Urllib、Blue Teamersが使用する他のツールなどのUASの基本リストが含まれています。このリストには、WhatsApp、Skype、SlackなどのインスタントメッセージングツールのUASのリストも含まれています。 C2がIMを使用してアナリスト間で共有する場合に非常に便利です。このリストにUASを追加してください。
/etc/redelk/known_testsystems.conf:既知のテストシステムのビーコン機能。独自のテストシステムに関する情報を追加することができます。 1行に1つ。ここにデータを含む構成は、rups-*インデックスに該当するレコードのマークを設定します。認証をnginxに変更するには、/etc/nginx/htpasswd.usersを変更して、優先資格情報を含めます。または、最初のセットアップ前に/redelk/elkserver/etc/nginx/htpasswd.usersファイルを構成します。
編集することをお勧めしないその他の構成ファイル:/etc/redelk/abusbotnetc2ip.conf:absed.chによってリストされた既知のC2 IPアドレスの自動更新リスト。
/etc/redelk/abussslcert.conf:c2 tls absed.chがリストしたC2 TLS証明書、既知のC2の自動更新ハッシュリスト。
/etc/redelk/roguedomains.conf:複数のソースからの既知の悪いドメインの自動更新リスト。
/etc/redelk/torexitnodes.conf:既知のTor ExitノードIPアドレスの自動更新リスト。
/etc/redelk/known_sandboxes.conf:AVサンドボックスシステムのビーコン特性が知られています。 1行に1つ。ここにデータを含む構成は、rups-*インデックスに該当するレコードのマークを設定します。ますます多くのサンドボックスに完全にランダムな名前があるため、これには本当の関連性がなくなります。
/etc/redelk/redteamdomains.conf:攻撃的なインフラストラクチャで使用されるドメインのリスト。チェックするためにアラームコードが実行されていないため、このファイルは必要ありません。
初期インストール前にこれらのファイルを変更すると、これらの変更は.TGZパッケージに含まれ、将来のインストールに使用できます。これらのファイルは、/redelk/elkserver/etc/redelkにあります。
0x03毎日の使用
Redelkには、2つの主要な使用シナリオがあります。
1。レッドチームの操作の概要(1)。初めてログインし、RedelkサーバーのIPアドレスを参照し、Nginxの資格情報でログインします(デフォルトはRedelk:Redelk)。あなたは今キバナのインターフェースにいます。
ここで2つのことを行う必要がある場合があります。ダッシュボードを表示するか、より詳細なデータを表示して検索します。左サイドバーのボタン(デフォルトのキバナ機能)を使用して、これらのビューを切り替えることができます。
(2).Dashboard左側のダッシュボードアイコンをクリックすると、トラフィックとビーコンの2つのオプションが表示されます
(3)。データを詳細に検索して検索します。 [発見]ボタンをクリックして、データを表示および検索します。完了したら、使用する時間範囲をクリックし、開いたボタンをクリックして、準備されたビューの1つで検索します。
(3).beaconデータ「TimeLineOverView」の検索を選択すると、ビーコンイベントのタイムラインを必要に応じて使用できるCobalt Strikeチームサーバーのデータビューが表示されます。このビューには、タイムスタンプ、テストシナリオ名、ユーザー名、ビーコン、ホスト名、オペレーティングシステム、オペレーティングシステムのバージョンなど、必要な列が必要です。最後に、コバルトストライクからの完全なメッセージが表示されます
この検索を好みに応じて変更できます。また、それはElasticSearchであるため、検索バーを使用してこのインデックス内のすべてのデータを検索できます。
レコードの詳細をクリックすると、詳細が表示されます。可用性の重要な分野は、ビーコンログファイルフィールドです。このフィールドは、レコードの完全なビーコンログファイルにリンクするハイパーリンクです。これにより、ビーコンレコードを大きなウィンドウで表示し、CTRL + Fを使用できます。
(4)。スクリーンショットRedelkは、ターゲットから生成されたすべてのスクリーンショットを簡単に表示する簡単な方法を提供します。 「スクリーンショット」検索を選択して、この詳細を取得します。 2つの大きなユーザビリティコンテンツを追加しました。サムネイルとフル画像のハイパーリンクです。サムネイルはすばやくスクロールして直接印象を与えることができます。通常、スクリーンショットがどのように見えるかを覚えています。
(5)。キーボード入力はスクリーンショットと同じです。すべてのキーボード入力操作を概説するだけで非常に便利です。この検索では、コンテンツの最初の行と、完全なキーボード入力ログファイルへのハイパーリンクが提供されます。
(6).IOCデータすべてのIOCのリストをすばやく取得するために、Redelkは簡単な概要を提供します。このリストを取得するには、「IOCS」で検索するだけです。これにより、ファイルやサービスからのデータなど、Cobalt StrikeのすべてのIOCデータが表示されます。
上部バーのレポートボタンをクリックして、この正確なビューのCSVを生成することにより、このリストをすばやくエクスポートできます。
(7)。 Redelkのダウンロードは、Redチームの実行中にダウンロードした各ファイルを簡単に表示する方法を提供します。 「ダウンロード」を検索することで、この情報を見つけることができます。検索可能なすべての関連するメタデータを含む、すべてのダウンロードされたファイルのリストが利用可能になりました。しかし、さらに重要なことは、実際のファイルをWebブラウザーから直接ダウンロードすることもできます。 Redelkは各TeamServerからすべてのデータを収集するため、これは操作中ずっと各TeamServerからすべてのダウンロードファイルがあることを意味します。コバルトストライククライアントを使用して各TeamServerにログイン(および同期)する必要はなくなりました。
2。ブルーチームの検出(1)。ブルーチームアクティビティを検出するためのaproach:
ElasticSearchに保存されているデータ
オンラインサービスは、OPSECの不適切な構成のためにブルーチームが配置した可能性のある情報を提供します。
(2).ConfigurationファイルFSD
(3)。 FSDを確認してください
0x04フードの使用
Redelkは、典型的なコンポーネントFileBeat(Transfer)、Logstash(Filter)、ElasticSearch(ストレージ)、Kibana(ビュー)を使用します。 RSYNCは、TeamServerデータの2回目の同期に使用されます:ログ、キーボード入力、スクリーンショットなど。NGINXはキバナの認証に使用され、スクリーンショット、ビーコンログ、キーボード入力をオペレーターブラウザーで簡単に提供します。
Pythonスクリプトのセットは、ログデータとブルーチームの検出を濃縮するために使用されます。
詳細については、次のように説明されています。
1.スクリプトELKサーバーのフードの下で表示する場合は、/etc/cron.d/redelkのRedelk Cronファイルを確認してください。 /usr/share/redelk/bin/でいくつかのスクリプトを開始します。いくつかのスクリプトは濃縮のためのもので、他のスクリプトは警告用です。これらのスクリプトの構成は、/etc/redelk/の構成ファイルを介して実行されます。また、Logstashには多くの拡張機能があります(スクリーンショットなどのハイパーリンクを生成するなど)。 /etc/logstash/conf.d/のLogstash構成ファイルから直接確認できます。
2。インストールプロセス中に、すべてのインストール操作が現在の作業ディレクトリのログファイルに記録されます。
TeamServerおよびRedelkサーバーでの操作中にRedelkによって生成されたログ。これらのログは/var/log/redelkで見つけることができます。すべての典型的なElasticSearch、Logstashなどのログとは別に、トラブルシューティングに使用する必要がある場合があります。
Redelkは、典型的なコンポーネントFileBeat(Transfer)、Logstash(Filter)、ElasticSearch(ストレージ)、およびKibana(ビュー)を使用します。 RSYNCは、TeamServerデータの2回目の同期に使用されます:ログ、キーボード入力、スクリーンショットなど。NGINXはキバナの認証に使用されます。
Recommended Comments