nemesis545's bloghttps://nemesis545.net/2022-11-18T18:20:00-05:00Como montar un kali como un contenedor2022-11-18T18:20:00-05:002022-11-18T18:20:00-05:00nemesis545tag:nemesis545.net,2022-11-18:/como-montar-un-kali-como-un-contenedor.html<p>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.</p>
<p><strong>Nota: se recomienda usar podman, pero tambien incluyo instrucciones para docker.</strong></p>
<h4>Requisitos:</h4>
<ul>
<li>Podman o Docker instalados.</li>
<li>podman-compose o docker-compose instalados.</li>
<li>imagen contenedor kali …</li></ul><p>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.</p>
<p><strong>Nota: se recomienda usar podman, pero tambien incluyo instrucciones para docker.</strong></p>
<h4>Requisitos:</h4>
<ul>
<li>Podman o Docker instalados.</li>
<li>podman-compose o docker-compose instalados.</li>
<li>imagen contenedor kali descargada.</li>
</ul>
<h4>Instalación Podman y/o Docker</h4>
<p>Asumiendo que usaremos distribución de linux basada en debian usaremos el administrador de paquetes para instalar.</p>
<div class="highlight"><pre><span></span><code>$ sudo apt update <span class="o">&&</span> sudo apt install podman podman-compose
</code></pre></div>
<div class="highlight"><pre><span></span><code>$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get install <span class="se">\</span>
ca-certificates <span class="se">\</span>
curl <span class="se">\</span>
gnupg <span class="se">\</span>
lsb-release
$ <span class="nb">echo</span> <span class="se">\</span>
<span class="s2">"deb [arch=</span><span class="k">$(</span>dpkg --print-architecture<span class="k">)</span><span class="s2"> signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \</span>
<span class="s2"> </span><span class="k">$(</span>lsb_release -cs<span class="k">)</span><span class="s2"> stable"</span> <span class="p">|</span> 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
</code></pre></div>
<h4>Descarga de imagen de contenedor kali</h4>
<p>Docker:</p>
<div class="highlight"><pre><span></span><code>$ sudo docker pull kalilinux/kali-rolling
</code></pre></div>
<p>Podman:</p>
<div class="highlight"><pre><span></span><code>$ podman pull docker.io/kalilinux/kali-rolling
</code></pre></div>
<h4>Configuración del entorno</h4>
<p>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:</p>
<div class="highlight"><pre><span></span><code><span class="n">kali_home</span><span class="w"></span>
<span class="o">|</span><span class="w"></span>
<span class="o">|--</span><span class="w"> </span><span class="n">root</span><span class="o">/</span><span class="w"> </span><span class="c1">#folder home</span><span class="w"></span>
<span class="o">|</span><span class="w"></span>
<span class="o">|--</span><span class="w"> </span><span class="n">Dockerfile</span><span class="w"> </span><span class="c1"># configuracion de construcción de nueva imagen local</span><span class="w"></span>
<span class="o">|</span><span class="w"></span>
<span class="o">|--</span><span class="w"> </span><span class="n">docker</span><span class="o">-</span><span class="n">compose</span><span class="o">.</span><span class="n">yml</span><span class="w"> </span><span class="c1"># configuracion de lanzamiento "orquestación" de nuestro contenedor</span><span class="w"></span>
</code></pre></div>
<div class="highlight"><pre><span></span><code>$ mkdir kali_home/root -p
$ <span class="nb">cd</span> kali_home
$ touch Dockerfile <span class="o">&&</span> touch docker-compose.yml
</code></pre></div>
<p>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).
<strong>Dockerfile</strong></p>
<div class="highlight"><pre><span></span><code><span class="k">FROM</span><span class="w"> </span><span class="s">kali-rolling</span>
<span class="k">RUN</span><span class="w"> </span>apt update <span class="o">&&</span> apt dist-upgrade -y --yes
<span class="k">RUN</span><span class="w"> </span>apt install sudo bash-completion ssh kali-linux-headless -qq -y --yes
<span class="k">RUN</span><span class="w"> </span>useradd -rm -d /home/kali -s /bin/bash -g root -G sudo kali -p <span class="s1">'$6$n.B0T07TzRyTGZw6$raoeh9lX/Q.yYeZyd/dkn.ay699yLG47gcCLWU8qnjXTc8jhCXjd9VqvrX5XBpcCZnhEJvJ3OUTiqyUtqL4/M.'</span>
<span class="k">RUN</span><span class="w"> </span>groupadd kali
<span class="k">RUN</span><span class="w"> </span>usermod -a -G kali kali
<span class="k">EXPOSE</span><span class="w"> </span><span class="s">22</span>
</code></pre></div>
<p><strong>docker-compose.yml</strong></p>
<div class="highlight"><pre><span></span><code><span class="n">version</span><span class="p">:</span><span class="w"> </span><span class="s2">"3.9"</span><span class="w"></span>
<span class="n">services</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="n">kali</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="n">build</span><span class="p">:</span><span class="w"> </span><span class="o">.</span><span class="w"></span>
<span class="w"> </span><span class="n">restart</span><span class="p">:</span><span class="w"> </span><span class="n">unless</span><span class="o">-</span><span class="n">stopped</span><span class="w"></span>
<span class="w"> </span><span class="n">command</span><span class="p">:</span><span class="w"> </span><span class="n">bash</span><span class="w"> </span><span class="o">-</span><span class="n">c</span><span class="w"> </span><span class="s2">"service ssh start && tail -f /var/log/alternatives.log"</span><span class="w"></span>
<span class="w"> </span><span class="n">cap_add</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">NET_RAW</span><span class="w"></span>
<span class="w"> </span><span class="n">sysctls</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">net</span><span class="o">.</span><span class="n">ipv6</span><span class="o">.</span><span class="n">conf</span><span class="o">.</span><span class="n">all</span><span class="o">.</span><span class="n">disable_ipv6</span><span class="o">=</span><span class="mi">0</span><span class="w"></span>
<span class="w"> </span><span class="n">volumes</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="o">./</span><span class="n">root</span><span class="p">:</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">kali</span><span class="w"></span>
<span class="w"> </span><span class="n">ports</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="s2">"22:22"</span><span class="w"></span>
<span class="w"> </span><span class="n">networks</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">pentnet</span><span class="w"></span>
<span class="n">networks</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="n">pentnet</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="n">driver</span><span class="p">:</span><span class="w"> </span><span class="n">bridge</span><span class="w"></span>
<span class="w"> </span><span class="n">enable_ipv6</span><span class="p">:</span><span class="w"> </span><span class="bp">true</span><span class="w"></span>
<span class="w"> </span><span class="n">ipam</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="n">config</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">subnet</span><span class="p">:</span><span class="w"> </span><span class="mf">172.18</span><span class="o">.</span><span class="mf">1.0</span><span class="o">/</span><span class="mi">24</span><span class="w"></span>
<span class="w"> </span><span class="n">gateway</span><span class="p">:</span><span class="w"> </span><span class="mf">172.18</span><span class="o">.</span><span class="mf">1.1</span><span class="w"></span>
</code></pre></div>
<p>Para arrancar el contenedor primero se necesita construir la imagen local:</p>
<div class="highlight"><pre><span></span><code>$ sudo docker-compose build
</code></pre></div>
<div class="highlight"><pre><span></span><code>$ podman-compose build
</code></pre></div>
<p>luego de construirlo podremos iniciar por primera vez con "up -d" o si ya están con el contenedor creado "start"</p>
<div class="highlight"><pre><span></span><code>$ sudo docker-compose up -d
</code></pre></div>
<div class="highlight"><pre><span></span><code>$ podman-compose up -d
</code></pre></div>
<h5>para volver a levantar luego de apagar o reinciar despues de un "up -d"</h5>
<div class="highlight"><pre><span></span><code>$ sudo docker-compose start
</code></pre></div>
<div class="highlight"><pre><span></span><code>$ podman-compose start
</code></pre></div>
<h4>Resultado</h4>
<p>Tendremos desplegado un contenedor con servicio ssh listo para conectarnos y empezar trabajar.</p>
<p>PODMAN: </p>
<div class="highlight"><pre><span></span><code>$ podman-compose ps
<span class="o">[</span><span class="s1">'podman'</span>, <span class="s1">'--version'</span>, <span class="s1">''</span><span class="o">]</span>
using podman version: <span class="m">4</span>.3.0-dev
podman ps -a --filter <span class="nv">label</span><span class="o">=</span>io.podman.compose.project<span class="o">=</span>kali_home
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
085ea307cf92 localhost/kali_home_kali:latest bash -c service s... <span class="m">39</span> seconds ago Up <span class="m">3</span> seconds ago <span class="m">0</span>.0.0.0:22->22/tcp kali_home_kali_1
<span class="nb">exit</span> code: <span class="m">0</span>
</code></pre></div>
<p>DOCKER:</p>
<div class="highlight"><pre><span></span><code>$ docker compose ps
NAME COMMAND SERVICE STATUS PORTS
kali_home-kali-1 <span class="s2">"bash -c 'service ss…"</span> kali running <span class="m">0</span>.0.0.0:22->22/tcp, :::22-22/tcp
</code></pre></div>
<h3>Gracias!!!</h3>Como recupere mi note2013-04-28T10:20:00-05:002013-04-28T10:20:00-05:00nemesis545tag:nemesis545.net,2013-04-28:/como-recupere-mi-note.html<p>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 …</p><p>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.</p>