Esempio di Strumenti TCP
net1-util-metasploitable
Viene preparata una rete Docker con due contenitori:
- one - un client derivato da Alpine con qualche utility extra, incluso
hping3
ednmap
- two - un'istanza di Metasploitable versione 2, con numerose vulnerabilità
Preparazione dello scaffolding:
mkdir -p ~/ex/net1-util-metasploitable
cd ~/ex/net1-util-metasploitable
mkdir meta util
touch util Dockerfile docker-compose.yml
tree
.
├── docker-compose.yml
├── meta
└── util
└── Dockerfile
Il Dockerfile del client è:
vim util/Dockerfile
FROM alpine:3.7
MAINTAINER John Smith <john@stormforce.ac>
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
RUN apk update --allow-untrusted
RUN apk add --no-cache --allow-untrusted openssh tcpdump curl hping3 nmap
CMD ["/bin/sleep","1000000"]
- Aggiungiamo il repository
http://dl-cdn.alpinelinux.org/alpine/edge/testing
alla lista dei repositories- E' qui che si trova
hping3
- E' qui che si trova
- Compiamo l'update del software
- Installiamo i pacchetti
L'opzione --allow-untrusted
è necessaria perchè il nuovo repository non ha pacchetti firmati.
Prepariamo quindi il docker-compose.yml
.
vim docker-compose.yml
version: '3.6'
services:
one:
build: util
image: util
container_name: one
hostname: one
cap_add:
- ALL
networks:
net1:
ipv4_address: 192.168.101.11
two:
image: tleemcjr/metasploitable2
container_name: two
hostname: two
cap_add:
- ALL
tty: true
networks:
net1:
ipv4_address: 192.168.101.12
networks:
net1:
name: net1
ipam:
driver: default
config:
- subnet: 192.168.101.0/24
Note:
- Verrà costruita la nuova immagine
util:latest
se non esiste. - L'immagine di Metasploitable,
tleemcjr/metasploitable2
verrà scaricata dalla rete. - Il contenitore di Metasploitable passerà qualche minuto a generare tutta una serie di servizi, per ciascuno generando dei messaggi a
/dev/console
. Il parametrotty: true
genera/dev/console
.
NOTA
L'esercizio è disponibile in formato tar al link net1-util-metasploitable.tar
Esecuzione dell'Esercizio
Lanciamo il progetto con:
docker compose up -d
Monitoriamo il progresso con:
docker logs -f two
finchè si ferma. Quindi Ctrl-C
.
Apriamo un terminale one. Diamo il comando:
nmap two
Il risultato è simile a:
Starting Nmap 7.60 ( https://nmap.org ) at 2024-02-22 19:24 UTC
Nmap scan report for two (192.168.101.12)
Host is up (0.000036s latency).
rDNS record for 192.168.101.12: two.net1
Not shown: 979 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2121/tcp open ccproxy-ftp
3306/tcp open mysql
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
8009/tcp open ajp13
8180/tcp open unknown
MAC Address: 02:42:C0:A8:65:0C (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 3.11 seconds
Al termine fermiamo e smantelliamo il progetto con:
docker compose down