OllyScan. Ultimate Port scanner for freaks & geeks

OllyScan es un escaneador de puertos al "estilo" de Nmap (bueno, lo del "estilo" lo dejaremos correr ūüôā
En esta ocasión he realizado una aplicación en modo consola. El aspecto es este: (parámetro -? o -help)


(Haz click  para agrandar)

Existen una serie de argumentos que comento mínimamente a continuación:

-t: Establece el n√ļmero de hilos (Threads) que se utilizar√°n para el escaneo de los puertos. El valor por defecto es 100. Ojo, no "abusar" de este valor, ya que valores muy altos pueden provocar que el sistema se vuelva inestable, se quede sin memoria y que pueda explotar.

-d: Retardo en milisegundos para el inicio de los hilos (ver par√°metro -t). En algunos PCs he observado que es necesario incluir un retardo antes de iniciar el hilo. El valor por defecto es 20. Esto quiere decir que antes de iniciar cada hilo de escaneo hay una espera de 20 milisegundos.

-sckto: Tiempo expresado en milisegundos trancurrido el cual, si no hay comunicación con la ip:puerto que se está escaneando se considera que dicho puerto está "cerrado". Tener en cuenta que el servicio que responde a dicho puerto puede tardar en procesar la petición. Valores muy bajos pueden dar resultados erroneos (puertos cerrados cuando en realidad están abiertos). Los valores de este parámetro deberían estar entre los 500 y 5000. El valor por defecto es 1000 (o lo que es lo mismo, 1 segundo)

-ncon: No muestra los resultados por pantalla. Ideal para usar cuando se guardan los resultados en un fichero

-sclp: El programa por defecto solo muestra los puertos abiertos. Con este parámetros mostrará también los puertos cerrados

-scb: Este parámetro permite que antes de empezar el escaneo se pida una confirmación. En caso de no aceptar la confirmación se aborta el escaneo.

-oxml: Este par√°metro guarda los resultados de los puertos abiertos en un fichero de tipo *.xml que se podr√° parsear con otras aplicaciones. El nombre del fichero tiene que estar entre comillas, por ejemplo:

-oxml:"c:tempprueba.xml"

-ocsv: Guarda los resultados en un fichero de tipo *.csv que puede ser abierto con Microsoft Excel u otras herramietas compatibles. Al igual que el par√°metro anterior el nombre del fichero tiene que estar entre comillas. Este par√°metro siempre crea un fichero nuevo.

-Ocsv: A√Īade los datos a un fichero de tipo *.csv si el fichero existe o lo crea si no existe

-csvdt: Al usar este par√°metro se guardar√° en el fichero *.csv creado con los par√°metros -ocsv o bien -Ocsv la fecha de la captura del escaneo. Ideal para hacer comparatibas y an√°lisis varios.

-v1: Con este parámetro se intentará buscar información del servicio que utiliza el puerto escaneado. Decir que no siempre un servicio tiene porqué "contestar" al escaneo. Además, la recepción se realiza de forma asíncrona, por lo que los resultados pueden no pertenecer a la ip:puerto mostrado.

-ip: Dirección o rango de direcciones IP que se van a escanear. Podemos especificar una IP, varias IPs separadas por comas, un rango de dos IPs separadas por guiones o un batiburrilo de todo.

Ejemplo(s):

1) -ip:123.0.0.1
2) -ip:123.0.0.1,123.0.0.2
3) -ip:123.0.0.1,123.0.0.2,123.2.3.1-123.2.3.254
4) -ip:123.0.0.1-123.0.14.254

-fip: Permite leer las IPs o el rango de IPs de un fichero con IPs separadas por comas.
Por ejemplo, suponer que tenemos un fichero llamado "c:tempips.txt"

El fichero puede tener más de una línea. No es obligatorio que las lineas terminen con comas ( , )
Pero si obligatorio que las IPs esten separadas por comas

-ptcp: Puerto tcp o rango de puertos tcp que se van a escanear para cada una de las direcciones IP especificadas en los par√°metros -ip o -fip Podemos especificar un puerto, varios puertos separados por comas, un rango de dos puertos separados por guiones o un batiburrilo de todo.

Ejemplo(s):

1) -ptcp:21
2) -ptcp:21,25
3) -ptcp:21,25,100-110
4) -ptcp:3389,5900-5910

-ftcp: Permite leer los puertos o el rango de puertos de un fichero de puertos separados por comas.
Se aplican las mismas observaciones que en el par√°metro -fip

Observaciones finales.

Tener en cuenta el rango de IPs que v√°is a utilizar.
Por ejemplo, al utilizar este par√°metro: -ip:81.198.1.1-81.198.1.255 lo que le est√°is diciendo al escaner es que se van a utilizar todas las IPs comprendidas entre dicho rango. eso son 255 IP.
Sin embargo, si utiliz√°is este par√°metro: -ip:81.198.1.1-81.199.1.1 esto representan mas de 65.000 IPs

Si luego adem√°s utiliz√°is este par√°metro: -ptcp:1-1000 le est√°is diciendo al escaner que para esas 65.000 IPs escanee el puerto 1, el 2, el 3, el 4, … y el 1000.

O lo que es lo mismo, se realizar√≠an unas 65.000.000 de peticiones, lo cual es una exageraci√≥n!!! (quiz√°s acabar√≠as el escaneo en febrero del a√Īo 2089, mes arriba, mes abajo ūüôā

Para finalizar aquí os muestro una capturas del programa:

(Por motivos obvios he ocultado las direcciones IP de los resultados )


(haz click para agrandar)

ejemplo usando el par√°metro -v1


(Haz click para agrandar)

Ejemplo de volcado de resultados a un fichero *.csv que puede ser abierto con Microsoft Excel:


(Haz click para agrandar)

Bonus Track

Adjunto una lista de los puertos m√°s "habituales"

  • 21: FTP
  • 23: Telnet
  • 25: Servidor de correo SMTP
  • 80: Servidor HTTP/web
  • 110: Servidor correo POP3¬†
  • 139: NetBIOS
  • 445: Windows file sharing
  • 1433: SQL Server Database
  • 1521: Oracle Database
  • 1723: VPN service
  • 3306: MySQL Database
  • 3389: Escritorio remoto de Microsoft
  • 5900: VNC Escritorio Remoto
  • 8080: Firewall Remote Login

 

Dudas, comentarios, c√≥digo fuente (VB.NET Visual Studio 2008) en el bot√≥n de abajo ūüôā

 

Saludos.
mov eax,ollydbg; Int 13h  

Descargar proyecto OllyScan
(76 KB .NET Framework 3.5)

 

.NET Tutorial 36. Encender el ordenador de forma remota

En este tutorial veremos como es posible "encender" nuestro ordenador desde cualquier otro ordenador de la red o incluso encenderlo desde internet.

A este proceso se le conoce como Wake On Lan, y como su propio nombre indica hace que el PC "despierte" cuando desde otro PC de la red o desde internet se env√≠a lo que se conoce como "Paquete m√°gico". (¬Ņlol?)

El "Paquete mágico" (Magic Packet en inglés) es una secuencia de 102 bytes. Los 6 primeros bytes tienen el valor FF (en hexadecimal) seguidos de 16 veces la dirección MAC (6 bytes). Dicha secuencia de 102 bytes se envía vía UDP

De ahí salen esos 102 bytes: 6 x FF  +  16 x 6 = 102

Recordar que la dirección MAC es una dirección de 6 bytes, del estilo: 12-40-AE-F4-54-15

La dirección MAC la puedes obtener haciendo un ipconfig /all desde la línea de comandos, y es lo que se muestra como "Dirección física".

Para que el Wake on Lan (WoL a partir de ahora) funcione, hay que configurar dos cosas:

  • Activar la opci√≥n en la BIOS
  • Activar la opci√≥n en las car√°cteristicas de la tarjeta de red

Adem√°s es obligatoriamente necesario que tu fuente de alimentaci√≥n sea ATX (el 100% de los ordenadores de hace por lo menos 3-4 a√Īos ya son con fuentes de alimentaci√≥n ATX, por lo tanto, esto no deber√≠a ser un problema)

Configuración en la BIOS

Cabe decir que existen multitud de BIOS, cada una con sus opciones, por lo que las capturas aquí mostradas no tienen que ser las mismas que tengas en tu BIOS.

Normalmente la opción del WoL está dentro de la opción del Power Management Setup:

Dentro de esta opción tenemos esta pantalla: 

Aquí nos interesan dos cosas:

  • El ACPI Suspend Type: El valor debe ser S3
  • El PME Wake Event Up: El valor debe ser Enabled

En otras BIOS el PME Wake Event Up se accede así:

En la pantalla anterior pulsar en IRQ/Event Activity Detect. Se muestra una ventana similar a esta:

Y en esta pantalla hay que habilitar la opción Wake Up On LAN/Ring

Como ya he dicho, hay distintos tipos de BIOS. Consulta la información adecuada para tu BIOS.

Configuración de la tarjeta de red

Una vez configurada la BIOS, tenemos que configurar la tarjeta de red. Para ello, accederemos desde el Administrador de dispositivos: 

Pulsar en las Propiedades de nuestra tarjeta de red.
Aquí ocurre algo "parecido" a la BIOS. Dependiendo de la tarjeta de red instalada, veremos más o menos opciones y las propiedades puede variar de nombre.

En nuestro caso, en las Opciones avanzadas: establecer la propiedad "Wake on Lan Capabilities" con el valor "Pattern Match & Magic Packet":

En las opciones de Administración de energía hay que ACTIVAR la casilla: Permitir a este dispositivo activar el equipo:

Bien, una vez hecho todo esto, ya estamos en disposici√≥n de poder "encender" el PC desde cualquier otro PC de nuestra LAN. Para ello tenemos el c√≥digo que acompa√Īa a este tutorial.

En este caso nos encontramos con una aplicación en modo consola.
El programa acepta dos par√°metros:

  • -mac
  • -p

Si no se especifica ning√ļn par√°metro se ejecuta la aplicaci√≥n y se pide que se introduzca una direcci√≥n MAC:


(Haz click para agrandar)

Hay que introducir la dirección MAC separada por guiones, tal y como se muestra cuando hacemos un ipconfig /all

Ejemplo de como ejecutar el tutorial pasándole directamente la dirección MAC:

Tanto en un caso como en el otro, si todo est√° bien configurado, ver√°s que una vez enviado el "paquete m√°gico" a la MAC especificada, se enciende el PC. Parece m√°gia ūüôā

Bonus Track

El programa de este tutorial permite hacer WoL entre distintos ordenadores de nuesta red.
Sin embargo, muchas veces querremos encender nuestro PC cuando estamos en la universidad, en el trabajo, en casa de un amigo, etc.

Para ello he modificando ligeramente el código de este tutorial y me he creado una aplicación en ASP.NET. El aspecto es este: 


(Haz click para agrandar)

La página es la siguiente:

http://aspspider.info/wakeonlan

La aplicación está colgada en un hosting gratuito, aspspider en este caso.

Actualización 28/01/2011:

Visto que el servidor gratuito aspspider falla más que una escopeta de feria y que está un 99,9% del tiempo off-line he colgado la aplicación en un hosting de un colega:


(Haz click para cargar la p√°gina)

La dirección es:

http://wol.transitopesado.com

 

Para este caso, hay que configurar un par de cosillas en el router:

  • A√Īadir las entradas¬†arp correspondientes
  • Abrir un puerto UDP¬†(por ejemplo, el 9) en el router y redirigirlo al PC en cuesti√≥n. Para ello, el PC en cuesti√≥n no tiene que tener DHCP.
  • Es obligatorio que el router tenga DDNS para poder configurar una cuenta de DynDNS.org, cosa que actualmente casi el 100% de routers ya lo tienen. Esto si tienes ip din√°mica. Si tienes ip fija pues basta con introducir la ip fija.

He estado haciendo pruebas y el código en ASP.NET funciona a la perfección y más teniendo en cuenta que está alojado en un hosting gratuito.
De esta forma, ya puedo encender mi PC desde cualquier parte del mundo (Dios bendiga DynDNS¬†ūüôā

Nota 1: Estoy empezado mis pinitos con ASP.NET, por eso la página se ve "fea", no hay hojas de estilos de momento, pero bueno, funcionar funciona, que es lo importante.

Ver Nota de actualización más arriba)

Nota 2: Si alguien quiere el código ASP.NET que me mande un MP

Nota 3: He incluido también el ejecutable por si alguien quiere probarlo y no tiene el Visual Studio para compilar el código. Es necesario el .NET Framework 3.5 (Vista y 7 ya lo llevan). Qué lo disfrutéis.

Saludos.
mov eax,ollydbg; Int 13h  

Descargar proyecto .NET Tutorial 36
(12 KB. Visual Studio 2008)

Descargar binarios del .NET Tutorial 36
(5 KB. Requiere .NET Framework 3.5)