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 ed nmap
  • 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
  • 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 parametro tty: 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