nemesis545's blog

nov 18, 2022

Como montar un kali como un contenedor

En este pequeño articulo demostraremos como montar un simple contenedor de kali para poder tener una base rapida de herramientas para practicar actividades de pentest o redteam.

Nota: se recomienda usar podman, pero tambien incluyo instrucciones para docker.

Requisitos:

  • Podman o Docker instalados.
  • podman-compose o docker-compose instalados.
  • imagen contenedor kali descargada.

Instalación Podman y/o Docker

Asumiendo que usaremos distribución de linux basada en debian usaremos el administrador de paquetes para instalar.

$ sudo apt update && sudo apt install podman podman-compose
$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Descarga de imagen de contenedor kali

Docker:

$ sudo docker pull kalilinux/kali-rolling

Podman:

$ podman pull docker.io/kalilinux/kali-rolling

Configuración del entorno

Es necesario crear la carpeta de nuestro entorno de trabajo, con el fin de almacenar el home de nuestro usuario de contenedor y las configuraciones que queramos tener en nuestro contenedor:

kali_home
|
|-- root/ #folder home
|
|-- Dockerfile # configuracion de construcción de nueva imagen local
|
|-- docker-compose.yml # configuracion de lanzamiento "orquestación" de nuestro contenedor
$ mkdir kali_home/root -p
$ cd kali_home
$ touch Dockerfile && touch docker-compose.yml

el siguiente es un ejemplo del contenido de los archivos (importante, reemplazar el hash por el que corresponda a la contraseña deseada y por favor personalizar según las necesidades que tengan). Dockerfile

FROM kali-rolling
RUN apt update && apt dist-upgrade -y --yes
RUN apt install sudo bash-completion ssh kali-linux-headless -qq -y --yes
RUN useradd -rm -d /home/kali -s /bin/bash -g root -G sudo kali -p '$6$n.B0T07TzRyTGZw6$raoeh9lX/Q.yYeZyd/dkn.ay699yLG47gcCLWU8qnjXTc8jhCXjd9VqvrX5XBpcCZnhEJvJ3OUTiqyUtqL4/M.'
RUN groupadd kali
RUN usermod -a -G kali kali
EXPOSE 22

docker-compose.yml

version: "3.9"

services:
  kali:
    build: .
    restart: unless-stopped
    command: bash -c "service ssh start && tail -f /var/log/alternatives.log"
    cap_add:
      - NET_RAW
    sysctls:
      - net.ipv6.conf.all.disable_ipv6=0

    volumes:
      - ./root:/home/kali
    ports:
      - "22:22"
    networks:
      - pentnet

networks:
  pentnet:
    driver: bridge
    enable_ipv6: true
    ipam:
      config:
        - subnet: 172.18.1.0/24
          gateway: 172.18.1.1

Para arrancar el contenedor primero se necesita construir la imagen local:

$ sudo docker-compose build 
$ podman-compose build

luego de construirlo podremos iniciar por primera vez con "up -d" o si ya están con el contenedor creado "start"

$ sudo docker-compose up -d 
$ podman-compose up -d 
para volver a levantar luego de apagar o reinciar despues de un "up -d"
$ sudo docker-compose start
$ podman-compose start

Resultado

Tendremos desplegado un contenedor con servicio ssh listo para conectarnos y empezar trabajar.

PODMAN:

$ podman-compose ps
['podman', '--version', '']
using podman version: 4.3.0-dev
podman ps -a --filter label=io.podman.compose.project=kali_home
CONTAINER ID  IMAGE                            COMMAND               CREATED         STATUS            PORTS                  NAMES
085ea307cf92  localhost/kali_home_kali:latest  bash -c service s...  39 seconds ago  Up 3 seconds ago  0.0.0.0:22->22/tcp  kali_home_kali_1
exit code: 0

DOCKER:

$ docker compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
kali_home-kali-1    "bash -c 'service ss…"   kali                running             0.0.0.0:22->22/tcp, :::22-22/tcp

Gracias!!!

abr 28, 2013

Como recupere mi note

Debido a la gran cantidad de peticiones, sobre el tema y para practicar “escribir”; les contaré la odisea. Como seres humanos, siempre estamos propensos a cometer errores, mi último error fue dejar botado mi Galaxy Note GT-N7000, en un taxi que me dejo en mi casa un sábado a las 5:45 am. Así comenzó la odisea, como todos, lo lamente, llore, hasta trate de negociar con el taxista, nada como es lógico nada sirvió. Siempre he dicho que ese “note” es el hijo bastardo de un celular y una tablet: “muy grande para ser celular y muy pequeño para ser tablet”; de todos modos es muy valioso para mí, le tengo un backtrack completo y muchas herramientas para mi trabajo; por eso le instalé el antivirus “lookout”, por consejo de mi gran amiga eepica, es buen producto, para esta ocasión la que nos interesa es la de geolocalización. La función de geolocalización es simple, el programa tiene permiso de encender en cualquier momento el GPS y enviar su localización al portal del producto y a un correo electrónico, aunque tiene una serie de fallas: solo funciona si el teléfono tiene acceso a Internet y es posible des instalarlo como una aplicación o juego. Continuado con la historia, como todo colombiano hice bloquear la sim card y el IMEI, después de eso di por perdido el aparato, porque lookout no me decía donde estaba, me dirigí a mi proveedor celular, busque que me dieran otro dispositivo dentro de lo que ellos llaman reposición, regrese a casa con Motorola XT910 y en la tarde del domingo me dispuse a borrar y/o cambiar cuentas y contraseñas que el cell perdido tiene acceso Gmail, Facebook, Twitter, etc.; Cuando llegue a Dropbox, me di cuenta de que había nuevas fotos y que ninguna me era familiar, revise el correo y lookout reportaba una ubicación, me sorprendí, después del análisis rápido de las fotos y el lugar reportado concluí que el nuevo dueño de mi cell era el taxista y lo tenía conectado a la red wifi de la casa donde vive. Me descontrole de la alegría, pero rápidamente me di cuenta de que no podía recuperarlo yo solo, durante los siguientes días busque ayuda de mis amigos, siendo @EChavarro y me contacto con @NandreaBeltran y ella me puso en contacto con gente de la dijin, ellos me atendieron el miércoles y me dijeron:Pues podemos hacer una especie de operativo, pero tengamos en cuenta de que no podemos hacer más que asustar al taxista, ya que no hay denuncio, no se puede hacer ninguna captura, ni se puede incautar nada. Después de eso decidí usar cualquier ayuda que me pudieran proveer, se acordó hacer el operativo, cuando ellos tengan tiempo. Tuvieron tiempo el viernes, para ese día ya había reunido suficiente información para determinar la localización con una precisión de 4 metros, les di a los caballeros de la dijin la foto del taxista y nos reunimos en la entrada al conjunto residencial donde vivía el taxista, fue una larga espera, porque no había nadie en la casa, cuando volvió los de la dijin hablaron y él accedió fácilmente a devolverlo. Después de todo este episodio, concluí:No ponerle bloqueo al celular “contraseña, pin o patrón” fue la fuente del éxito, de haberlo tenido configurado, seguramente el taxista lo hubiera enviado a desbloquear resultando en una restauración de fábrica y cambio de IMEI “perder lo irremediablemente”. Tener un software de geolocalización siempre será bueno, recomiendo lockout, le acaban de agregar no poder ser desinstalado fácilmente. Cifrar los datos de su SD es buena idea. Siempre busquen ayuda con las autoridades. Tuve mucha, pero mucha suerte, casi nadie recupera tan fácilmente su celular gracias a la dijin, a @EChavarro y a @NandreaBeltran.