[LINUX] Aufbau einer Trainingsumgebung für Penetrationstests mit Naumachia

Dieser Artikel ist der 15. Tagesartikel von NTT Communications Adventskalender 2019. Gestern war @ Mahitos Artikel Geschichte über den Vorschlag von Chaos Engineering für den Kindergarten.

Einführung

Wie in dem kürzlich veröffentlichten NTT Communications Developer Blog-Artikel, der NTT Communications Group, erwähnt Wir veranstalten einen Sicherheitswettbewerb "ComCTF" für Gruppenmitarbeiter.

Ich habe die Frage "Pentest" gestellt, die im Finale gestellt wurde. Pentest ist eine Abkürzung für Sicherheitstest, der als Penetrationstest bezeichnet wird und überprüft, ob ein Angreifer mit einer klaren Absicht seinen Zweck erreichen kann. [^ 1]

Das Problem besteht darin, dass es in ein virtuelles Unternehmensnetzwerk einbricht, Schwachstellen auf mehreren Servern ausnutzt und schließlich fragt, ob Informationen von dem Server abgerufen werden können, auf dem wichtige Daten gespeichert sind. Es war ein Problem, einen Penetrationstest durchzuführen, um zu überprüfen, ob der Zweck des Erhaltens wichtiger Daten erreichbar war.

Um den Grundstein für dieses Problem zu legen, haben wir dieses Mal ein OSS namens ** Naumachia ** verwendet, mit dem wir eine Trainingsumgebung für Penetrationstests mit Docker erstellen können.

https://github.com/nategraf/Naumachia

In diesem Artikel werden wir einen Überblick über Naumachia geben, wie man es baut und wie man eine Trainingsumgebung für Penetrationstests auf dieser Grundlage baut.

Was ist Naumachia?

Naumachia ist ein OSS, mit dem Sie mit Docker geschlossene Netzwerke und anfällige Server erstellen können.

Der Grund, warum ich von diesem OSS erfahren habe, war eine CTF namens TAMUctf 19, die von der Texas A & M University gesponsert wurde. Diese Naumachia dient als Grundlage für Probleme im Genre "NetworkPentest".

Bitte beachten Sie, dass diese CTF-Ausgabe auf GitHub veröffentlicht wird. Wenn Sie also interessiert sind, schauen Sie bitte.

https://github.com/tamuctf/TAMUctf-2019

Die folgenden Funktionen sind in Naumachia implementiert.

Auf diese Weise können Sie eine dedizierte Schulungsumgebung erstellen, auf die nur Benutzer mit VPN-Verbindungsinformationen aus dem Internet zugreifen können, z.

naumachia.png

Wenn Sie beispielsweise versuchen, ein Problem zu erstellen, das versucht, mithilfe der Sicherheitsanfälligkeit von Drupal gegen willkürliche Codeausführung (CVE-2018-7600) in das System einzudringen, und wenn Sie versuchen, einen Problemserver zu erstellen, auf den über das Internet zugegriffen werden kann, handelt es sich um eine Sicherheitsanfälligkeit im Internet. Im schlimmsten Fall kann der Server als Sprungbrett verwendet werden, indem er in einen Sex-Scan verwickelt wird. Mit Naumachia können nur Benutzer mit VPN-Verbindungsinformationen das Problem über das Internet herausfordern, sodass Sie Fragen ohne dieses Risiko stellen können.

Es bietet auch Zugriff auf L2-Ebene, sodass Sie Probleme wie das Testen von Angriffsmethoden, die im selben LAN stattfinden, wie z. B. ARP-Spuffing, verursachen können.

Detaillierte Funktionen und Mechanismen sind in Naumachias README beschrieben. Lesen Sie diese daher.

Gebäude Naumachia

Von hier aus werde ich das Verfahren zum Bau von Naumachia vorstellen.

Betriebsumgebung

Liesmich

Obtain a Linux server (tested on Ubuntu 16.04 and 18.04)

Es heißt, dass ** Ubuntu 18.04 ** das beste Betriebssystem ist.

Da ich CentOS 7 jedoch aus verschiedenen Gründen in diesem Wettbewerb verwendet habe, werde ich das mit CentOS 7 verifizierte Konstruktionsverfahren aufschreiben. Die Betriebssysteminformationen, die das Konstruktionsverfahren überprüft haben, lauten wie folgt.

# uname -a
Linux localhost.localdomain 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

Vorbereitung zur Installation von Naumachia

Um Naumachia zu erstellen, benötigen Sie "Docker", "Docker-Compose", "Python3", "Pip3", also müssen Sie sie zuerst installieren. Klonen Sie danach den Quellcode aus dem Naumachia-Repository auf GitHub und installieren Sie die Python3-Bibliothek, die in require.txt beschrieben ist.

Docker installieren

# yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install -y docker-ce docker-ce-cli containerd.io
# systemctl start docker
# systemctl enable docker

Installieren Sie Docker-Compose

# curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose

Installation von Python3.6, pip3

# yum install -y https://centos7.iuscommunity.org/ius-release.rpm
# yum install python36u python36u-libs python36u-devel python36u-pip

Klonen Sie den Quellcode von GitHub

# git clone https://github.com/nategraf/Naumachia.git

Installieren Sie die Python3-Bibliothek

# cat requirements.txt
jinja2==2.10.1
PyYAML==4.2b4
requests==2.21.0
nose2==0.8.0
pytest==4.5.0
hypothesis==4.23.5
# pip3 install -r requirements.txt

Naumachia Setup

Vorbereiten eines Docker-Containers und eines Netzwerks für die Schulung

Der Docker-Schulungscontainer und das Netzwerk, die Naumachia den Benutzern zur Verfügung stellt, sind in "docker-compose.yml" definiert. Wenn nach dem Start von Naumachia ein Benutzer eine Verbindung zu OpenVPN herstellt, wird Docker-Compose automatisch basierend auf dieser "Docker-Compose.yml" ausgeführt und eine Trainingsumgebung erstellt.

In dieser Erklärung werde ich das Herausforderungsbeispiel aus Naumachia-Problem-Sammlung (nategraf / Naumachia-Herausforderungen) verschieben.

Klonen Sie das GitHub-Repository der Fragensammlung und kopieren Sie die für die Beispiel-Challenge erforderlichen Dateien in das Challenge-Verzeichnis im Naumachia-Verzeichnis.

# git clone https://github.com/nategraf/Naumachia-challenges
# mkdir Naumachia/challenges
# cp -r Naumachia-challenges/example Naumachia/challenges

Übrigens ist die "docker-compose.yml" von "example" wie folgt. Sie können sehen, dass zwei Container, "Bob" und "Alice", und ein Netzwerk, "Standard", erstellt werden.

docker-compose.yml


version: '2.4'

# The file defines the configuration for simple Nauachia challenge where a
# sucessful man-in-the-middle (MTIM) attack (such as ARP poisoning) provides a
# solution

# If you are unfamiliar with docker-compose this might be helpful:
# * https://docs.docker.com/compose/
# * https://docs.docker.com/compose/compose-file/
#
# But the gist is that the services block below specifies two containers, which
# act as parties in a vulnerable communication

services:
    bob:
        build: ./bob
        image: naumachia/example.bob
        environment:
            - CTF_FLAG=fOOBaR
        restart: unless-stopped
        networks:
            default:
                ipv4_address: 172.30.0.2

    alice:
        build: ./alice
        image: naumachia/example.alice
        depends_on:
            - bob
        environment:
            - CTF_FLAG=fOOBaR
        restart: unless-stopped
        networks:
            default:
                ipv4_address: 172.30.0.3

networks:
    default:
        driver: l2bridge
        ipam:
            driver: static
            config:
                - subnet: 172.30.0.0/28

Installieren und starten Sie einen benutzerdefinierten Docker libnetwork-Treiber

Wenn Sie sich den Treiber ansehen, der in der Beispiel-Challenge unter "Netzwerke" in "docker-compose.yml" angegeben ist, werden Sie feststellen, dass die ungewöhnlichen Treiber "l2bridge" und "static" angegeben sind.

Bei der obigen Naumachia-Herausforderung wird ein angepasster Docker libnetowrk-Treiber verwendet, um allen Benutzern dieselbe Umgebung bereitzustellen und eine sichere Trainingsumgebung zu erstellen.

https://github.com/nategraf/l2bridge-driver https://github.com/nategraf/static-ipam-driver

Damit können Sie die folgenden Dinge tun, die der Standard-Docker libnetowrk-Treiber nicht kann:

Wenn es sich um Ubuntu oder Debian handelt, wird hier die Methode zum Installieren von Driver as a Service vorgestellt. Diesmal war es jedoch CentOS. Daher habe ich das folgende Skript erstellt und das Treiberprogramm zwangsweise verschoben. (Ich konnte es mir nicht leisten, sysv.sh für RedHat OS neu zu schreiben ...

driver_start.sh


# Download the static-ipam driver to usr/local/bin
if [ ! -e /usr/local/bin/l2bridge ]; then
  echo "[!] l2bridge driver is not installed"
  echo "[+] Download the l2bridge driver to usr/local/bin" 
  curl -L https://github.com/nategraf/l2bridge-driver/releases/latest/download/l2bridge-driver.linux.amd64 -o /usr/local/bin/l2bridge
  chmod +x /usr/local/bin/l2bridge
else
  echo "[*] l2bridge driver is installed"
fi

# Download the static-ipam driver to usr/local/bin
if [ ! -e /usr/local/bin/static-ipam ]; then
  echo "[!] static-ipam driver is not installed"
  echo "[+] Download the static-ipam driver to usr/local/bin" 
  curl -L https://github.com/nategraf/static-ipam-driver/releases/latest/download/static-ipam-driver.linux.amd64 -o /usr/local/bin/static-ipam
  chmod +x /usr/local/bin/static-ipam
else
  echo "[*] static-ipam driver is installed"
fi

# Activate the service
echo "[+] Startup the servicies" 

if [ ! -e /run/docker/plugins/l2bridge.sock ]; then
  nohup /usr/local/bin/l2bridge > /dev/null 2>&1 &
  echo "[*] Done: l2bridge" 
else
  echo "[!] Started l2bridge driver"
fi

if [ ! -e /run/docker/plugins/static.sock ]; then
  nohup /usr/local/bin/static-ipam > /dev/null 2>&1 &
  echo "[*] Done: static-ipam" 
else
  echo "[!] Started static-ipam driver"
fi

sleep 0.5

# Verify that it is running
echo "[+] Verify that it is running"

echo ""
echo "[*] stat /run/docker/plugins/l2bridge.sock"
stat /run/docker/plugins/l2bridge.sock
#  File: /run/docker/plugins/l2bridge.sock
#  Size: 0               Blocks: 0          IO Block: 4096   socket
#  ...

echo ""
echo "[*] stat /run/docker/plugins/static.sock"
stat /run/docker/plugins/static.sock
#  File: /run/docker/plugins/static.sock
#  Size: 0               Blocks: 0          IO Block: 4096   socket
#  ...

echo ""
echo "[*] Complete!!"

Wenn Sie das Programm herunterfahren, wird das Treiberprogramm gestoppt und beim Neustart nicht gestartet. Sie müssen dies daher beim Neustart ausführen.

Deaktivieren Sie die Filterung von Paketen, die die Bridge passieren

Führen Sie "disable-bridge-nf-iptables.sh" aus, da es den Anschein hat, dass Pakete, die die Bridge passieren, möglicherweise nicht gut funktionieren, wenn sie gefiltert werden.

disable-bridge-nf-iptables.sh


echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 0 > /proc/sys/net/bridge/bridge-nf-call-ip6tables

Ändern Sie config.yml

Kopieren Sie config.example.yml nach config.yml und schreiben Sie einen Teil davon neu. Der Teil, der umgeschrieben werden muss, sind die "Herausforderungen". Die zu ändernden Punkte sind wie folgt.

# [required] Configurations for each challenge
challenges:
    # [required] An indiviual challenge config. The key is the challenge name
    # This should be a valid unix filename and preferably short
    example:
        # [default: 1194] The exposed external port for this challenges OpenVPN server
        port: 2000
        # [default: [{challenge name}/docker-compose.yml] ] The compose files to which define this challenge
        # Paths should be relative to the challenges directory
        files:
            - example/docker-compose.yml
        # [default: {challenge name}.{domain}] The commonname used for the OpenVPN's certificates
        # This should be the domain name or ip that directs to this challenge
        commonname: 192.168.91.130
        # [default: None] If set, the OpenVPN management interface will be opened on localhost and the given port
        openvpn_management_port: null
        # [default: None] If set, the OpenVPN server will inform the client what IPv4 address and mask to apply to their tap0 interface
        ifconfig_push: 172.30.0.14/28

Baue Naumachia

Wenn Sie configure.py ausführen, wird Naumachia basierend auf den Angaben in config.yml erstellt. Dadurch werden automatisch Naumachias "docker-compose.yml" - und OpenVPN-Schlüssel-, Zertifikat- und Konfigurationsdateien generiert.

# ./configure.py
[INFO] Using config from /root/Naumachia/config.yml
[INFO] Using easyrsa installation at /root/Naumachia/tools/EasyRSA-v3.0.6/easyrsa
[INFO] Rendered /root/Naumachia/docker-compose.yml from /root/Naumachia/templates/docker-compose.yml.j2 
[INFO] Configuring 'example'
[INFO] Created new openvpn config directory /root/Naumachia/openvpn/config/example
[INFO] Initializing public key infrastructure (PKI)
[INFO] Building certificiate authority (CA)
[INFO] Generating Diffie-Hellman (DH) parameters
[INFO] Building server certificiate
[INFO] Generating certificate revocation list (CRL)
[INFO] Rendered /root/Naumachia/openvpn/config/example/ovpn_env.sh from /root/Naumachia/templates/ovpn_env.sh.j2 
[INFO] Rendered /root/Naumachia/openvpn/config/example/openvpn.conf from /root/Naumachia/templates/openvpn.conf.j2 

Bauen Sie auch einen Container für die Konkurrenz.

# docker-compose -f ./challenges/example/docker-compose.yml build

Durchführung des Wettbewerbsumfelds

Nach der bisherigen Arbeit sollte "docker-compose.yml" automatisch generiert werden, also aufbauen und aufbauen.

# docker-compose build
# docker-compose up -d

Wenn Sie sich die Container ansehen, die mit "Docker ps -a" in diesem Zustand gestartet wurden, sollten die folgenden Container gestartet werden.

# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                      PORTS                    NAMES
dd9e858277bd        naumachia/manager     "python -m app"          27 seconds ago      Up 25 seconds                                        build_manager_1
f80057d9dc2e        naumachia/openvpn     "/scripts/naumachia-…"   27 seconds ago      Up 25 seconds               0.0.0.0:2000->1194/udp   build_openvpn-example_1
86fc3709d4e3        redis:alpine          "docker-entrypoint.s…"   27 seconds ago      Up 26 seconds                                        build_redis_1
a0f45e1f292a        naumachia/registrar   "gunicorn -c python:…"   27 seconds ago      Up 26 seconds               0.0.0.0:3960->3960/tcp   build_registrar_1
9d1ef7902351        alpine                "/bin/true"              27 seconds ago      Exited (0) 27 seconds ago                            build_bootstrapper_1

Generierung einer OpenVPN-Konfigurationsdatei, die an Benutzer verteilt werden soll

Eine Konfigurationsdatei ist erforderlich, damit Benutzer eine Verbindung zum OpenVPN-Server herstellen und auf die Trainingsumgebung zugreifen können. Dies wird auch automatisch von Naumachia generiert.

Es gibt zwei Möglichkeiten, es zu generieren.

Dieses Mal verwenden wir das Python-Skript der Registrar-CLI, um die Konfigurationsdatei zu erstellen und abzurufen. Wenn Sie registrar-cli wie folgt ausführen, können Sie eine OpenVPN-Konfigurationsdatei erstellen, die den OpenVPN-Schlüssel, das Serverzertifikat und das Zertifizierungsstellenzertifikat enthält, und diese an Benutzer verteilen.

# ./registrar-cli example add user1
# ./registrar-cli example get user1 > user1.ovpn
# cat user1.ovpn

client
nobind
dev tap
remote-cert-tls server
float
explicit-exit-notify

remote 192.168.91.130 2000 udp



<key>
-----BEGIN PRIVATE KEY-----
(Kürzung)
-----END PRIVATE KEY-----
</key>
<cert>
-----BEGIN CERTIFICATE-----
(Kürzung)
-----END CERTIFICATE-----
</cert>
<ca>
-----BEGIN CERTIFICATE-----
(Kürzung)
-----END CERTIFICATE-----
</ca>
key-direction 1

cipher AES-256-CBC
auth SHA256
comp-lzo

Spielen Sie mit der gebauten Trainingsumgebung

Lassen Sie uns nun auf die von uns erstellte Trainingsumgebung zugreifen und damit spielen.

Umgebung zur Überprüfung verwendet

Diesmal verwendet der Benutzer "Kali Linux", auf dem standardmäßig der OpenVPN-Client und Tools für Penetrationstests installiert sind.

# grep VERSION /etc/os-release 
VERSION="2018.1"
VERSION_ID="2018.1"

Stellen Sie mit OpenVPN eine Verbindung zur Trainingsumgebung her

Verwenden Sie die generierte OpenVPN-Konfigurationsdatei, um auf die Trainingsumgebung in Naumachia zuzugreifen. Wenn Sie "Initialisierungssequenz abgeschlossen" erhalten, sind Sie erfolgreich!

# openvpn user1.ovpn
Sun Dec 15 06:33:45 2019 OpenVPN 2.4.5 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Mar  4 2018
Sun Dec 15 06:33:45 2019 library versions: OpenSSL 1.1.0h  27 Mar 2018, LZO 2.08
Sun Dec 15 06:33:45 2019 TCP/UDP: Preserving recently used remote address: [AF_INET]192.168.91.130:2000
Sun Dec 15 06:33:45 2019 UDP link local: (not bound)
Sun Dec 15 06:33:45 2019 UDP link remote: [AF_INET]192.168.91.130:2000
Sun Dec 15 06:33:45 2019 [192.168.91.130] Peer Connection Initiated with [AF_INET]192.168.91.130:2000
Sun Dec 15 06:33:46 2019 Options error: Unrecognized option or missing or extra parameter(s) in [PUSH-OPTIONS]:1: dhcp-renew (2.4.5)
Sun Dec 15 06:33:46 2019 TUN/TAP device tap0 opened
Sun Dec 15 06:33:46 2019 do_ifconfig, tt->did_ifconfig_ipv6_setup=0
Sun Dec 15 06:33:46 2019 /sbin/ip link set dev tap0 up mtu 1500
Sun Dec 15 06:33:46 2019 /sbin/ip addr add dev tap0 172.30.0.14/28 broadcast 172.30.0.15
Sun Dec 15 06:33:46 2019 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Sun Dec 15 06:33:46 2019 Initialization Sequence Completed

Wenn ich mir den Status der Schnittstelle mit ifconfig anschaue, denke ich, dass eine Schnittstelle namens "tap0" erstellt und eine IP-Adresse von "172.30.0.14" zugewiesen wird.

# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.91.129  netmask 255.255.255.0  broadcast 192.168.91.255
        inet6 fe80::20c:29ff:fe18:a0c8  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:18:a0:c8  txqueuelen 1000  (Ethernet)
        RX packets 14781  bytes 9483880 (9.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6484  bytes 645921 (630.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 31612  bytes 10003030 (9.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 31612  bytes 10003030 (9.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tap0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.0.14  netmask 255.255.255.240  broadcast 172.30.0.15
        inet6 fe80::c0d8:eeff:fe38:d79b  prefixlen 64  scopeid 0x20<link>
        ether c2:d8:ee:38:d7:9b  txqueuelen 100  (Ethernet)
        RX packets 16  bytes 1272 (1.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 21  bytes 1622 (1.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Wenn Sie sich zu diesem Zeitpunkt den Status des Docker-Containers und -Netzwerks auf dem Naumachia-Server ansehen, sollten Sie feststellen, dass ein neuer Container und ein neues Netzwerk mit dem Präfix "user1_example_" erstellt wurden.

Dies ist ein benutzerspezifischer Schulungscontainer und ein Netzwerk. Mit zunehmender Anzahl von Benutzern steigt auch die Anzahl von Containern und Netzwerken.

# docker ps -a
CONTAINER ID        IMAGE                     COMMAND                  CREATED              STATUS                      PORTS                    NAMES
17c4ef2ccbb9        naumachia/example.alice   "python /app/alice.py"   About a minute ago   Up About a minute                                    user1_example_alice_1
ff271a01eba9        naumachia/example.bob     "python /app/bob.py"     About a minute ago   Up About a minute                                    user1_example_bob_1
dd9e858277bd        naumachia/manager         "python -m app"          32 minutes ago       Up 32 minutes                                        build_manager_1
f80057d9dc2e        naumachia/openvpn         "/scripts/naumachia-…"   32 minutes ago       Up 32 minutes               0.0.0.0:2000->1194/udp   build_openvpn-example_1
86fc3709d4e3        redis:alpine              "docker-entrypoint.s…"   32 minutes ago       Up 32 minutes                                        build_redis_1
a0f45e1f292a        naumachia/registrar       "gunicorn -c python:…"   32 minutes ago       Up 32 minutes               0.0.0.0:3960->3960/tcp   build_registrar_1
9d1ef7902351        alpine                    "/bin/true"              32 minutes ago       Exited (0) 32 minutes ago                            build_bootstrapper_1
# docker network ls
NETWORK ID          NAME                     DRIVER              SCOPE
743f747a01b3        bridge                   bridge              local
7017ddd37ba8        build_default            bridge              local
dce5de7a2fa2        build_internal           bridge              local
de7c1746cc32        host                     host                local
6dc0c89a9ccf        none                     null                local
b1649b2f2e93        user1_example_default    l2bridge            local

Versuchen Sie es mit ARP-Spoofing

Bei diesem Problem handelt es sich um ein MITM-Problem (Intermediate Attack), z. B. ARP-Spuffing, wie im Beispiel in docker-compose.yml beschrieben.

The file defines the configuration for simple Nauachia challenge where a sucessful man-in-the-middle (MTIM) attack (such as ARP poisoning) provides a solution

Dieses Mal haben wir zwei Terminals mit den IP-Adressen "172.30.0.2" und "172.30.0.3", daher werden wir versuchen, die Kommunikation zu belauschen, die diese beiden Terminals durch ARP-Spoofing durchführen.

Der Mechanismus und die spezifische Methode des ARP-Spoofing werden hier nicht im Detail erläutert. Bei Erfolg wird die Kommunikation zwischen zwei Hosts, "172.30.0.2" und "172.3.0.3", durch Erfassen von Paketen wie unten gezeigt durchgeführt. Kann gesehen werden.

# tcpdump -i tap0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tap0, link-type EN10MB (Ethernet), capture size 262144 bytes
06:40:47.791591 ARP, Reply 172.30.0.2 is-at 3e:d6:f2:ca:92:81 (oui Unknown), length 28
06:40:48.042999 ARP, Reply 172.30.0.3 is-at 3e:d6:f2:ca:92:81 (oui Unknown), length 28
06:40:48.696193 IP 172.30.0.3.55672 > 172.30.0.2.5005: UDP, length 30
06:40:49.792320 ARP, Reply 172.30.0.2 is-at 3e:d6:f2:ca:92:81 (oui Unknown), length 28
06:40:50.044301 ARP, Reply 172.30.0.3 is-at 3e:d6:f2:ca:92:81 (oui Unknown), length 28
06:40:51.700769 IP 172.30.0.3.55672 > 172.30.0.2.5005: UDP, length 30
06:40:51.793616 ARP, Reply 172.30.0.2 is-at 3e:d6:f2:ca:92:81 (oui Unknown), length 28
06:40:52.044971 ARP, Reply 172.30.0.3 is-at 3e:d6:f2:ca:92:81 (oui Unknown), length 28
06:40:53.794367 ARP, Reply 172.30.0.2 is-at 3e:d6:f2:ca:92:81 (oui Unknown), length 28
06:40:54.045958 ARP, Reply 172.30.0.3 is-at 3e:d6:f2:ca:92:81 (oui Unknown), length 28
06:40:54.705584 IP 172.30.0.3.55672 > 172.30.0.2.5005: UDP, length 30
06:40:55.795642 ARP, Reply 172.30.0.2 is-at 3e:d6:f2:ca:92:81 (oui Unknown), length 28
06:40:56.047136 ARP, Reply 172.30.0.3 is-at 3e:d6:f2:ca:92:81 (oui Unknown), length 28

Sie sollten sich dieser Risiken bewusst sein, wenn Sie sich in demselben Netzwerk befinden, das über L2 verbunden ist.

abschließend

In diesem Artikel habe ich vorgestellt, wie eine Trainingsumgebung für Penetrationstests mit OSS namens Naumachia erstellt wird.

Da der Penetrationstest tatsächlich ein Angriff ist, möchte das Training einen Angreifer trainieren? Sie könnten denken, aber es ist nicht.

Cyber-Angriffe sind in den letzten Jahren immer ausgefeilter geworden, und es wird immer schwieriger, sie nur aus der Sicht des Verteidigers zu schützen. Um sich vor solchen Angriffen zu schützen, ist es wichtig, die tatsächliche Angriffsmethode zu kennen und eine wirksame Verteidigungsmethode zu finden, die zu dieser passt. Ich denke, dass wir durch das Bewegen der Hände im Training und das Ausprobieren tatsächlicher Angriffsmethoden unser Verständnis der Angriffsmethoden verbessern und Humanressourcen entwickeln können, die effizienter verteidigen können.

Morgen werde ich für @nyakuo verantwortlich sein.

Ich wünsche dir ein schönes Jahr!

[^ 1]: Informationen zum Penetrationstest durch das Skill Map-Projekt des Vulnerability Diagnostician (https://github.com/ueno1000/about_PenetrationTest)

Recommended Posts

Aufbau einer Trainingsumgebung für Penetrationstests mit Naumachia
Konstruktionsnotiz für eine maschinelle Lernumgebung von Python
Erstellen einer virtuellen Umgebung mit homebrew + pyenv-virtualenv
[Mac] Erstellen einer virtuellen Umgebung für Python
Erstellen einer Conda-Umgebung für ROS-Benutzer
Erstellen einer Python-Entwicklungsumgebung für die KI-Entwicklung
Erstellen einer Python-Umgebung mit pyenv, pyenv-virtualenv, Anaconda (Miniconda)
Schreiben Sie über das Erstellen einer Python-Umgebung zum Schreiben von Qiita Qiita
Erstellen einer R- und Python Docker-Arbeitsumgebung
Vorgehensweise zum Erstellen einer CDK-Umgebung unter Windows (Python)
Aufbau einer Umgebung zur Anzeige organischer Verbindungen mit RDKit
Python-Umgebungskonstruktion für Programmieranfänger (Mac OS)
Erstellen einer virtuellen Python-Umgebung
Erstellen einer virtuellen Python-Umgebung
Aufbau einer Python-Umgebung für künstliche Intelligenz (Chainer / TensorFlow / CSLAIER)
Erstellen einer Jupyter Lab-Entwicklungsumgebung auf WSL2 mit Anaconda3
Erstellen einer Python-Umgebung auf einem Mac bis zur Verwendung von Jupyter Lab
Erstellen einer Entwicklungsumgebung für Android-Apps - Erstellen von Android-Apps mit Python
Erstellen einer Hy-Umgebung für Lisper, der Python nicht berührt hat
[Python] Erstellen einer virtuellen Python-Umgebung für das Pyramiden-Tutorial (Zusammenfassung)
Erstellen einer Kubernetes-Umgebung mit ansible 2
Erstellen einer Python-Umgebung auf einem Mac
Wie wäre es mit Anaconda zum Erstellen einer maschinellen Lernumgebung mit Python?
Erstellen Sie mit dem Serverless Framework eine lokale Entwicklungsumgebung für Lambda + Python
Erstellen Sie mit Docker eine Go-Umgebung
Erstellen einer Windows 7-Umgebung für eine Einführung in das maschinelle Lernen mit Python
Versuchen Sie es mit virtualenv, mit dem eine virtuelle Umgebung von Python erstellt werden kann
Vom Aufbau einer Python-Umgebung für unerfahrene Personen bis zur Hello-Welt
Erstellen einer virtuellen Umgebung mit Python 3
Tipps zur Verwendung von Selen und Headless Chrome in einer CUI-Umgebung
Erstellen einer Kubernetes-Umgebung mit ansible 1
Erstellen einer virtuellen Umgebung für Mayavi für Python 3.6-, Anaconda- und Spyder-Benutzer
[Definitive Edition] Erstellen einer Umgebung zum Erlernen des "maschinellen Lernens" mit Python unter Windows
Vorgehensweise zum Erstellen einer Kube-Umgebung unter Amazon Linux2 (aws) ~ (mit Bonus)
[Pyenv] Erstellen einer Python-Umgebung mit Ubuntu 16.04
Python-Entwicklungsumgebung für macOS mit venv 2016
Erstellen einer LaTeX-Umgebung unter Chrome OS
Erstellen wir eine virtuelle Umgebung für Python
pyenv-Erstellen einer Pypy-Umgebung mit virtualenv (MacOSX)
Eindrücke von der Verwendung von Flask für einen Monat
Erstellen einer Python 3.6-Umgebung mit Windows + PowerShell
[Python] Erstellen Sie eine Stapelumgebung mit AWS-CDK
Erstellen von Scicit-Learn in einer Windows 10-Umgebung mit Pycharm
Erstellen einer Entwicklungsumgebung für maschinelles Lernen
Erstellen einer Umgebung für "Tello_Video" mit Raspbian
Erstellen einer Umgebung für "Tello_Video" unter Windows
Selen + WebDriver (Chrome) + Python | Erstellen einer Umgebung zum Scraping
Bereiten Sie eine Programmiersprachenumgebung für die Datenanalyse vor
Erstellen einer Python-Umgebung mit virtualenv und direnv
Erstellen einer Umgebung zum Ausführen von Python-Skripten (für Mac)
Erstellen einer Anaconda-Umgebung für Python mit pyenv
Ich habe versucht, eine Docker-Datei für die Entwicklungsumgebung von Django zu erstellen
Verschiedene Befehle zum Erstellen einer Umgebung mit Apache
Erstellen einer Umgebung für matplotlib + cartopy auf einem Mac
[Python] Webentwicklungsvorbereitung (Erstellen einer virtuellen Umgebung)
Denken Sie daran, eine Python 3-Umgebung in einer Mac-Umgebung zu erstellen
Befehle zum Erstellen einer Python3-Umgebung mit virtualenv