
DShield Sensor Log Collection with ELK
これは、ISC Storm Center ウェブサイトに Scott Jensen が BACS ペーパーとして最初に公開し、Github で公開されたスクリプトからのフォークであり、大幅な更新版です。
https://github.com/fkadriver/Dshield-ELK
https://isc.sans.edu/diary/DShield+Sensor+Monitoring+with+a+Docker+ELK+Stack+Guest+Diary/30118
これは、DShield-SIEM を分析に使用する方法の良い参考資料です: https://isc.sans.edu/diary/30962/
これは、DShield センサーによるログ収集がどのように行われるかの概要を示しています。
https://github.com/bruneaug/DShield-SIEM/blob/main/Troubleshooting/DShield-SIEM-Flow.png
この Docker は、DShield Honeypot と一緒に使用するために特別に構築されており、ログを収集・解析し、研究目的で検索しやすいようにデータを収集します。推奨されるインストール方法は、DShield センサーを、ネットワーク内または任意のクラウド上の PI Raspbian OS を使用した Raspberry Pi、または Ubuntu 24.04 LTS を実行するシステムにインストールすることです。
注記: 下記の指示に従い、これは別のサーバーにインストールする必要があります。
注記: ELK サーバーコンポーネントを更新するには、次の手順に従ってください。
https://github.com/bruneaug/DShield-SIEM/blob/main/README.md#download-github-update
ユーザー ($) アカウントで Docker をインストールします:````
sudo apt-get install ca-certificates curl gnupg network-manager txt2html
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Note: You may need to take the next line, remove the backlash () and put everythin in a single line in Notepad to run this echo.
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update && sudo apt upgrade
sudo reboot (if update were applied)
sudo apt-get install -y jq docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin pip
sudo systemctl enable docker
sudo systemctl start docker.service
docker サービスが実行されていることを確認してください<br>````
sudo systemctl status docker.service
以下の ELK サーバー名 es01 kibana fleet-server heartbeat logstash filebeat filebeat01 を
IP アドレスとサーバー名の後に /etc/hosts へ追加します:
````
sudo vi /etc/hosts
ELK サーバーの IP アドレスの後に、これを /etc/hosts へ追加してください<br>
127.0.0.1 sensor es01 ...<br>
192.168.25.80 sensor es01 ...<br>````
es01 kibana fleet-server heartbeat logstash filebeat filebeat01
sysctl.conf ファイルを編集します:
````
sudo vi /etc/sysctl.conf
ファイルの末尾に以下を追加します:<br>````
vm.max_map_count=262144
追加して保存します。これはDocker使用時のElasticsearch向けです。
sudo iptables -nL

# DShield ELK の構成とインストール
ユーザー ($) アカウントを使用して、次のコマンドを実行します:<br>````
git clone https://github.com/bruneaug/DShield-SIEM.git
mkdir scripts
mv DShield-SIEM/AddOnScripts/*.sh scripts
chmod 754 scripts/*.sh
cd ~/DShield-SIEM
注記: インストール前に、.env ファイル(ls -la で確認できます)を編集して、任意の変更を加えることができます。
- elastic の現在の デフォルトパスワード は student です
.env 内の Memory Limits は、docker が各 ELK コンテナに割り当てる最大メモリ量です。
Elasticsearch はデフォルトで 3GB ですが、リソースがあれば拡張できます。
.env ファイルを編集して、独自の ELK Stack 用に設定してください。
````
vi .env
- Update the following variables in the **.env** file to match your ELK server DNS information, hostname, IP and default elastic password if you want to change it: <br>
- HOSTNAME="ubuntu"
- DNS_SERVER="9.9.9.9"
- IPADDRESS="192.168.25.231"
- ELASTIC_PASSWORD=student
- ES_MEM = Elasticsearch -> 4g, KB_MEM = Kibana -> 2g
- If you want to change the default nameserver(s) information and your local private network location for the destination address (i.e. DShield sensor mapping - currently set for **Ottawa, Canada**), edit to the following directory for the files before loading docker:<br>````
cd logstash/pipeline
heartbeat.yml を編集して、センサーIP(PIという名前)を自分のセンサーIPに変更します。Kibana heartbeat はサービスの状態をチェックし、利用可能かどうかを判断します。
このIPとホスト名を更新して、ご自身のセンサーを反映してください。
注記: 監視したいセンサーが複数ある場合は、同じ5行をコピーして追加できます。
これは Observability -> Uptime Monitors で確認できます。

この行はセンサーのIPアドレスです。TCP 12222 への接続中に応答が受信されない場合、インターフェース上でダウンとしてマークされます。
これは、ELKサーバーがセンサーからの応答を確認するために開始します。
この行を更新してください: hosts: ["192.168.25.165"]
````
vi ~/DShield-SIEM/heartbeat/heartbeat.yml
スクリプト **change_perms.sh** は、docker コンポーネントのインストールを開始する前に、いくつかのファイルを設定します。<br>
スクリプトはまた、ダッシュボードクエリで使用される IP アドレスを、お使いの ELK スタックの IP に更新します。<br>````
~/scripts/change_perms.sh
~/scripts/get_researchers.sh
docker compose を実行して、ELK サーバーアプリケーションをビルドします。
これにより、Kibana、Elasticsearch、elastic-agent、Logstash がビルドされ、Cowrie パーサー、設定ファイル、ダッシュボードが読み込まれます。
````
sudo docker compose up -d
インストール完了
<img width="375" height="354" alt="image" src="https://assets.kitploit.com/production/public/readmes/50066/b192e2cc430ca7eaa43934ebde637400b29d23212dce39e81f521b0806df1bc0.png" />
# サーバーの信頼済み証明書に ca.crt を追加
- サーバーの信頼済み証明書リストに ca.crt を追加します```
sudo cp /var/lib/docker/volumes/dshield-elk_certs/_data/ca/ca.crt /usr/local/share/ca-certificates/dshield.crt
```
- 信頼された証明書を更新する ```
sudo update-ca-certificates
```
### Kibana にダッシュボードと SIEM シグネチャを追加する
これは DShield の SIEM ダッシュボードと SIEM シグネチャを Kibana に読み込みます。<br>```
~/scripts/dashboard-setup.sh
```
### Docker ディレクトリ一覧
このコマンドは、Elasticsearchのすべてのコンポーネントがインストールされた後に使用中のDockerディレクトリのリストを表示します。<br>
Elasticsearchにデータが追加されると、以下のコマンドまたはELK内でストレージに利用可能なディスク容量を監視することもできます。<br>````
sudo du --human-readable --max-depth 1 --no-dereference --one-file-system /var/lib/docker

netstatを使用すると、これらの4つのサービスがリッスン状態になっているはずです。
```
netstat -an | grep '80|9200|9300|8220|5601|5044|5066|5067|5068|9600'
表示されるはずの出力は次のとおりです:<br>
<pre>
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN ---> Local CyberChef
tcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN ---> Kibana Web Access
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN ---> Local Attack Navigator
tcp 0 0 0.0.0.0:8220 0.0.0.0:* LISTEN ---> elastic-agent Service
tcp 0 0 0.0.0.0:9200 0.0.0.0:* LISTEN ---> Elasticsearch Service
tcp 0 0 0.0.0.0:9300 0.0.0.0:* LISTEN ---> Elasticsearch Cluster Service
tcp 0 0 0.0.0.0:5044 0.0.0.0:* LISTEN ---> Logstash Data Collection
tcp 0 0 0.0.0.0:5066 0.0.0.0:* LISTEN ---> Metricbeat Stack Node Information
tcp 0 0 0.0.0.0:5067 0.0.0.0:* LISTEN ---> Filebeat Stack Node Information
tcp 0 0 0.0.0.0:5068 0.0.0.0:* LISTEN ---> Filebeat Stack Node Information (Process ISC Threat Intel to Logstash)
tcp 0 0 0.0.0.0:9600 0.0.0.0:* LISTEN ---> Logstash Stack Node and Pipeline Information
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::5601 :::* LISTEN
tcp6 0 0 :::8080 :::* LISTEN
tcp6 0 0 :::8220 :::* LISTEN
tcp6 0 0 :::9200 :::* LISTEN
tcp6 0 0 :::9300 :::* LISTEN
tcp6 0 0 :::5044 :::* LISTEN
tcp6 0 0 :::5066 :::* LISTEN
tcp6 0 0 :::5067 :::* LISTEN
tcp6 0 0 :::5068 :::* LISTEN
tcp6 0 0 :::9600 :::* LISTEN
</pre>
# KibanaでのデフォルトのFilebeatテンプレートの読み込み
これにより、リモートのDShieldセンサーからのnetflowデータを保存するために使用できるデフォルトのテンプレートとダッシュボードがインストールされます。<br>
Logstashがデータの保存を開始するには、次のコマンドを実行する必要があります。最初のステップは、filebeatにログインすることです:<br>````
sudo docker exec -ti filebeat bash
次に、このFilebeatコマンドを実行して、テンプレートをKibanaに読み込みます:
````
./filebeat setup -e
# Kibana インターフェースへのアクセス
docker がすべての ELK docker コンポーネントのインストールを完了したら、Ubuntu サーバーの IP を使用して ELK スタックにログインします。<br>
- Kibana にログインする際は、ユーザー名: **elastic** と、デフォルトパスワード _変更されていない場合_: **student** を使用します。<br>
Web アクセス: https://serverIP

# ELK スタック管理の設定
ELK スタックの健全性を確認するには、Management -> Stack Monitoring に移動してスタックモニタリングを設定する必要があります。<br>
- この手順は、インストールが Stack Monitoring を自動的に設定しなかった場合にのみ必要です。<br>
- "_または、セルフモニタリングで設定_" を選択します。<br>
- モニタリングは現在オフ -> _モニタリングをオンにする_ を選択します。<br>


# fleet-agent の設定
fleet-agent(ELK スタック上で動作する elastic-agent)は、脅威インテリジェンスを取り込むために使用されます。<br>
- ドロップダウンメニューから、Management → Fleet →Settings → Edit Outputs (Actions) を選択します。<br>
- SSH でサーバーにログインします。<br>
- ca.crt 証明書を /tmp にコピーします。<br>````
sudo cp /var/lib/docker/volumes/dshield-elk_certs/_data/ca/ca.crt /tmp
- 出力は次のようになります:<br>
673FB617E15CCCE73F9B647EF99449642A19CFC1D75BF5772047DA99DB950844
- 詳細なYAML設定に適用するElasticsearch CA証明書の内容を取得します。コピーがうまくいかないため、コマンドを入力してください。<br>````
sudo cat /tmp/ca.crt | sed -r 's/(.*)/ \1/g'
正しい形式については、上記のTroubleshooting fleet-server-examplesガイドURLの例に従ってください。
sed は、CA証明書を対象とした前のコマンドに4つのスペースを追加します。
証明書情報を追加した後、これらの設定を保存して適用します。
続いて、保存してデプロイします。

設定で、Fleet serverホストを編集するか、以下のように構成されたFleet Serverを追加します。

次のフェーズでは、Agent Policy → Add Agent → Enroll in Fleet → Add Fleet Server の順に選択します。

この情報は、fleet serverをセットアップするために必要です。
SSHでfleet-serverにログインし、エージェントをセットアップする前にfleet-serverが稼働していることを確認してください:
````
sudo docker exec -ti fleet-server bash
./elastic-agent status (check it is running)
./elastic-agent restart (if it doesn't appear to be running, force a restart, and recheck the status)
これはFleet Serverにコピーする必要があるものの例です。Fleet Server es が https://es01:9200 であることを確認してください。<br>
証明書が自己生成されているため、port=8220 の後に太字の部分を追加してください。これにより、エージェントが更新を受け取るようになります。<br>
トークンとフィンガープリントは、この例とは異なります。<br>
以下の elastic-enrol エージェントをコピーし、自分のサーバーから取得したこれらの2行を置き換えてください。それ以外はすべて同じままにしてください。<br>
<pre>
--fleet-server-service-token=AAEAAWVsYXN0aWMvZmxlZXQtc2VydmVyL3Rva2VuLTE3MzEwOTcwODU3MzI6VjMyLU13cmFUOUM1eUFvMUhVUFl5QQ \
--fleet-server-es-ca-trusted-fingerprint=0D9A25F4C147EB3A496253525DF6F039CF3C19776E64A1F77CEFCCD08B76BC61 \
</pre>
fleet-agent にログインした状態で、fleet-agent に elastic-agent を登録してください:
このテンプレートを使用して証明書をインストールし、必ず自分のものに置き換えてください。<br>
fleet-server-service-token & fleet-server-es-ca-trusted-fingerprint<br>````
elastic-agent enroll \
--url=https://fleet-server:8220 \
--fleet-server-es=https://es01:9200 \
--fleet-server-service-token=AAEAAWVsYXN0aWMvZmxlZXQtc2VydmVyL3Rva2VuLTE3MzEwOTcwODU3MzI6VjMyLU13cmFUOUM1eUFvMUhVUFl5QQ \
--fleet-server-policy=fleet-server-policy \
--fleet-server-es-ca=/certs/es01/es01.crt \
--fleet-server-es-ca-trusted-fingerprint=0D9A25F4C147EB3A496253525DF6F039CF3C19776E64A1F77CEFCCD08B76BC61 \
--fleet-server-port=8220 \
--certificate-authorities=/certs/ca/ca.crt \
--fleet-server-cert=/certs/fleet-server/fleet-server.crt \
--fleet-server-cert-key=/certs/fleet-server/fleet-server.key \
--elastic-agent-cert=/certs/fleet-server/fleet-server.crt \
--elastic-agent-cert-key=/certs/fleet-server/fleet-server.key \
--fleet-server-es-cert=/certs/fleet-server/fleet-server.crt \
--fleet-server-es-cert-key=/certs/fleet-server/fleet-server.key
This will replace your current settings. Do you want to continue? [Y/n]: Y

Successfully enrolled the Elastic Agent.
From your current location, verify it installed correctly
````
./elastic-agent status
./elastic-agent restart (if you got what appears to be errors, force a restart and check the status)

Fleet Server が接続されたので、このウィンドウを閉じて次のステップに進みましょう。

Elastic Management → Fleet で Agents を更新すると、次のように表示されます:

サーバーは、ハニーポットログに対して Security(SIEM 部分)で使用する Threat Intel Agents をインストールする準備ができました。<br>
次のステップは、Agent policies → Fleet Server Policy → Add integration を選択することです:<br>
この Dashboard を使用して、elastic-agent が収集したメトリクスを表示します:<br>

- AlienVault OTX を選択して追加(API キーが必要)<br>
- AbuseCH を選択(API キーが必要)<br>
- Threat Intelligence Utilities を選択<br>
- Elasticsearch<br>
- Kibana を選択<br>
- Docker を選択<br>

# Fleet Server ポリシーの例

- Elastic Management → Installed Integration で<br>
- インストール済みの各インテグレーションを選択し、Settings を選択して _ポリシーを最新に保つ_ タブを有効にします:<br>

## Security → Rules の設定
- Rules → Detection rules (SIEM) → Add Elastic rules を選択
- Search Tags で、Rule Type: Threat Intel を選択(最低限、以下の4つのルールを追加)
- 次の4つのルールをインストールして有効にします
- Threat Intel Indicator Match - Cowrie(docker が ELK スタックの全コンポーネントを読み込むときに読み込まれ、有効化されるカスタムルール)
- Threat Intel Windows Registry Indicator Match
- Threat Intel Hash Indicator Match
- Threat Intel URL Indicator Match
- ルールを確認して、ハニーポットデータに対して試したい他のルールを有効にすることもできます。<br>

## アラートトレンドでルールが捕捉したアクティビティを確認
上記の脅威インテルを一部 elastic-agent に追加し、初期インストール時に Management → Advanced Settings に cowrie* を追加した場合、ELK スタックの SIEM 部分のアラートトレンドで一致するルールを追跡できるようになりました。<br>
これは Management → Stack Management → Advanced Settings からの出力です。<br>

脅威インテルが一致した場合、SIEM は次のアクティビティを表示し、調査できるようになります:<br>


# DShield Sensor での Filebeat のセットアップ - ELK へのログ送信
次のステップは、DShield Sensor に Filebeat パッケージを追加して、Elasticsearch にログを送信することです。<br>
このリファレンス [3] から取得した次のコマンドを使用して、Filebeat をインストールする手順を実行します:<br>````
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
echo "deb https://artifacts.elastic.co/packages/oss-8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
sudo apt-get update
インストール後、filebeatにholdを設定し、filebeatのバージョンを変更せずにセンサーを更新できるようにします。filebeat
のバージョンは常にElasticsearc/Kibana dockerのバージョンと一致させる必要があります。
Linux - X86_64```
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.19.15-amd64.deb
sudo apt install ./filebeat-8.19.15-amd64.deb
sudo apt-mark hold filebeat
<ins>PI - aarch64</ins>```
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.19.15-arm64.deb
sudo apt install ./filebeat-8.19.15-arm64.deb
sudo apt-mark hold filebeat
filebeatを更新するには、その時が来たら保留を解除する必要があります。解除する前に、まずfilebeatに保留が設定されているか確認してください
```
sudo apt-mark showhold
sudo apt-mark unhold filebeat
DShieldセンサーでZeekを使用したい場合は、こちらのインストール[手順](https://github.com/bruneaug/DShield-SIEM/blob/main/AddOn/Configure_Zeek_DShield_Sensor.md)を確認してください。
### クラウドセンサーのセットアップ - Filebeat -> ホームルーター -> Logstash
クラウドセンサーからローカルのELK Stackに接続するには、次のことを行う必要があります:
- ホームルーターがELK StackのローカルIPアドレスにNATするように設定します<br>
- センサーからホームルーターに接続するには、ルーターのIPアドレスを使用します(IPが変更された場合に備えて、自宅のIPにホスト名を追加することをお勧めします)<br>
- 最終的な接続は次のようになります:センサー -> NATルーターIP -> ELK Stack
### すべてのセンサーファイルをDShieldセンサーに転送
以下のURLにアクセスして、DShieldセンサーに関連するすべてのファイルをダウンロードしてください<br>
https://github.com/bruneaug/DShield-Sensor````
git clone https://github.com/bruneaug/DShield-Sensor.git
sudo cp ~/DShield-Sensor/filebeat/filebeat.yml /etc/filebeat/filebeat.yml
output.logstash:<br>
hosts: ["192.168.25.23:5044"]<br>
#hosts: ["logstash.com:5044"]<br>
### Filebeatのトラブルシューティング````
sudo su -
filebeat test config
設定OK
````
filebeat test output
<pre>
logstash: 192.168.25.231:5044...
connection...
parse host... OK
dns lookup... OK
addresses: 192.168.25.231
dial up... OK
TLS... WARN secure connection disabled
talk to server... OK
</pre>
## Filebeat を起動````
sudo systemctl enable filebeat
sudo systemctl start filebeat
sudo systemctl status filebeat
Filebeatは処理したイベントを log.json というファイルで追跡します。このファイルが削除されると、以前Elasticsearchに送信されたすべてのイベントは、filebeatが再起動されたときに再処理されます。
このファイルの場所:
sudo su -````
cd /var/lib/filebeat/registry/filebeat
ELKサーバーを再構築したためにすべてのログを再送信する予定がある場合は、_filebeatを停止し、log.jsonを削除して、filebeatを再起動してください_。
通常、ELK Stackダッシュボードに反映されるまでに時間がかかります。ログがELK Stackに送信されているかどうかを確認したい場合は、次の方法があります。<br>
- tail -f log.json
- 追いついている間に、ダッシュボードで過去30日間を確認する
# インターフェース - Logs DShield Sensor Overview
ダッシュボードにアクセスするには、Analytics -> Dashboard -> **[Logs DShield Sensor] Overview** を選択します。<br>

## ワークステーションブラウザにca.crtを追加する
この[ページ](https://github.com/bruneaug/DShield-SIEM/blob/main/AddOn/Workstation_Browser_CA_Certificate.md)の手順に従って、ELKサーバーで使用されるca.crtをKibanaに追加してください。<br>

# 便利なDockerコマンド
便利なdockerコマンドの一覧については、このページを参照してください。<br>
https://github.com/bruneaug/DShield-SIEM/edit/main/Troubleshooting/docker_useful_commands..md
# コンソールを使用したElasticの情報
これらのコマンドは、Dev Tool -> Console から実行します<br>
GET _nodes/http?pretty (すべてのノードの一覧と情報を取得する)<br>
GET _security/_authenticate<br>
GET /_cat/nodes?v=true<br>
# 学生によるDShield分析スクリプトとコード
これは、BACSプログラムの学生がログ分析を支援するために作成したスクリプトとコードの一覧です。<br>
Jesse La Grew [cowrieprocessor](https://github.com/jslagrew/cowrieprocessor)<br>
jrjobe [DShield-Cowrie-json-Parser](https://github.com/jrjobe/DShield-Cowrie-json-Parser)<br>
ham-sauce [vt_cowrie](https://github.com/ham-sauce/vt_cowrie)<br>
NickTheSecurityDude [dshield-honeypot-scripts](https://github.com/NickTheSecurityDude/dshield-honeypot-scripts/tree/main) および[LinkedInの投稿](https://www.linkedin.com/pulse/how-i-used-honeypot-track-analyze-cyberattacks-nicholas-gilbert-jcste)<br>
Josh Gilman [DShieldKickStarter](https://github.com/iamjoshgilman/DShieldKickStarter)<br>
kcustom11 [dshield-azure](https://github.com/kcustom11/dshield-azure) Azure Terraform<br>
Boggby [ec2-honeypot-template](https://github.com/Boggby/ec2-honeypot-template)<br>
amelete11235
[homelab](https://github.com/amelete11235/homelab/blob/main/Installing%20DShield%20SIEM%20on%20a%20Raspberry%20Pi%205%20-%208%20GB%20RAM/Installing%20DShield%20SIEM%20on%20a%20Raspberry%20Pi%205%20-%208%20GB%20RAM.md) DShiel SIEM Raspberry 5<br>
William Constantino [Cowrie logfile_investigation with Python](https://github.com/JJWCons/log-scripts/blob/main/logfile_investigation.py)<br>
William Constantino [Cowrie single_multi_IP with Python](https://github.com/JJWCons/log-scripts/blob/main/single_multi_IP.py)<br>
Steven C. Peterson [DShield Model Context Protocol](https://github.com/datagen24/dsheild-mcp)<br>
Nathan Smisson [dshield-tooling](https://github.com/neurohypophysis/dshield-tooling)<br>
# 参考文献
[1] https://isc.sans.edu/tools/honeypot/<br>
[2] https://www.elastic.co/downloads/beats/filebeat<br>
[3] https://www.elastic.co/guide/en/beats/filebeat/8.8/setup-repositories.html#_apt<br>
[4] https://isc.sans.edu/diary/DShield+Honeypot+Activity+for+May+2023/29932<br>
[5] https://isc.sans.edu/diary/DShield+Sensor+JSON+Log+to+Elasticsearch/29458<br>
[6] https://isc.sans.edu/diary/DShield+Sensor+JSON+Log+Analysis/29412<br>
[7] https://github.com/jslagrew/cowrieprocessor/blob/main/submit_vtfiles.py<br>
[8] https://handlers.sans.edu/gbruneau/elastic.htm<br>
[9] https://www.elastic.co/guide/en/fleet/current/secure-connections.html<br>
[10] https://www.docker.elastic.co/<br>
[11] https://github.com/gchq/CyberChef<br>
[12] https://github.com/mitre-attack/attack-navigator/pkgs/container/attack-navigator