Archivo

Posts Tagged ‘network hacking’

Actividades básicas a desempeñar en un proceso de explotación y post-explotación.

septiembre 8, 2018 Deja un comentario

Cuando se realiza una auditoría de seguridad contra un sistema, normalmente no se sabe exactamente qué nos encontraremos. Es posible que el sistema en cuestión tenga varias vulnerabilidades que son explotables remotamente, pero debido a una falta de rigor en el proceso de recolección de información, dichos fallos pasen desapercibidos. Es por este motivo que resulta tan importante centrar la mayor parte del tiempo en obtener tanta información como sea posible del objetivo y de esta manera, tener un entendimiento o una imagen global sobre cómo funciona dicho sistema y las cuestiones más relevantes de su configuración, detalles sobre su construcción y relaciones que pueda tener con otros sistemas del entorno. Evidentemente cada auditoría es distinta y depende del alcance acordado con el cliente, en algunos casos se trata simplemente de verificar la seguridad de una aplicación concreta, mientras que en otros casos es necesario realizar pruebas de penetración contra un segmento de red completo. Aunque se trata de escenarios distintos, la metodología que se debe seguir sigue siendo la misma, comenzando por proceso detallado de recolección de información y pruebas sobre los posibles puntos de entrada.

En esta entrada simplemente se procederá a mencionar algunas de las pruebas básicas que un pentester suele desempeñar en una auditoría de seguridad en las etapas de explotación y post-explotación. Sin ser una lista demasiado completa, da una visión general a modo de “checklist” de las cosas que normalmente se suelen analizar en este tipo de trabajos.

Recolección de información.

Enumeración.

  • Uso de los resultados obtenidos en las fases anteriores para detectar posibles puntos de entrada y componer vectores de ataque.
  • Enfocar esfuerzos en los servicios que se encuentran funcionando en el objetivo.
  • Ganar acceso y aplicar las medidas necesarias para garantizar accesos futuros.
  • No limitarse a una única vía de acceso. Encontrar todas las vulnerabilidades y brechas.
  • Uso de herramientas:
    • Metasploit Framework
    • Nmap, Hping3, Queso, etc.
    • Netcat/Socat
    • Traceroute/wireshark/tcpdump
  • Fingerprinting a servicios comunes:
    • DNS: nslookup, dig, axfr, fierce2, Metasploit Framework.
    • FTP: Metasploit Framework, Nmap, Cliente de FTP, Wireshark, tcpdump.
    • HTTP: Burp, ZAP Proxy, httprint, PostMan, WGET/cURL, DirBuster, etc.
    • IMAP, POP, SMTP: Metasploit Framework, scripts especificos para cada producto.
    • SNMP: onesixtyone, braa, snmpenum, etc.
  • Otros servicios.
    • Bases de datos: PostgreSQL, MySQL, SQL Server, Oracle.
    • Servicios para compartir recursos en red: SMB/Samba
    • Telnet/SSH
    • RDP (Remote Desktop Protocol), VNC.
    • Kerberos.
    • LDAP.

Detección y explotación de vulnerabilidades.

  • Password Guessing – Ataques con diccionario.
    • Servicios de acceso remoto como FTP, Telnet, SMTP, SSH o incluso HTTP, implementan mecanismos de autenticación basados en usuarios y contraseñas.
    • En algunas ocasiones, dichos servicios pueden tener cuentas con credenciales por defecto.
    • El servicio puede ser resistente a un ataque directo, pero si los usuarios no utilizan contraseñas fuertes, es un servicio potencialmente explotable.
    • THC Hydra, Cain & Abel, Crowbar, lsadump2, crunch
  • Password Guessing y Vulnerabilidades en FTP.
    • Múltiples implementaciones vulnerables.
    • Verificar la versión del servicio FTP en ejecución en el objetivo y verificar si existen vulnerabilidades sobre dicha implementación.
    • Verificar si se permite la autenticación anónima y en tal caso, verificar los permisos asignados y los ficheros/directorios a los que se puede acceder.
    • Una búsqueda rápida en shodan.io puede arrojar algunos objetivos potenciales.
  • Vulnerabilidades en SMB/SAMBA.
    • Las principales implementaciones de este protocolo han reportado serias vulnerabilidades a lo largo de su historia, tanto en Windows como en Linux.
    • Las principales implementaciones de este protocolo han reportado serias vulnerabilidades a lo largo de su historia, tanto en Windows como en Linux.
    • Buscar usuarios en el sistema: RPCClient. Suponiendo que el servicio admita sesiones SMB Nulas.
      • rpcclient -U “” SMBSERVER
    • Múltiples módulos en Metasploit Framework:
      • auxiliary/scanner/smb/smb_enumusers_domain
      • auxiliary/scanner/smb/smb_enumshares
      • auxiliary/scanner/smb/smb_login
      • exploit/multi/samba/usermap_script
  • Password Guessing – Vulnerabilidades en HTTP
    • Servidores web mal configurados o con versiones vulnerables.
    • Amplios vectores de ataque posibles, no solamente sobre la infraestructura del servidor web, sino también sobre las aplicaciones web instaladas.
    • Uno de los servicios más explotados por los atacantes en Internet.
    • Múltiples herramientas. Burp Proxy, Metasploit Framework, Nikto, W3AF, Wapiti, sqlmap, etc.
  • Vulnerabilidades en SSH/SFTP/NSF
    • Password guessing + SSH Root Access = Ataque completo aunque poco probable.
    • Servicios “r” mal configurados podrían suministrar una vía de acceso (rlogin, rexec, rshell). Se encuentran disponibles por defecto en los puertos 512, 513 y 514.
    • Comandos útiles para verificar sistema de archivos compartido con NFS:
      • rlogin -l root <target>
      • rpcinfo -p <target>
      • showmount -e <target>
    • Generar clave SSH desde el equipo del atacante e intentar importar dicha clave en la víctima. (necesario instalar nfs-common).
      • mount -t nfs <target>:/ /dir/attacker
      • cat /dir/attacker/.ssh/authorized_keys
      • umount /dir/attacker.
      • grep -lr <key>
      • ssh -i <key> user@target
    • Uso de versiones vulnerables.
      • Debian OpenSSL Predictable PRNG. Verificar (también poco probable, pero…):

http://itsecurity.net/

https://github.com/galkan/crowbar

https://www.exploit-db.com/exploits/5720/

https://web.archive.org/web/20110723091928/

http://digitaloffense.net/tools/debian-openssl/

Detección y explotación de vulnerabilidades.

  • Una vez se gana acceso al sistema, el principal objetivo del atacante será obtener información sobre la víctima y obtener un control total sobre el sistema comprometido.
  • Es necesario ejecutar una búsqueda completa en el sistema para encontrar cualquier tipo de información que pueda resultar útil para el atacante.
  • Normalmente, el sistema comprometido tendrá fuertes limitaciones en términos de herramientas y utilidades para realizar el proceso de post- explotación.
  • Objetivos:
    • Elevación de privilegios y control total del sistema.
    • Evasión de mecanismos de seguridad (firewalls, AVS, IDS, IPS, etc.)
    • Filtración de información.
    • Establecimiento de puertas traseras.
    • Uso del sistema comprometido como pivote para atacar otros sistemas del segmento de red interno.
    • Espionaje y vigilancia de los usuarios del sistema (keyloggers, scrapers, capturas de pantalla, etc.)
  • Recolección de información en Post-Explotación:
    • Listado de los usuarios disponibles en el sistema.
    • Listado de interfaces de red.
    • Listado de procesos en ejecución.
    • Listado de grupos, roles y permisos.
    • Listado de tareas programadas.
    • Listado de dispositivos conectados en el sistema.
    • Listado de herramientas disponibles. (lenguajes de programación, librerías, interpretes, etc).
    • Búsqueda de ficheros con SUID habilitado (Linux).
    • Listado de bases de datos y aplicaciones con configuraciones por defecto.
  • Módulos para recolección de información con Metasploit Framework: Partiendo de una sesión Meterpreter es posible ejecutar múltiples scripts que permiten llevar a cabo muy fácilmente procesos de postexplotación sobre sistemas GNU/Linux, por ejemplo.
    • post/linux/gather/checkvm
    • post/linux/gather/enum_configs
    • post/linux/gather/enum_network
    • post/linux/gather/enum_protections
    • post/linux/gather/enum_system
    • post/linux/gather/enum_users_history
    • post/linux/gather/enum_system
  • Extracción de información y establecimiento de puertas traseras con Metasploit Framework: Partiendo de una sesión Meterpreter también es posible ejecutar comandos que permitan la extracción de información.
    • Sysinfo
    • netstat
    • load sniffer ; sniffer_*
    • get_local_subnets
    • webcam_*
    • keyscan_*
    • hashdump

Como he mencionado al comienzo de este artículo, se trata simplemente de una lista básica que puede ser útil para tener en cuenta las pruebas que se pueden/deben realizar en una auditoría de seguridad contra un sistema dado. No es una lista extensa ni mucho menos, pero es un buen punto de partida, especialmente para aquellos auditores menos experimentados que comienzan a realizar pruebas de seguridad.

Finalmente comentaros que las cosas que se mencionan en este artículo de una forma un tanto superficial, serán vistas en detalle (entre muchas otras cuestiones interesantes) en las próximas formaciones que se llevarán a cabo en Securízame sobre Hacking ético. Concretamente, tenemos una cita el fin de semana del 28 de septiembre con la primera formación del semestre sobre Hacking web y Hacking en sistemas nivel básico/intermedio: https://cursos.securizame.com/courses/curso-presencial-de-pentesting-1-hacking-web-hacking-sistemas-basico/

Luego, el fin de semana del 26 de noviembre tendremos la continuación con el curso avanzado y finalmente, el fin de semana del 23 de noviembre tendremos el entrenamiento práctico con un buen conjunto de máquinas vulnerables que podréis romper.

Lo dicho, espero que esta pequeña lista os sirva en vuestro trabajo y además, espero veros en Securízame en las próximas formaciones que llevaremos a cabo.

Un saludo y Happy Hack!
Adastra.

Retransmisión de trafico con TCPReplay

julio 2, 2015 Deja un comentario

Tcpreplay es una suite de herramientas para el análisis y manipulación de paquetes de datos, muy utilizada principalmente por administradores de sistemas y redes. Las herramientas incluidas en Tcpreplay funcionan principalmente sobre ficheros PCAP que han sido generados previamente por herramientas como tcpdump, wireshark, ethereal, etc. Permiten modificar las cabeceras de los paquetes en varias de sus capas para posteriormente reinyectarlos en la red o también para clasificar y tipificar los paquetes de datos incluidos en los ficheros PCAP. Dicho esto, el principal objetivo de TCPReplay es permitir la modificación de paquetes de datos para probar el funcionamiento de routers, firewalls, IDS/IPS y similares, no obstante es importante tener en cuenta que no funciona adecuadamente contra servidores concretos de cualquier tipo, ya que es un “stateless dispacher”, lo que quiere decir que se encarga de gestionar la posible comunicación que puede existir entre un cliente y un servidor. TCPReplay no soporta flujos de comunicación o el modelo clásico de múltiples peticiones y respuestas, solamente se encarga de replicar los paquetes de datos contenidos en un PCAP. En este articulo os hablaré de esta herramienta, pero seguramente para muchos de vosotros sea más interesante una herramienta que permita hacer labores de fuzzing contra servicios concretos simplemente alterando y reinyectado los paquetes contenidos en un PCAP, para esto también hay varias utilidades y librerías de las que hablaré en el próximo post.
Para empezar, hay que tener en cuenta que hay una versión bastante antigua de la herramienta y que fue inicialmente desarrollada por Aaron Turner (http://tcpreplay.synfin.net/) pero desde hace un tiempo, el equipo de Appneta a tomado el control y ahora todas las mejoras se suben directamente a su repositorio Git. La herramienta se puede instalar directamente desde el código, el cual se encuentra ubicado en el siguiente repositorio: https://github.com/appneta/tcpreplay o en sistemas basados en Debian con APT-GET (instala una versión antigua).

>./configure –prefix=/opt/tcpreplay
>make
>sudo make install

>cd bin

>ls -l

total 2916

-rwxr-xr-x 1 adastra adastra 516147 jun 11 00:33 tcpbridge

-rwxr-xr-x 1 adastra adastra 120661 jun 11 00:33 tcpcapinfo

-rwxr-xr-x 1 adastra adastra 404802 jun 11 00:33 tcpliveplay

-rwxr-xr-x 1 adastra adastra 433456 jun 11 00:33 tcpprep

-rwxr-xr-x 1 adastra adastra 444838 jun 11 00:33 tcpreplay

-rwxr-xr-x 1 adastra adastra 553339 jun 11 00:33 tcpreplay-edit

-rwxr-xr-x 1 adastra adastra 496851 jun 11 00:33 tcprewrite

Una vez instalado, se puede ver la versión del programa y las características soportadas.

>./tcpreplay -V

Ahora es el momento de utilizar la herramienta y jugar un poco con los interruptores que soporta. Antes de continuar, es necesario contar con un fichero PCAP que será utilizado por la herramienta para replicar los paquetes de datos que se encuentran almacenados en dicho fichero. Para realizar pruebas simples, se pueden capturar paquetes con TCPDump, Wireshark o Scapy y guardarlos en un PCAP o también es posible descargar alguno de los ficheros de ejemplo que se encuentran subidos en el proyecto. http://tcpreplay.appneta.com/wiki/captures.html

Para efectos prácticos, se utilizarán los ficheros PCAP del proyecto, los cuales se pueden abrir con una herramienta como wireshark

tcpreplay

PCAP de “BigFlows”

Partiendo de este fichero, se puede utilizar la herramienta e indicar la interfaz de red que será utilizada para el envío de los paquetes.

>sudo ./tcpreplay -i eth0 -t /home/adastra/Escritorio/smallFlows.pcap

File Cache is enabled

Actual: 14261 packets (9216531 bytes) sent in 0.087737 seconds.

Rated: 105047254.8 Bps, 840.37 Mbps, 162542.59 pps

Flows: 1209 flows, 13779.81 fps, 14243 flow packets, 18 non-flow

Statistics for network device: eth0

Attempted packets: 14261

Successful packets: 14261

Failed packets: 0

Truncated packets: 0

Retried packets (ENOBUFS): 0

Retried packets (EAGAIN): 0

El ejemplo anterior utiliza el interruptor “-i” para especificar el dispositivo primario de salida, por medio del cual se enviarán los paquetes del fichero PCAP y con “-t” se especifica que los paquetes deben enviarse tan pronto como sea posible.
Existen otras opciones que permiten limitar la velocidad, el número de paquetes máximo a enviar o incluso, especificar otro dispositivo de salida por el que también se replicará el trafico.

>sudo ./tcpreplay -i eth0 -p 100 -L 100 /home/adastra/Escritorio/smallFlows.pcap

Actual: 101 packets (61705 bytes) sent in 1.00 seconds.

Rated: 61653.7 Bps, 0.493 Mbps, 100.91 pps

Flows: 11 flows, 10.99 fps, 101 flow packets, 0 non-flow

Statistics for network device: eth0

Attempted packets: 101

Successful packets: 101

Failed packets: 0

Truncated packets: 0

Retried packets (ENOBUFS): 0

Retried packets (EAGAIN): 0

El interruptor “-p” permite indicar el número de paquetes que se enviarán por segundo y “-L” indica el número total de paquetes que se deben leer y enviar desde el PCAP. Como se puede apreciar, en este caso concreto ambos interruptores tienen el valor “100” por este motivo los paquetes se han enviado en exactamente 1 segundo.

Por otro lado, anteriormente se ha utilizado el interruptor “-t” que indica que los paquetes deben enviarse a su destino lo más rápido posible, sin embargo existe otra opción que permite controlar la velocidad de trasferencia de los paquetes, dicho interruptor es –mbps.

>sudo ./tcpreplay -i eth0 -L 100 –mbps 9500 /home/adastra/Escritorio/smallFlows.pcap

Actual: 101 packets (61705 bytes) sent in 0.000525 seconds.

Rated: 117533333.3 Bps, 9490.26 Mbps, 192380.95 pps

Flows: 11 flows, 20952.38 fps, 101 flow packets, 0 non-flow

Statistics for network device: eth0

Attempted packets: 101

Successful packets: 101

Failed packets: 0

Truncated packets: 0

Retried packets (ENOBUFS): 0

Retried packets (EAGAIN): 0

En este caso, se envían los paquetes a un máximo de 9500 MB por segundo y tal como se puede ver en las estadísticas que arroja “tcprelay”, el promedio ha sido de 9490 MBPS. Evidentemente, entre más bajo sea este valor, más tiempo tardará la herramienta en replicar los paquetes de datos.

Otra característica interesante de TCPReplay es la posibilidad de controlar los flujos de trafico, los cuales son simplemente una secuencia de paquetes que se intercambian entre un emisor y un receptor. Por ejemplo, el clásico TCP Hanshake, es un “traffic flow” que se compone por una serie de paquetes que de forma independiente puede que no tengan mayor sentido, pero cuando se relacionan con otros paquetes tienen significado bien definido. TCPReplay cuenta con varios interruptores para controlar los flujos contenidos en un fichero PCAP. Uno de ellos es “–unique-ip”, el cual se encarga de modificar la dirección IP de destino tras cada repetición de un bucle (con el interruptor –loop). Con “–flow-expiry”, se le indica a la herramienta que debe ignorar aquellos flujos que se consideran “expirados”, es decir, aquellos que tardan más tiempo del especificado en completarse. El valor de este interruptor debe indicarse en segundos y evidentemente, entre más pequeño sea, mayor será el número de paquetes descargados ya que se consideran que hacen parte de un flujo expirado.

 

>sudo ./tcpreplay -i eth0 -t –flow-expiry 30 /home/adastra/Escritorio/bigFlows.pcap

Actual: 791615 packets (355417784 bytes) sent in 8.01 seconds.

Rated: 43556960.3 Bps, 348.45 Mbps, 97013.55 pps

Flows: 58505 flows, 40686 unique, 17819 expired, 7169.87 fps, 791179 flow packets, 436 non-flow

Statistics for network device: eth0

Attempted packets: 791615

Successful packets: 791615

Failed packets: 0

Truncated packets: 0

Retried packets (ENOBUFS): 0

Retried packets (EAGAIN): 0

El fichero “bigFlows.pcap” contiene una buena muestra de datos con paquetes de todo tipo, con lo cual es una buena forma de ver el funcionamiento de estos interruptores. En este caso concreto se puede ver que el número de flujos que tardan 30 o más segundos en completarse son marcados como expirados.

>sudo ./tcpreplay -i eth0 -t –flow-expiry 90 /home/adastra/Escritorio/bigFlows.pcap

Actual: 791615 packets (355417784 bytes) sent in 7.08 seconds.

Rated: 45216137.2 Bps, 361.72 Mbps, 100709.00 pps

Flows: 41818 flows, 40686 unique, 1132 expired, 5320.07 fps, 791179 flow packets, 436 non-flow

Statistics for network device: eth0

Attempted packets: 791615

Successful packets: 791615

Failed packets: 0

Truncated packets: 0

Retried packets (ENOBUFS): 0

Retried packets (EAGAIN): 0

Como se puede ver en las estadísticas generadas por la herramienta, el número de flujos expirados es muchísimo menor, ya que el limite que se ha especificado es de 1 minuto y medio, un valor lo suficientemente alto como para considerar que se trata de una conexión extremadamente lenta o simplemente que el destinatario no era capaz de procesar los paquetes enviados por el emisor debido a que se encontraba ocupado o no disponible.

Existen algunas otras características interesantes en TCPReplay, tales como la posibilidad de integrar Netmap para mejorar las operaciones I/O por medio de buffers RX/TX preasignados y buffers en memoria con accesos asíncronos.

Un saludo y Happy Hack!
Adastra.

A %d blogueros les gusta esto: