Linux Basics For Hackers
Linux Basics For Hackers
Linux Basics For Hackers
PARA HACKERS
PRIMEROS PASOS CON LA RED ,
ESCRITURA G , Y SEGURIDAD EN KALI
OCUPAR LA WEB
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Conceptos básicos de
Linux para hackers
Empezar con
Redes, scripting y seguridad en
Kali
Por OccupyTheWeb
San Francisco
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Reservados todos los derechos. Ninguna parte de este trabajo puede reproducirse o transmitirse de ninguna forma ni por ningún medio,
electrónico o mecánico, incluidas fotocopias, grabaciones o cualquier sistema de almacenamiento o recuperación de información, sin
el permiso previo por escrito del propietario de los derechos de autor y del editor.
ISBN10: 1593278551
ISBN13: 9781593278557
Para obtener información sobre distribución, traducciones o ventas al por mayor, comuníquese directamente con No Starch Press, Inc.:
Sin almidón Press, Inc.
245 Calle 8, San Francisco, CA 94103
teléfono: 1.415.863.9900; info@nostarch.com
www.nostarch.com
No Starch Press y el logotipo de No Starch Press son marcas comerciales registradas de No Starch Press, Inc. Otros nombres de
productos y empresas mencionados aquí pueden ser marcas comerciales de sus respectivos propietarios. En lugar de utilizar un símbolo
de marca registrada cada vez que aparece un nombre de marca registrada, utilizamos los nombres solo de manera editorial y para
beneficio del propietario de la marca, sin intención de infringir la marca.
La información contenida en este libro se distribuye "tal cual", sin garantía. Si bien se han tomado todas las precauciones en la
preparación de este trabajo, ni el autor ni No Starch Press, Inc. tendrán responsabilidad alguna ante ninguna persona o entidad con
respecto a cualquier pérdida o daño causado o presuntamente causado directa o indirectamente por el información contenida en el mismo.
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Sobre el Autor
OccupyTheWeb (OTW) es el seudónimo del fundador y escritor principal del sitio
web de capacitación para hackers y pentester, https://www.hackers rise.com/. Es ex
profesor universitario y tiene más de 20 años de experiencia en la industria de la
tecnología de la información. Ha entrenado a piratas informáticos en todo Estados
Unidos, incluidas ramas del ejército estadounidense (Ejército, Fuerza Aérea y Armada)
y de la comunidad de inteligencia estadounidense (CIA, NSA y DNI). También es un
ávido ciclista de montaña y practicante de snowboard.
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Contenidos breves
Agradecimientos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
Capítulo 15: Gestión del kernel de Linux y de los módulos cargables del kernel. . . . . . . . . . . 165
Capítulo 17: Conceptos básicos de secuencias de comandos Python para piratas informáticos. . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Índice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Contenido en detalle
Introducción xxi
¿Qué hay en este libro? . . . . . . . . . . . . .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . XXII
¿Qué es el hacking ético? . . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . xxiii
Pruebas de penetración . . . . . . . .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . xxiii
Militar y Espionaje. . .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . xxiii
Por qué los piratas informáticos utilizan Linux . . . . . . . . . . .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . XXIV
Linux es de código abierto. . . . . . .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . XXIV
Linux es transparente. . . . . . . .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . XXIV
Linux ofrece control granular. . .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . XXIV
La mayoría de las herramientas de piratería están .. .. .. . .. .. .. .. .. . .. .. .. . XXIV
. ..
escritas para Linux. El futuro pertenece a Linux/Unix. .. .. .. .. . .. .. .. .. .. . .. .. .. . XXIV
Descarga de máquinas . .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . xxvi
virtuales Kali Linux. . . . . . . . . . . . . . . . . . . . . . .. .. .. .. . .. .. .. .. .. . .. .. .. . xxvi
Instalando VirtualBox. . . . . . . . . . . . . . .. .. .. .. . .. .. .. .. .. . .. .. .. . xxvi
Configurando su máquina virtual. . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . xxvii
Instalación de Kali en la VM. . . . . . . . . . .. .. .. .. . .. .. .. .. .. . .. .. .. . xxxx
Configurando Kali. . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. . .. .. .. .. .. . .. .. .. . xxxi
1
Comenzando con lo básico 1
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
. .. ..
Cambiar el nombre de un archivo. . .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. . . . . 15
Eliminación de un archivo. . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. . . . . dieciséis
Eliminación de un directorio. . . .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. . . . . dieciséis
¡Ve a jugar ahora! . . . . . . . . . . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. . . . . 17
Ejercicios . . . . . . . . . . . . . . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. . . . . 17
2
Manipulación de texto 19
.. .. .. .. .. . .. .. .. .. .. . .. ..
Visualización de archivos. .. .. .. . .. .. .. .. .. . .. .. .. . . 20
Tomando la cabeza. . . . . . . . . . . . . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. . . 20
Agarrando esa cola. . . . . . . . . . . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. . . 21
Numeración de las líneas. . . . . . . . . . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. . . 22
Filtrado de texto con grep. . . . . . . . . . . . . . . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. . . 22
Desafío hacker: uso de grep, nl, tail y head. . .. .. .. .. .. . .. .. .. . . 23
Usando sed para buscar y reemplazar. . . . . . . . . . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. . . 23
Ver archivos con más y menos. . .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 24
Controlar la pantalla con más. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 25
Mostrar y filtrar con menos. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 25
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. . . 26
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. . . 27
3
Análisis y gestión de redes Análisis de redes con ifconfig. . . . 29
29 .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. ..
Comprobación de dispositivos de red inalámbrica con iwconfig. .. .. . .30
. . .. .. .. .. .. . .. .. ..
Cambiar la información de su red. . . 31 . . . . . . . . . . . . . . . . . . . . . . .. .. . .. .. ..
Cambiar su dirección IP. . . . 31 . . . . . . . . . . . . . . . . . . . . . . .. .. . .. .. ..
Cambiar su máscara de red y dirección de transmisión. . . . 32 . . .. .. . .. .. ..
.. . .. .. .. .. .. . .. .. ..
Falsificando su dirección MAC. . . . 32 .. .. . .. .. ..
Asignación de nuevas direcciones IP desde el servidor DHCP. . .. .. 32 .. .. .. . .. .. ..
. . .
Manipulación del sistema de nombres de dominio. . . 33. . . . . . . . . . . . . . . . . .. .. . .. .. ..
Examinando DNS con dig . . ..33 . .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. ..
Cambiar su servidor DNS ................................. 34
Mapeo de sus propias direcciones IP. . .. .36 . .. .. .. .. . .. .. .. .. .. . .. .. ..
Resumen . . . 37 . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. . .. .. .. .. .. . .. .. ..
Ejercicios . . . 37
.. .. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. ..
4
Agregar y eliminar software Uso de apt to Handle 39
Software. . .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 40
Buscando un paquete. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 40
Agregar software. . . . . .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 40
Eliminación de software. . . .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 41
Actualización de paquetes. . . .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 42
Paquetes de actualización. . . . . . . . .
. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 42
Agregar repositorios a su archivo sources.list. .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 43
Usando un instalador basado en GUI. . . . . . . . . . . . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 45
Instalación de software con git. . . . . . . . . . . . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 46
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 47
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 47
5
Controlar los permisos de archivos y directorios 49
6
Gestión de proceso 61
Visualización de procesos. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 62
Filtrado por nombre de proceso. . . . . . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. . . 63
Encontrar los procesos más codiciosos con top . .. .. .. . .. .. .. .. .. . .. .. .. . . 64
Gestión de Procesos. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 64
Cambiar la prioridad del proceso con nice. . . . . .. .. .. . .. .. .. .. .. . .. .. .. . . sesenta y cinco
Procesos de matanza. . . . . . . . . . . . . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. . . 66
Ejecución de procesos en segundo plano. . . .. .. .. . .. .. .. .. .. . .. .. .. . . 68
Mover un proceso al primer plano. . .. .. .. .. . .. .. .. .. .. . .. .. .. . . 68
Procesos de programación. . . . . . . . . . . . . . . . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. . . 69
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. . . 70
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. . . 70
7
Gestión de variables de entorno de usuario 71
¡GUAU! Libro
Contenido en detalle xiii
electrónico www.wowebook.org
Machine Translated by Google
8
Secuencias de comandos bash 81
Un curso intensivo en Bash. . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 82
Su primer guión: "¡Hola, hackers, levántense!" . . . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 82
Configuración de permisos de ejecución. . . . . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 83
Ejecutando HelloHackersArise. . . . . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 84
Agregar funcionalidad con variables y entrada del usuario. .. .. .. .. .. . .. .. .. . . 84
Su primer script de hacker: busque puertos abiertos. .. .. .. . .. .. .. .. .. . .. .. .. . . 86
Nuestra tarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . . 86
Un escáner sencillo. . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . . 87
Mejora del escáner MySQL. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . . 88
Comandos Bash integrados comunes. . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . . 90
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . . 91
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . . 91
9
Comprimir y archivar 93
¿Qué es la compresión? . . . . . . . . . . . .. .. . .. .. .. ... .. .. .. .. .. .. . .. .. .. . . 93
Tarrar archivos juntos. .. .. . .. .. .. .. .. . .. .. .. ... .. .. .. .. .. .. . .. .. .. . . 94
Comprimir archivos. . . . . . . . . . . . . . .. .. . .. .. .. ... .. .. .. .. .. .. . .. .. .. . . 96
Comprimiendo con gzip. . .. .. .. . .. .. .. ... .. .. .. .. .. .. . .. .. .. . . 96
Comprimiendo con bzip2. .. .. .. . .. .. .. ... .. .. .. .. .. .. . .. .. .. . . 97
Comprimir con compresa. .. .. . .. .. .. ... .. .. .. .. .. .. . .. .. .. . . 97
Creación de copias físicas o bit a bit de dispositivos de almacenamiento. . . .. .. .. .. .. . .. .. .. . . 98
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . . 99
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . . 99
10
Gestión de sistemas de archivos y dispositivos de almacenamiento 101
El directorio de dispositivos /dev. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Cómo Linux representa los dispositivos de almacenamiento. .. .. 103
.. .. . .. .. .. .. .. . .. .. ..
Particiones de unidades ................................................ 103
Dispositivos de caracteres y bloques. .. ..105 . .. .. .. .. .. . .. .. .. .. .. . .. .. ..
Enumere información y dispositivos de bloque con lsblk.. .. 105 .. . .. .. .. .. .. . .. .. ..
Montaje y Desmontaje. . 106 . .. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. ..
. .. 106
Montaje de dispositivos de almacenamiento usted mismo. .. .. .. .. . .. .. .. .. .. . .. .. ..
Desmontar con umount. . 107 . . . . . . . . . . . .. .. .. . .. .. .. .. .. . .. .. ..
Monitoreo de sistemas de archivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. . .. .. .. . 107
Obtención de información sobre discos montados. . . . . . . . . . . . .. .. .. .. . .. .. .. . 107
Comprobando errores. . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. . .. .. .. . 108
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. . .. .. .. . 109
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. . .. .. .. . 109
11
El sistema de registro 111
El demonio de registro rsyslog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
El archivo de configuración rsyslog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Las reglas de registro de rsyslog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
12
Uso y abuso de servicios Inicio, detención y 121
reinicio de servicios ................................. 122
Creación de un servidor web HTTP con el servidor web Apache. .. .. .. .. .. . .. .. .. . 122
Empezando por Apache. . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . 123
Editando el archivo index.html. . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . 124
Agregar algo de HTML. . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . 124
Ver lo que pasa. . .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 125
OpenSSH y Raspberry Spy Pi .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 125
Configurando Raspberry Pi . .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 126
Construyendo Raspberry Spy . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . 126
Pi Configurando la cámara. . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . 127
Empezando a espiar. . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . 129
Extrayendo información de MySQL. . .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 130
Iniciando MySQL. . . . . . . . . .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 130
Interactuando con MySQL. . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . 131
Establecer una contraseña MySQL. . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . 131
Accediendo a una base de datos remota. . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . 132
Conexión a una base de datos. . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . 133
Tablas de bases de datos. . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . 134
Examinando los datos. . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . 135
PostgreSQL con Metasploit. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 135
Resumen . . . . . . . . . . . . . . . . . . . . . . .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 137
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. . 138
13
Volverse seguros y anónimos Cómo nos delata Internet. . 139
.. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 140
El sistema de enrutador cebolla. . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 141
Cómo funciona Tor. . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 141
. .. ..
Preocupaciones de seguridad . .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 142
Servidores proxy. . . . . . . . . . . . . . . . .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 143
Configuración de servidores proxy en el archivo de configuración. . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 144
Algunas opciones más interesantes. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 146
Preocupaciones de seguridad . . . . . . . . . . .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 148
Redes Privadas Virtuales. . . . . . . . . . . . .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 148
Correo electrónico cifrado. . . . . . . . . . . . . . . . . . .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 150
Resumen . . . . . . . . . . . . . . . . . . . . . . .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 151
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 151
Contenido en detalle xv
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
14
Comprender e inspeccionar
Conexiones inalámbricas 153
Redes Wifi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Comandos inalámbricos básicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
WiFi Recon con aircrackng. . .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 157
Detección y conexión a Bluetooth. . .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 159
Cómo funciona Bluetooth. . . . . . . . . . . . . . . . . . .. . .. .. .. .. .. . .. .. .. . 160
Escaneo y reconocimiento de Bluetooth. .. .. .. . .. .. .. .. .. . .. .. .. . 160
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. . .. .. .. .. .. . .. .. .. . 164
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. .. .. .. .. . .. .. .. . 164
15
Administrar el kernel de Linux y los módulos
del kernel cargables 165
¿Qué es un módulo de kernel? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Comprobando la versión del kernel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Ajuste del kernel con sysctl. . . . . . . . . . . . . . . . . .. .. .. .. . .. .. .. .. .. . .. .. .. . 167
Gestión de módulos del kernel. . . . . . . . . . . . . . . .. .. .. .. . .. .. .. .. .. . .. .. .. . 169
Encontrar más información con modinfo. . .. .. .. . .. .. .. .. .. . .. .. .. . 170
Agregar y quitar módulos con modprobe. . . .. .. .. .. .. . .. .. .. . 170
Insertar y quitar un módulo del kernel. .. .. .. . .. .. .. .. .. . .. .. .. . 171
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. . .. .. .. .. .. . .. .. .. . 171
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. . .. .. .. .. .. . .. .. .. . 172
dieciséis
17
Conceptos básicos de secuencias de comandos Python para piratas informáticos 183
Listas. . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 191
Módulos. . . . . . . . . . . . . . . . . . . . . . . .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 192
Programación Orientada a Objetos (POO). . . .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 192
Comunicaciones de red en Python. . .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 194
Construyendo un cliente TCP. . . . . . . . .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 194
Creando un oyente TCP. . . . . . .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 195
Diccionarios, bucles y declaraciones de control. .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 197
Diccionarios. . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 197
Declaraciones de control. . . . . . . . . . . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 197
Bucles. . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 198
Mejorando nuestros scripts de piratería. . . . . . . . . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 199
Resumen de excepciones y descifradores .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 201
de contraseñas.. . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 203
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. . .. .. .. .. .. . .. .. .. . 203
Índice 205
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Expresiones de gratitud
Este libro no podría haberse escrito sin la colaboración de varias personas clave.
Primero, quiero agradecer y reconocer a Liz Chadwick por proponer este libro y ser la
editora principal de su contenido. Su persistencia y dedicación han hecho posible este
libro.
En segundo lugar, quiero agradecer a Bill Pollock, editor de No Starch Press,
por creer y respaldar este libro.
En tercer lugar, quiero reconocer los diligentes esfuerzos de mi revisor técnico,
Cliff Janzen, por garantizar que el contenido técnico de este libro sea preciso.
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Introducción
Casi todas las mejores herramientas para hackers están escritas en Linux, por lo que algunos
conocimientos básicos de Linux son un requisito previo para convertirse en un hacker profesional. He
escrito este libro para ayudar a los aspirantes a hackers a superar esta barrera.
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
El hacking es una profesión de élite dentro del campo de las tecnologías de la información. Como tal, requiere una
Comprensión amplia y detallada de los conceptos y tecnologías de TI. En el nivel más
fundamental, Linux es un requisito. Le recomiendo encarecidamente que invierta tiempo y
energía en usarlo y comprenderlo si desea hacer de la piratería y la seguridad de la información
su carrera.
Este libro no está destinado a piratas informáticos experimentados ni a administradores de
Linux experimentados. Más bien, está destinado a aquellos que quieran iniciarse en el apasionante
camino del hacking, la ciberseguridad y el pentesting. Tampoco pretende ser un tratado completo
sobre Linux o piratería, sino más bien un punto de partida hacia estos mundos. Comienza con
lo esencial de Linux y se extiende a algunas secuencias de comandos básicas tanto en bash
como en Python. Siempre que fue apropiado, intenté utilizar ejemplos del mundo del hacking
para enseñar los principios de Linux.
En esta introducción, veremos el crecimiento del hacking ético para la seguridad de la
información y lo guiaremos a través del proceso de instalación de una máquina virtual para que
pueda instalar Kali Linux en su sistema sin alterar el sistema operativo que ya tiene. correr.
XXII Introducción
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Pruebas de penetración
A medida que las organizaciones se vuelven cada vez más conscientes de la seguridad y el costo
de las violaciones de seguridad aumenta exponencialmente, muchas organizaciones grandes están
comenzando a subcontratar servicios de seguridad. Uno de estos servicios de seguridad clave son
las pruebas de penetración. Una prueba de penetración es esencialmente un hack legal encargado
para demostrar la vulnerabilidad de la red y los sistemas de una empresa.
Generalmente, las organizaciones realizan primero una evaluación de vulnerabilidades para
encontrar vulnerabilidades potenciales en su red, sistemas operativos y servicios. Hago hincapié en el
potencial, ya que este escaneo de vulnerabilidades incluye una cantidad significativa de falsos positivos
(cosas identificadas como vulnerabilidades que en realidad no lo son). La función del evaluador de
penetración es intentar piratear o penetrar estas vulnerabilidades. Sólo entonces la organización podrá
saber si la vulnerabilidad es real y decidir invertir tiempo y dinero para cerrarla.
Militar y espionaje
Casi todas las naciones del planeta se dedican ahora al ciberespionaje y la ciberguerra. Basta leer los
titulares para ver que las actividades cibernéticas son el método elegido para espiar y atacar los
sistemas militares e industriales.
La piratería informática desempeña un papel crucial en estas actividades militares y de
recopilación de inteligencia, y eso será más cierto a medida que pase el tiempo. Imagine una guerra
del futuro en la que los piratas informáticos puedan obtener acceso a los planes de guerra de su
adversario y destruir su red eléctrica, sus refinerías de petróleo y sus sistemas de agua. Estas actividades
se llevan a cabo todos los días ahora. El hacker se convierte así en un componente clave de la defensa
de su nación.
Entonces, ¿por qué los piratas informáticos utilizan Linux en lugar de otros sistemas operativos?
Principalmente porque Linux ofrece un nivel de control mucho mayor a través de algunos métodos diferentes.
A diferencia de Windows, Linux es de código abierto, lo que significa que el código fuente del sistema
operativo está disponible para usted. Como tal, puedes cambiarlo y manipularlo como quieras. Si está
intentando hacer que un sistema funcione de una manera para la que no estaba previsto, es esencial
poder manipular el código fuente.
Linux es transparente
Para hackear eficazmente, debes conocer y comprender tu sistema operativo y, en gran medida, el
sistema operativo que estás atacando. Linux es totalmente transparente, lo que significa que podemos ver y
manipular todas sus partes funcionales.
No es así con Windows. Microsoft se esfuerza por hacer que sea lo más difícil posible conocer
el funcionamiento interno de sus sistemas operativos, por lo que nunca se sabe realmente lo que sucede
"debajo del capó", mientras que en Linux, tiene un foco brillando directamente sobre todos y cada uno de
los componentes de su sistema operativo. El sistema operativo. Esto hace que trabajar con Linux sea más
efectivo.
Linux es granular. Eso significa que tienes un control casi infinito sobre el sistema. En Windows, sólo
puedes controlar lo que Microsoft te permite controlar. En Linux, todo puede ser controlado por la terminal,
al nivel más minúsculo o al nivel más macro. Además, Linux hace que las secuencias de comandos en
cualquiera de los lenguajes de secuencias de comandos sean simples y efectivas.
Más del 90 por ciento de todas las herramientas de piratería están escritas para Linux. Por supuesto, hay
excepciones, como Caín, Abel y Wikto, pero esas excepciones confirman la regla. Incluso cuando las
herramientas de piratería como Metasploit o nmap se adaptan a Windows, no todas las capacidades se
transfieren desde Linux.
Esto puede parecer una afirmación radical, pero creo firmemente que el futuro de la tecnología de la
información pertenece a los sistemas Linux y Unix. Microsoft tuvo su época en las décadas de 1980 y
1990, pero su crecimiento se está desacelerando y estancando.
Desde que comenzó Internet, Linux/Unix ha sido el sistema operativo elegido para los servidores
web debido a su estabilidad, confiabilidad y robustez. Incluso hoy en día, Linux/Unix se utiliza en dos tercios
de los servidores web y domina el mercado. Los sistemas integrados en enrutadores, conmutadores y
otros dispositivos casi siempre utilizan un kernel de Linux, y el mundo de la virtualización está dominado
por Linux, con VMware y Citrix basados en el kernel de Linux.
Más del 80 por ciento de los dispositivos móviles ejecutan Unix o Linux (iOS es Unix y Android es
Linux), por lo que si cree que el futuro de la informática está en
electrónico www.wowebook.org
Machine Translated by Google
dispositivos móviles como tabletas y teléfonos (sería difícil argumentar lo contrario), entonces el
futuro es Unix/Linux. Microsoft Windows tiene sólo el 7 por ciento del mercado de dispositivos
móviles. ¿Es ese el carro al que quieres que te enganchen?
Kali Linux fue desarrollado por Offensive Security como un sistema operativo de piratería
basado en una distribución de Linux llamada Debian. Hay muchas distribuciones de Linux y Debian
es una de las mejores. Probablemente esté más familiarizado con Ubuntu como una distribución
de escritorio popular de Linux. Ubuntu también se basa en Debian. Otras distribuciones incluyen
Red Hat, CentOS, Mint, Arch y SUSE. Aunque todos comparten el mismo kernel de Linux (el
corazón del sistema operativo que controla la CPU, la RAM, etc.), cada uno tiene sus propias
utilidades, aplicaciones y opciones de interfaz gráfica (GNOME, KDE y otras) para diferentes
propósitos. Como resultado, cada una de estas distribuciones de Linux se ve y se siente ligeramente
diferente. Kali fue diseñado para probadores de penetración y piratas informáticos y viene con un
importante complemento de herramientas de piratería.
Le recomiendo encarecidamente que utilice Kali para este libro. Aunque puedes
Si utiliza otra distribución, probablemente tendrá que descargar e instalar las diversas herramientas
que usaremos, lo que podría significar muchas horas descargando e instalando herramientas.
Además, si esa distribución no está basada en Debian, puede haber otras diferencias menores.
Puede descargar e instalar Kali desde https://www.kali.org/.
Desde la página de inicio, haga clic en el enlace Descargas en la parte superior de la página.
En la página de Descargas, encontrarás múltiples opciones de descarga.
Es importante elegir la descarga correcta. En el lado izquierdo de la tabla, verá el nombre de
la imagen, que es el nombre de la versión que descarga el enlace. Por ejemplo, la primera lista
de nombres de imágenes que veo es Kali Linux 64 Bit, lo que significa que es Kali Linux completo y
es adecuado para sistemas de 64 bits; la mayoría de los sistemas modernos usan una CPU
Intel o AMD de 64 bits. Para determinar qué tipo de CPU hay en su sistema, vaya a Panel de
control4System y Security4System, y debería aparecer en la lista. Si su sistema es de 64 bits,
descargue e instale la versión de 64 bits de Kali completa (no Light o Lxde, ni ninguna de las
otras alternativas).
Si está ejecutando una computadora antigua con una CPU de 32 bits, necesitará
para instalar la versión de 32 bits, que aparece más abajo en la página.
Tiene la opción de descargar a través de HTTP o Torrent. Si elige HTTP, Kali se descargará
directamente a su sistema como cualquier descarga y se colocará en su carpeta de Descargas. La
descarga de torrent es la descarga de igual a igual utilizada por muchos sitios para compartir
archivos. Necesitarás un torrent
electrónico www.wowebook.org
Machine Translated by Google
aplicación como BitTorrent para hacer esto. Luego, el archivo Kali se descargará en la carpeta en
la que la aplicación de torrents almacena sus descargas.
Existen otras versiones para otros tipos de CPU, como la arquitectura ARM comúnmente
utilizada que se encuentra en tantos dispositivos móviles. Si está utilizando una Raspberry Pi, una
tableta u otro dispositivo móvil (los usuarios de teléfonos probablemente prefieran Kali NetHunter),
asegúrese de descargar e instalar la versión de arquitectura ARM de Kali desplazándose hacia
abajo hasta Descargar imágenes ARM y haciendo clic en Kali ARM Images . .
Tienes Kali descargado, pero antes de instalar nada, quiero hablar un poco sobre las
máquinas virtuales. Generalmente, para los principiantes, instalar Kali en una máquina virtual
es la mejor solución para aprender y practicar.
Maquinas virtuales
La tecnología de máquina virtual (VM) le permite ejecutar múltiples sistemas operativos desde
una sola pieza de hardware, como su computadora portátil o de escritorio. Esto significa que puede
continuar ejecutando el sistema operativo Windows o MacOS con el que está familiarizado y
ejecutar una máquina virtual de Kali Linux dentro de ese sistema operativo. No necesita sobrescribir
su sistema operativo existente para aprender Linux.
Hay numerosas aplicaciones de máquinas virtuales disponibles de VMware, Oracle,
Microsoft y otros proveedores. Todos son excelentes, pero aquí les mostraré cómo descargar e
instalar VirtualBox gratuito de Oracle.
Instalación de VirtualBox
Puede descargar VirtualBox en https://www.virtualbox.org/, como se muestra en la Figura 1.
Haga clic en el enlace Descargas en el menú de la izquierda y seleccione el paquete de
VirtualBox para el sistema operativo actual de su computadora, que alojará VirtualBox VM.
Asegúrese de descargar la última versión.
Cuando se haya completado la descarga, haga clic en el archivo de instalación y será recibido
por un asistente de configuración familiar, que se muestra en la Figura 2.
Desde esta pantalla, simplemente haga clic en Siguiente. Continúe haciendo clic en Siguiente
hasta llegar a la pantalla de advertencia de Interfaces de red y luego haga clic en Sí.
Haga clic en Instalar para comenzar el proceso. Durante este proceso, es probable que se le
solicite varias veces acerca de la instalación del software del dispositivo. Estos son los dispositivos de
red virtuales necesarios para que sus máquinas virtuales se comuniquen.
Haga clic en Instalar para cada uno.
electrónico www.wowebook.org
Machine Translated by Google
Como crearemos una nueva máquina virtual con Kali Linux, haga clic en Nuevo en la
esquina superior izquierda. Esto abre el cuadro de diálogo Crear máquina virtual que se muestra
en la Figura 5.
Dale un nombre a tu máquina (cualquier nombre está bien, pero yo simplemente usé Kali) y
luego seleccione Linux en el menú desplegable Tipo . Finalmente, seleccione Debian (64
bits) en el tercer menú desplegable (a menos que esté utilizando la versión de Kali de 32
bits, en cuyo caso seleccione la versión de Debian de 32 bits). Haga clic en Siguiente y verá
una pantalla como la Figura 6. Aquí debe seleccionar cuánta RAM desea asignar a esta
nueva máquina virtual.
Como regla general, no recomiendo utilizar más del 25 por ciento de la RAM total del
sistema. Eso significa que si has instalado 4 GB en tu
xxviii Introducción
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
sistema físico o host, luego seleccione solo 1 GB para su máquina virtual, y si tiene 16
GB en su sistema físico, seleccione 4 GB. Cuanta más RAM le dé a su máquina virtual,
mejor y más rápido se ejecutará, pero también debe dejar suficiente RAM para su sistema
operativo host y cualquier otra máquina virtual que desee ejecutar simultáneamente. Sus
máquinas virtuales no utilizarán RAM cuando usted no las esté utilizando, pero sí utilizarán
espacio en el disco duro.
Haga clic en Siguiente y accederá a la pantalla Disco duro. Elija Crear disco duro
virtual y haga clic en Crear.
En la siguiente pantalla, puede decidir si desea que el disco duro que está
creando se asigne dinámicamente o tenga un tamaño fijo. Si elige Asignado
dinámicamente, el sistema no ocupará todo el tamaño máximo que asigne para el disco
duro virtual hasta que lo necesite, lo que ahorrará más espacio no utilizado en el disco
duro para su sistema host. Le sugiero que seleccione asignado dinámicamente.
Haga clic en Siguiente y elegirá la cantidad de espacio en el disco duro que desea asignar.
cate a la VM y la ubicación de la VM (consulte la Figura 7).
Instalación de Kali en la VM
En este punto, debería ver una pantalla como la Figura 8. Ahora necesitará instalar
Kali. Tenga en cuenta que a la izquierda de VirtualBox Manager, debería ver una
indicación de que Kali VM está apagado. Haga clic en el botón Inicio (icono de
flecha verde).
electrónico www.wowebook.org
Machine Translated by Google
Luego haga clic en Iniciar. ¡Felicitaciones, acaba de instalar Kali Linux en una máquina
virtual!
Configurando Kali
Kali ahora abrirá una pantalla como la Figura 10, que le ofrece varias opciones de inicio.
Sugiero utilizar la instalación gráfica para principiantes. Utilice las teclas del teclado para
navegar por el menú.
Si recibes un error al instalar Kali en tu VirtualBox, es
probablemente porque no tiene la virtualización habilitada en el BIOS de su sistema. Cada
sistema y su BIOS son ligeramente diferentes, así que consulte con su fabricante o busque
en línea soluciones para su sistema y BIOS. Además, en los sistemas Windows, es probable
que deba desactivar cualquier software de virtualización de la competencia, como HyperV.
Nuevamente, una búsqueda en Internet de su sistema debería guiarlo para hacerlo.
electrónico www.wowebook.org
Machine Translated by Google
electrónico www.wowebook.org
Machine Translated by Google
Kali ahora comenzará a instalar el sistema operativo. Esto podría llevar un tiempo,
así que tenga paciencia. Ahora es el momento de tomarte un descanso para ir al baño y
tomar tu bebida favorita.
Una vez que se complete la instalación, se le preguntará si desea utilizar un espejo
de red. Esto realmente no es necesario, así que haga clic en No.
Luego, Kali le preguntará si desea instalar GRUB (Grand Unified Bootloader),
como se muestra en la Figura 14. Un gestor de arranque le permite seleccionar diferentes
sistemas operativos para iniciar, lo que significa que cuando inicia su máquina, puede
iniciar en cualquiera de ellos. Kali u otro sistema operativo. Seleccione Sí y haga clic
en Continuar.
electrónico www.wowebook.org
Machine Translated by Google
¡Ahora estás listo para comenzar tu viaje hacia el apasionante campo de la piratería!
¡Bienvenido!
1
Primeros pasos con los conceptos básicos
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Binarios Este término se refiere a archivos que se pueden ejecutar, similares a los
ejecutables de Windows. Los binarios generalmente residen en el directorio /usr/bin o
usr/sbin e incluyen utilidades como ps, cat, ls y cd (abordaremos las cuatro en este
capítulo), así como aplicaciones como la red inalámbrica. la herramienta de hacking
aircrackng y el sistema de detección de intrusos (IDS) Snort.
Distinción entre mayúsculas y minúsculas A diferencia de Windows, Linux distingue entre mayúsculas y
minúsculas. Esto significa que Desktop es diferente de Desktop, que a su vez es diferente de DeskTop.
Cada uno de estos representaría un nombre de archivo o directorio diferente. Muchas
personas que vienen de un entorno Windows pueden encontrar esto frustrante.
Si recibe el mensaje de error "archivo o directorio no encontrado" y está seguro de que
el archivo o directorio existe, probablemente necesite verificar su caso.
Inicio Cada usuario tiene su propio directorio /home , y aquí es generalmente donde los
archivos que cree se guardarán de forma predeterminada.
Kali Kali Linux es una distribución de Linux diseñada específicamente para pruebas
de penetración. Tiene cientos de herramientas preinstaladas, lo que le ahorrará las
horas que le llevaría descargarlas e instalarlas usted mismo. Usaré la última versión de
Kali al momento de escribir este artículo: Kali 2018.2, lanzada por primera vez en abril
de 2018.
root Como casi todos los sistemas operativos, Linux tiene una cuenta de administrador
o superusuario, diseñada para que la utilice una persona de confianza que puede hacer
casi cualquier cosa en el sistema. Esto incluiría cosas como reconfigurar el sistema,
agregar usuarios y cambiar contraseñas. En Linux, esa cuenta se llama root. Como
hacker o pentester, a menudo utilizará la cuenta raíz para tener control sobre el sistema.
De hecho, muchas herramientas de piratas informáticos requieren que utilice la cuenta
raíz.
Shell Este es un entorno e intérprete para ejecutar comandos en Linux. El shell más
utilizado es bash, que significa Bourne nuevamente shell, pero otros shells populares
incluyen el shell C y el shell Z. Usaré el shell bash exclusivamente en este libro.
Una vez que inicie Kali, aparecerá una pantalla de inicio de sesión, como se muestra en la
Figura 11. Inicie sesión con el nombre de usuario de la cuenta raíz root y la contraseña
predeterminada también.
Ahora debería tener acceso a su escritorio Kali (consulte la Figura 12). Bien
Observe rápidamente dos de los aspectos más básicos del escritorio: la interfaz del terminal y
la estructura de archivos.
La terminal
El primer paso para usar Kali es abrir la terminal, que es la interfaz de línea de
comandos que usaremos en este libro. En Kali Linux, encontrarás el ícono de la
terminal en la parte inferior del escritorio. Haga doble clic en este icono para abrir la
terminal o presione ctrlaltT. Su nueva terminal debería verse como la que se muestra
en la Figura 13.
Esta terminal abre el entorno de línea de comandos, conocido como shell, que le
permite ejecutar comandos en los sistemas operativos subyacentes y escribir scripts.
Aunque Linux tiene muchos entornos de shell diferentes, el más popular es el shell
bash, que también es el shell predeterminado en Kali y muchas otras distribuciones de
Linux.
Para cambiar su contraseña, puede usar el comando passwd.
La raíz (/) del sistema de archivos está en la parte superior del árbol, y lo siguiente
son los subdirectorios más importantes que debe conocer:
/etc Generalmente contiene los archivos de configuración de Linux: archivos que controlan cuándo y
cómo se inician los programas.
Para comenzar, veamos algunos comandos básicos que le ayudarán a empezar a utilizar Linux.
electrónico www.wowebook.org
Machine Translated by Google
A diferencia de cuando trabaja en un entorno de interfaz gráfica de usuario (GUI) como Windows
o macOS, la línea de comando en Linux no siempre deja claro en qué directorio se encuentra
actualmente. Para navegar a un nuevo directorio, generalmente necesita para saber dónde estás
actualmente. El comando del directorio de trabajo actual, pwd, devuelve su ubicación dentro de la
estructura del directorio.
kali >pwd
/raíz
En este caso, Linux devolvió /root, diciéndome que estoy en el directorio del usuario raíz.
Y debido a que inició sesión como root cuando inició Linux, también debería estar en el directorio del
usuario root, que está un nivel por debajo de la parte superior de la estructura del sistema de archivos
(/).
Si está en otro directorio, pwd devolverá el nombre de ese directorio.
En Linux, el superusuario o administrador del sistema “todopoderoso” se llama root y tiene todos los
privilegios del sistema necesarios para agregar usuarios, cambiar contraseñas, cambiar privilegios,
etc. Obviamente, no desea que cualquiera tenga la capacidad de realizar dichos cambios; Quiere a
alguien en quien se pueda confiar y que tenga el conocimiento adecuado del sistema operativo.
Como hacker, normalmente necesitas tener todos esos privilegios para ejecutar los programas y
comandos que necesitas (muchas herramientas de hacker no funcionarán a menos que tengas
privilegios de root), por lo que querrás iniciar sesión como root.
Navegar por el sistema de archivos desde la terminal es una habilidad esencial en Linux. Para hacer
cualquier cosa, necesita poder moverse para buscar aplicaciones, archivos y directorios ubicados en
otros directorios. En un sistema basado en GUI,
6 Capítulo 1
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
puedes ver visualmente los directorios, pero cuando usas la interfaz de línea de
comandos, la estructura está completamente basada en texto y navegar por el sistema
de archivos significa usar algunos comandos.
Para cambiar directorios desde la terminal, use el comando cambiar directorio, cd. Por
ejemplo, aquí se explica cómo cambiar al directorio /etc utilizado para almacenar archivos de
configuración:
kali >cd/etc.
raíz@kali:/etc#
root@kali:/etc# contraseña
/etc
Para subir un nivel en la estructura del archivo (hacia la raíz del archivo
estructura, o /), usamos cd seguido de puntos dobles (..), como se muestra aquí:
raíz@kali:/etc# cd ..
root@kali:/#contraseña
/
raíz@kali:/#
Esto nos sube un nivel desde /etc al directorio /raíz, pero puedes
sube tantos niveles como necesites. Simplemente use la misma cantidad de pares de
puntos dobles que la cantidad de niveles que desea mover:
Entonces, por ejemplo, para subir dos niveles, ingrese cd seguido de dos conjuntos de
puntos dobles con un espacio entre ellos:
kali >cd .. ..
kali >ls
bin initrd.img medios de var
boot initrd.img.old dev lib etc comunicación ejecutar sbin vmlinuz
lib64 inicio optar
srv vmlinuz.viejo
perdido+encontrado por la raíz tmp
del proceso usr
Este comando enumera tanto los archivos como los directorios contenidos en el directorio.
También puede usar este comando en cualquier directorio en particular, no solo en el que se encuentra
actualmente, enumerando el nombre del directorio después del comando; por ejemplo, ls /etc muestra
lo que hay en el directorio /etc.
Para obtener más información sobre los archivos y directorios, como sus permisos, propietario,
tamaño y cuándo se modificaron por última vez, puede agregar el modificador l después de ls (la l
significa largo). A esto se le suele denominar lista larga. Probémoslo aquí:
kali >ls l
total 84
drwrr drw 1 raíz raíz 4096 diciembre raíz 5 11:15 papelera
Si no ve el archivo que espera ver, vale la pena intentarlo con ls con la opción a.
Obteniendo ayuda
Casi todos los comandos, aplicaciones o utilidades tienen un archivo de ayuda dedicado en Linux que
brinda orientación para su uso. Por ejemplo, si necesitara ayuda para usar la mejor herramienta de
craqueo inalámbrico, aircrackng, simplemente podría escribir el comando aircrackng seguido del
comando help:
guión () antes de opciones de palabras, como ayuda, y un solo guión () antes de opciones de una
sola letra, como –h.
8 Capítulo 1
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Cuando ingresa este comando, debería ver una breve descripción de la herramienta y
orientación sobre cómo usarla. En algunos casos, puedes usar h
o ? para acceder al archivo de ayuda. Por ejemplo, si necesitara ayuda para usar la mejor herramienta
de escaneo de puertos de los piratas informáticos, nmap, ingresaría lo siguiente:
kali >nmap h
Desafortunadamente, aunque muchas aplicaciones admiten las tres opciones (help, h y ?),
no hay garantía de que la aplicación que estás utilizando lo haga.
Entonces, si una opción no funciona, prueba con otra.
Además del interruptor de ayuda, la mayoría de los comandos y aplicaciones tienen una página
de manual (man) con más información, como una descripción y una sinopsis del comando o
aplicación. Puede ver una página de manual simplemente escribiendo man antes del comando, utilidad
o aplicación. Para ver la página de manual de aircrackng, por ejemplo, ingresaría lo siguiente:
Además, el programa ofrece un método de diccionario para determinar la clave WEP. Para
descifrar claves precompartidas WPA/WPA2, se debe utilizar una lista de palabras (archivo
o stdin) o un airolibng.
Encontrar cosas
Hasta que se familiarice con Linux, puede resultar frustrante orientarse, pero el conocimiento de algunos
comandos y técnicas básicos contribuirá en gran medida a que la línea de comandos sea mucho
más amigable. Los siguientes comandos le ayudarán a localizar cosas desde la terminal.
Probablemente el comando más fácil de usar sea localizar. Seguido de una palabra clave que indica
qué es lo que desea encontrar, este comando recorrerá todo su sistema de archivos y localizará
cada aparición de esa palabra.
Para buscar aircrackng, por ejemplo, ingrese lo siguiente:
Si está buscando un archivo binario, puede usar el comando Whereis para localizarlo. Este
comando devuelve no solo la ubicación del binario sino también su fuente y página de manual si
están disponibles. He aquí un ejemplo:
En este caso, se devuelven solo los binarios de aircrackng y la página de manual, en lugar de
cada aparición de la palabra aircrackng. Mucho más eficiente y esclarecedor, ¿no crees?
El comando which es aún más específico: solo devuelve la ubicación de los binarios en la variable
PATH en Linux. Examinaremos más de cerca la variable PATH en el Capítulo 7, pero por ahora
es suficiente saber que PATH contiene los directorios en los que el sistema operativo busca los
comandos que ejecuta en la línea de comandos. Por ejemplo, cuando ingreso aircrackng en la línea
de comando, el sistema operativo busca en la variable PATH para ver en qué directorios debe
buscar aircrackng:
Aquí, pude encontrar un único archivo binario en los directorios enumerados en la variable
PATH. Como mínimo, estos directorios suelen incluir /usr/bin, pero pueden incluir /usr/sbin y quizás
algunos más.
10 Capítulo 1
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Entonces, si quisiera buscar un archivo con el nombre apache2 (el código abierto
servidor web) comenzando en el directorio raíz, ingresaría lo siguiente:
El comando de búsqueda comenzó en la parte superior del sistema de archivos (/), pasó por
cada directorio busca apache2 en el nombre del archivo y luego enumera todas las instancias
encontradas.
Como puede imaginar, una búsqueda que busque en todos los directorios puede resultar lenta.
Una forma de acelerarlo es buscar sólo en el directorio donde esperaría encontrar los archivos que necesita.
En este caso estamos buscando un archivo de configuración, por lo que podríamos iniciar la
búsqueda en el directorio /etc, y Linux solo buscaría hasta sus subdirectorios. Vamos a intentarlo:
Esta búsqueda mucho más rápida solo encontró apariciones de apache2 en el directorio /etc y
sus subdirectorios. También es importante tener en cuenta que, a diferencia de otros comandos de
búsqueda, buscar solo muestra coincidencias exactas de nombres. Si el
El archivo apache2 tiene una extensión, como apache2.conf, la búsqueda no encontrará una coincidencia.
Podemos solucionar esta limitación utilizando comodines, que nos permiten hacer coincidir varios caracteres.
Los comodines vienen en diferentes formas: * y []. ., ?
Busquemos en el directorio /etc todos los archivos que comiencen con apache2 y tengan cualquier
extensión. Para esto, podríamos escribir un comando de búsqueda usando el siguiente comodín:
Cuando ejecuto este comando, encuentro dos archivos que comienzan con apache2 en el directorio /
etc, incluido el archivo apache2.conf.
Digamos que estamos haciendo una búsqueda en un directorio que tiene los archivos cat,
hat, what y bat. El ? El comodín se utiliza para representar un solo carácter, por lo que una
búsqueda de ?at encontraría sombrero, gato y murciélago, pero no qué, porque en este nombre
de archivo está precedido por dos letras. El comodín [] se utiliza para hacer coincidir los
caracteres que aparecen dentro de los corchetes. Por ejemplo, una búsqueda de [c,b]at
coincidiría con gato y murciélago, pero no con sombrero o qué. Entre los comodines más
utilizados se encuentra el asterisco (*), que coincide con cualquier carácter de cualquier
longitud, desde ninguno hasta un número ilimitado de caracteres. Una búsqueda de *at, por
ejemplo, encontraría gato, sombrero, qué y murciélago.
Muy a menudo, cuando utilice la línea de comando, querrá buscar una palabra clave en particular. Para
ello, puede utilizar el comando grep como filtro para buscar palabras clave.
El comando grep se utiliza a menudo cuando la salida se canaliza de un comando a otro. Cubro la
tubería en el Capítulo 2, pero por ahora, basta con decir que Linux (y Windows, de hecho) nos permite
tomar la salida de un comando y enviarla como entrada a otro comando. Esto se llama tubería y usamos el |
comando para hacerlo (la tecla | generalmente está encima de la tecla Intro en su teclado).
El comando ps se utiliza para mostrar información sobre los procesos que se ejecutan en la
máquina. Cubrimos esto con más detalle en el Capítulo 6, pero para esto
12 Capítulo 1
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Por ejemplo, supongamos que quiero ver todos los procesos que se ejecutan en mi sistema
Linux. En este caso, puedo usar el comando ps (procesos) seguido del comando aux
cambia para especificar qué información de proceso mostrar, así:
Esto me proporciona una lista de todos los procesos que se ejecutan en este
sistema, pero ¿qué pasa si solo quiero encontrar un proceso para ver si se está ejecutando?
Puedo hacer esto canalizando la salida de ps a grep y buscando una palabra clave. Por
ejemplo, para saber si el servicio apache2 se está ejecutando, ingresaría lo siguiente.
Este comando le dice a Linux que muestre todos mis servicios y luego envíe esa salida
a grep, que buscará en la salida la palabra clave apache2 y luego mostrará solo la salida
relevante, ahorrándome así una cantidad considerable de tiempo y vista.
Creando archivos
Hay muchas formas de crear archivos en Linux, pero por ahora solo veremos dos métodos
simples. El primero es gato, que es la abreviatura de concatenar, que significa combinar piezas
(no es una referencia a tu felino domesticado favorito). El comando cat se usa generalmente
para mostrar el contenido de un archivo, pero también se puede usar para crear archivos
pequeños. Para crear archivos más grandes, es mejor ingresar el código en un editor de texto
como vim, emacs, leafpad, gedit o kate y luego guardarlo como un archivo.
El comando cat seguido de un nombre de archivo mostrará el contenido de ese archivo, pero
para crear un archivo, seguimos el comando cat con una redirección, indicada con el símbolo
> , y un nombre para el archivo que queremos crear. He aquí un ejemplo:
Para agregar o agregar más contenido a un archivo, puede usar el comando cat con una
doble redirección (>>), seguido de lo que desee agregar al final del archivo. He aquí un ejemplo:
Como puede ver aquí, Linux entra en modo interactivo, ingreso el nuevo texto y luego
salgo al mensaje. Cuando vuelvo a utilizar cat para ver el contenido del archivo, veo que mis
palabras anteriores se han sobrescrito con el texto más reciente.
Ahora, cuando uso ls –l para ver la lista larga del directorio, veo que se ha creado un nuevo
archivo llamado newfile. Tenga en cuenta que su tamaño es 0 porque no hay contenido en el
archivo nuevo.
Creando un directorio
El comando para crear un directorio en Linux es mkdir, una contracción de make directorio.
Para crear un directorio llamado nuevodirectorio, ingrese el siguiente comando:
Copiar un archivo
Para copiar archivos, usamos el comando cp . Esto crea un duplicado del archivo en la nueva
ubicación y deja el anterior en su lugar.
Aquí, crearemos el archivo oldfile en el directorio raíz con touch y lo copiaremos a /root/
newdirectory, renombrándolo en el proceso y dejando el oldfile original en su lugar:
El comando mv se puede utilizar para mover un archivo o directorio a una nueva ubicación
ción o simplemente para darle un nuevo nombre a un archivo existente. Para cambiar el nombre de
nuevo archivo a nuevo archivo2, deberá ingresar lo siguiente:
Eliminar un archivo
Si ahora hace una lista larga en el directorio, puede confirmar que el archivo se ha eliminado.
Eliminar un directorio
El comando para eliminar un directorio es similar al comando rm para eliminar archivos pero con
dir (para directorio) agregado, así:
Es importante tener en cuenta que rmdir no eliminará un directorio que no esté vacío, pero
le dará un mensaje de advertencia que indica que "el directorio no está vacío", como puede ver en
este ejemplo. Primero debe eliminar todo el contenido del directorio antes de eliminarlo. Esto es
para evitar que borre accidentalmente objetos que no tenía intención de borrar.
Sin embargo, sólo una advertencia: tenga cuidado al usar la opción r con rm, al menos al
principio, porque es muy fácil eliminar archivos y directorios valiosos por error. Usar rm r en su
directorio de inicio, por ejemplo, eliminaría todos los archivos y directorios allí, probablemente no
lo que pretendía.
dieciséis
Capítulo 1
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Ejercicios
Antes de pasar al Capítulo 2, pruebe las habilidades que aprendió en este capítulo completando los
siguientes ejercicios:
1. Utilice el comando ls desde el directorio raíz (/) para explorar la estructura de directorios de Linux.
Vaya a cada uno de los directorios con el comando cd y ejecute pwd para verificar dónde se
2. Utilice el comando whoami para verificar con qué usuario inició sesión.
3. Utilice el comando de localización para buscar listas de palabras que puedan usarse como contraseña.
agrietamiento.
4. Utilice el comando cat para crear un nuevo archivo y luego agréguelo a ese archivo.
Tenga en cuenta que > redirige la entrada a un archivo y >> agrega a un archivo.
electrónico www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
2
Manipulación de texto
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
NOTA Si la versión de Kali Linux que estás usando no viene con Snort preinstalado, puedes descargar los
archivos del repositorio de Kali ingresando aptget install snort.
Ver archivos
Como se demostró en el Capítulo 1, el comando de visualización de texto más básico
probablemente sea cat, pero tiene sus limitaciones. Utilice cat para mostrar el archivo de
configuración de Snort (snort.conf ) que se encuentra en/etc/snort (consulte el Listado 21).
Su pantalla ahora debería mostrar el archivo snort.conf completo , que se transmitirá hasta
llegar al final del archivo, como se muestra aquí. Esta no es la forma más conveniente ni práctica
de ver y trabajar con este archivo.
# incluir $SO_RULE_PATH/exploit.rules
# incluir $SO_RULE_PATH/exploit.rules
# incluir $SO_RULE_PATH/exploit.rules
# incluir $SO_RULE_PATH/exploit.rules
# incluir $SO_RULE_PATH/exploit.rules
recorte
En las siguientes dos secciones, le mostraré los comandos head y tail , que son dos
métodos para mostrar solo una parte del contenido de un archivo para poder ver más fácilmente el
contenido clave.
tomando la cabeza
Si solo desea ver el comienzo de un archivo, puede usar el comando head . De forma
predeterminada, este comando muestra las primeras 10 líneas de un archivo. El siguiente comando,
por ejemplo, muestra las primeras 10 líneas de snort.conf:
recorte
#Bichos Snort:bugs@snort.org
Si desea ver más o menos de las 10 líneas predeterminadas, ingrese la cantidad que desea
con el interruptor de guión () después de la llamada al encabezado y antes
el nombre del archivo. Por ejemplo, si desea ver las primeras 20 líneas del archivo,
deberá ingresar el comando que se muestra en la parte superior del Listado 22.
#
#Paquetes de reglas VRT Snort.conf
#
#Para más información visítanos en:
#.
#.
#.
#Opciones: enablegre enablempls enabletargetbased
enableppm enableperfprofiling enablezlib enableact
respuestaen vivo enablenormalizer enablereload enablereact
Observe que este comando muestra algunas de las últimas líneas de inclusión del
archivos de reglas , pero no todos, porque similar a head, el valor predeterminado para tail
es mostrar 10 líneas. Puede mostrar más líneas tomando las últimas 20 líneas de snort.conf.
Al igual que con el comando head , puede indicarle a tail cuántas líneas mostrar
ingresando un guión () y luego el número de líneas entre el comando y el nombre del
archivo, como se muestra en el Listado 23.
Manipulación de texto 21
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Ahora podemos ver casi todas las líneas de inclusión de los archivos de reglas en una sola
pantalla.
Listado 25: Mostrando líneas con instancias de la palabra clave o frase especificada por grep
Este comando primero verá snort.conf y luego usará una barra vertical (|) para enviarlo a grep,
que tomará el archivo como entrada, buscará líneas con apariciones de la palabra salida y mostrará
solo esas líneas. El comando grep es un comando muy poderoso y esencial para trabajar en Linux,
porque puede ahorrarle horas de búsqueda de cada aparición de una palabra o comando en un
archivo.
Hay muchas maneras de resolver este desafío; aquí te muestro qué líneas cambiar para
hacerlo de una manera, y tu trabajo es encontrar otro método.
Paso 1
Podemos ver que la línea # Paso #6: Configurar complementos de salida es la línea 512,
y sabemos que queremos las cinco líneas que preceden a la línea 512, así como la propia línea
512 (es decir, las líneas 507 a 512).
Paso 2
################################################## #
# Paso #6: Configurar complementos de salida
Aquí, usamos tail para comenzar en la línea 507 y luego enviarla a head, y
devuelve solo las seis líneas superiores, lo que nos da las cinco líneas que preceden al Paso #6
línea, con esa línea incluida.
Manipulación de texto 23
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Listado 26: Uso de sed para buscar y reemplazar palabras clave o frases
Ahora, cuando usas grep con snort2.conf para buscar mysql, verás que no se
encontraron instancias, pero cuando buscas MySQL, verás dos apariciones.
Si quisiera reemplazar solo la primera aparición del término mysql, omitiría el comando
g final.
También puede utilizar el comando sed para buscar y reemplazar cualquier aparición
específica de una palabra en lugar de todas las apariciones o solo la primera aparición.
Por ejemplo, si desea reemplazar solo la segunda aparición de la palabra mysql,
simplemente coloque el número de la aparición (en este caso, 2) al final del comando:
con snort.conf, el archivo se desplaza por cada página hasta llegar al final, lo cual no es muy
práctico si desea obtener información de él.
Para trabajar con archivos más grandes, tenemos otras dos utilidades de visualización: más
y menos.
Listado 27: Usar más para mostrar la salida del terminal una página a la vez
Observe que más muestra solo la primera página y luego se detiene, y nos dice en la esquina
inferior izquierda qué parte del archivo se muestra (2 por ciento en este caso).
Para ver líneas o páginas adicionales, presione Intro. Para salir más, ingrese q (para salir).
Listado 28: Usar less para que el terminal de visualización genere una página a la vez y filtre los resultados
Manipulación de texto 25
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
#unificado2
# Recomendado para la mayoría de las instalaciones
#syslog
# salida alert_syslog: LOG_AUTH LOG_ALERT
:
Resumen
Linux tiene numerosas formas de manipular texto, y cada forma tiene sus propias
fortalezas y debilidades. Hemos abordado algunos de los métodos más útiles en este
capítulo, pero le sugiero que pruebe cada uno de ellos y desarrolle sus propios
sentimientos y preferencias. Por ejemplo, creo que grep es indispensable y lo uso
menos , pero es posible que usted lo sienta diferente.
Ejercicios
Antes de pasar al Capítulo 3, pruebe las habilidades que aprendió en este capítulo
completando los siguientes ejercicios:
7. Utilice el comando cat para mostrar contraseñas.lst y canalícelo para encontrar todas las
contraseñas que contengan 123.
electrónico www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Análisis y gestión
3
N e trabajos
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Kali >ifconfig
ueth0Linkencap:EthernetHWaddr 00:0c:29:ba:82:0f
dirección vinet:192.168.181.131 Bcast:192.168.181.255 Máscara:255.255.255.0
recorte
ylo Linkencap: bucle invertido local
Dirección Internet: 127.0.0.1 Máscara: 255.0.0.0
recorte
zwlan0 Encapsulación de enlace:EthernetHWaddr 00:c0:ca:3f:ee:02
Como puede ver, el comando ifconfig muestra información útil sobre las interfaces de red activas
en el sistema. En la parte superior del resultado está el nombre de la primera interfaz detectada, eth0
, que es la abreviatura de Ethernet0 (Linux comienza a contar en 0 en lugar de 1). Esta es la primera
conexión de red por cable. Si hubiera más interfaces Ethernet cableadas, aparecerían en la salida usando el
mismo formato (eth1, eth2, etc.).
Kali >iwconfig
wlan0 IEEE 802.11bg ESSID: apagado/cualquiera
Modo:Punto de acceso gestionado: No asociado TxPower=20 dBm
recorte
no hay extensiones inalámbricas
Listado 32: Usando iwconfig para obtener información sobre adaptadores inalámbricos
El resultado aquí nos dice que la única interfaz de red con extensiones inalámbricas es
wlan0, que es lo que esperaríamos. Ni lo ni eth0 tienen extensiones inalámbricas.
Para wlan0, aprendemos de qué estándares inalámbricos 802.11 IEEE es capaz nuestro
dispositivo: b y g, dos de los primeros estándares de comunicación inalámbrica. La mayoría de los
dispositivos inalámbricos ahora también incluyen n (n es el último estándar).
También aprendemos de iwconfig el modo de la extensión inalámbrica (en este caso, Modo:
Administrado, en contraste con el modo monitor o promiscuo). Necesitaremos un modo promiscuo
para descifrar contraseñas inalámbricas.
A continuación, podemos ver que el adaptador inalámbrico no está conectado (No Asociado)
a un punto de acceso (AP) y que su potencia sea de 20 dBm, lo que representa la intensidad
de la señal. Dedicaremos más tiempo a esta información en el Capítulo 14.
Cambiar su dirección IP
Para cambiar su dirección IP, ingrese ifconfig seguido de la interfaz que desea reasignar y la
nueva dirección IP que desea asignar a esa interfaz. Por ejemplo, para asignar la dirección IP
192.168.181.115 a la interfaz eth0, ingresaría lo siguiente:
¡GUAU! Libro
Análisis y gestión de redes 31
electrónico www.wowebook.org
Machine Translated by Google
Una vez más, si ha hecho todo correctamente, Linux responde con un nuevo símbolo del
sistema. Ahora ingrese ifconfig nuevamente para verificar que cada uno de los parámetros
se haya cambiado en consecuencia.
También puede usar ifconfig para cambiar su dirección MAC (o HWaddr). La dirección MAC
es única a nivel mundial y a menudo se utiliza como medida de seguridad para mantener
a los piratas informáticos fuera de las redes o para rastrearlas. Cambiar su dirección MAC
para falsificar una dirección MAC diferente es casi trivial y neutraliza esas medidas de
seguridad. Por tanto, es una técnica muy útil para eludir los controles de acceso a la red.
Para falsificar su dirección MAC, simplemente use el botón abajo del comando ifconfig
opción para eliminar la interfaz (eth0 en este caso). Luego ingrese el comando ifconfig
seguido del nombre de la interfaz (hw para hardware, ether
para Ethernet) y la nueva dirección MAC falsificada. Finalmente, vuelva a abrir la interfaz
con la opción arriba para que se realice el cambio. He aquí un ejemplo:
Ahora, cuando verifique su configuración con ifconfig, debería ver que HWaddr ha
cambiado a su nueva dirección IP falsificada.
Linux tiene un servidor de Protocolo de configuración dinámica de host (DHCP) que ejecuta
un demonio (un proceso que se ejecuta en segundo plano) llamado dhcpd o demonio dhcp. El
servidor DHCP asigna direcciones IP a todos los sistemas de la subred y mantiene archivos de
registro de qué dirección IP se asigna a qué máquina en un momento dado. Esto lo convierte
en un gran recurso para que los analistas forenses rastreen a los piratas informáticos después
de un ataque. Por ese motivo, resulta útil comprender cómo funciona el servidor DHCP.
Por lo general, para conectarse a Internet desde una LAN, debe tener una IP asignada
por DHCP. Por lo tanto, después de configurar una dirección IP estática, debe regresar y
obtener una nueva dirección IP asignada por DHCP. Para hacer esto, siempre puedes reiniciar tu
sistema, pero le mostraré cómo recuperar un nuevo DHCP sin tener que apagar su sistema y
reiniciarlo.
Para solicitar una dirección IP de DHCP, simplemente llame al servidor DHCP con
el comando dhclient seguido de la interfaz a la que desea asignar la dirección. Las diferentes
distribuciones de Linux utilizan diferentes clientes DHCP, pero Kali se basa en Debian, que
utiliza dhclient. Por lo tanto, puedes asignar una nueva dirección como esta:
Kali >ifconfig
eth0Linkencap:EthernetHWaddr 00:0c:29:ba:82:0f
Dirección de Internet: 192.168.181.131 Bcast: 192.168.181.131 Máscara: 255.255.255.0
;; SECCIÓN DE RESPUESTAS:
hackersarise.com. 5 EN NS ns7.wixdns.net.
hackersarise.com. 5 EN NS ns6.wixdns.net.
;; SECCIÓN ADICIONAL:
ns6.wixdns.net. 5 EN UN 216.239.32.100
recorte
Listado 33: Usando dig y su opción ns para obtener información sobre un servidor de nombres de dominio
Tenga en cuenta también en la SECCIÓN ADICIONAL que esta consulta de excavación revela la IP
dirección (216.239.32.100) del servidor DNS que sirve a hackersarise.com.
También puede utilizar el comando dig para obtener información sobre los servidores de
correo electrónico conectados a un dominio agregando la opción mx (mx es la abreviatura de servidor
de intercambio de correo). Esta información es crítica para los ataques a los sistemas de correo
electrónico. Por ejemplo, la información sobre los servidores de correo electrónico www.hackersarise.com
se muestra en la SECCIÓN DE AUTORIDAD del Listado 34.
;; SECCIÓN DE AUTORIDAD:
hackersarise.com. 5 EN SOA ns6.wixdns.net. soporte.wix.com 2016052216 10800 3600 604 800 3600
recorte
Listado 34: Usando dig y su opción mx para obtener información sobre un intercambio de correo de dominio
servidor
El servidor DNS de Linux más común es el dominio de nombres de Internet de Berkeley (BIND).
En algunos casos, los usuarios de Linux se referirán a DNS como BIND, pero no se confunda: DNS y BIND
asignan nombres de dominio individuales a direcciones IP.
electrónico www.wowebook.org
Machine Translated by Google
Entonces solo necesitaría guardar el archivo. Sin embargo, también puedes lograr el
mismo resultado exclusivamente desde la línea de comando ingresando lo siguiente:
Este comando repite la cadena del servidor de nombres 8.8.8.8 y la redirige (>) al archivo /
etc/resolv.conf, reemplazando el contenido actual. Tu /etc/resolv.conf
El archivo ahora debería verse como en la Figura 32.
Figura 32: Cambiar el archivo resolv.conf para especificar el servidor DNS de Google
NOTA Si está utilizando una dirección DHCP y el servidor DHCP proporciona una configuración DNS, el
servidor DHCP reemplazará el contenido del archivo cuando renueve la dirección DHCP.
Un archivo especial en su sistema llamado archivo de hosts también realiza el nombre de dominio:
Traducción de direcciones IP. El archivo de hosts se encuentra en /etc/hosts y, al igual que con DNS,
puede usarlo para especificar su propia asignación de dirección IP y nombre de dominio.
En otras palabras, puede determinar a qué dirección IP accede su navegador cuando ingresa
www.microsoft.com (o cualquier otro dominio) en el navegador, en lugar de dejar que el servidor DNS
decida. Como hacker, esto puede resultar útil para secuestrar una conexión TCP en su red de área
local para dirigir el tráfico a un servidor web malicioso con una herramienta como dnsspoof.
Desde la línea de comando, escriba el siguiente comando (puede sustituir el editor de texto
preferido por leafpad):
De forma predeterminada, el archivo de hosts contiene solo una asignación para su host local,
en 127.0.0.1, y el nombre de host de su sistema (en este caso, Kali, en 127.0.1.1). Pero puedes agregar
cualquier dirección IP asignada a cualquier dominio que desees. Como ejemplo de cómo se podría
utilizar esto, puede asignar www.bankofamerica.com a su sitio web local, en 192.168.181.131.
# Las siguientes líneas son deseables para hosts con capacidad IPv6
::1 localhost ip6localhost ip6loopback
ff02::1 ip6todos los nodos
ff02::2 ip6todos los enrutadores
Resumen
Cualquier hacker necesita algunas habilidades básicas de redes Linux para conectarse,
analizar y administrar redes. A medida que progreses, estas habilidades serán cada vez
más útiles para realizar reconocimientos, suplantaciones de identidad y conexiones a
sistemas de destino.
Ejercicios
Antes de pasar al Capítulo 4, pruebe las habilidades que aprendió en este capítulo completando
los siguientes ejercicios:
7. Agregue el servidor DNS de Google a su archivo /etc/resolv.conf para que su sistema haga
referencia a ese servidor cuando no pueda resolver una consulta de nombre de
dominio con su servidor DNS local.
electrónico www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
4
Agregar y eliminar
Software
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Buscando un paquete
Antes de descargar un paquete de software, puede verificar si el paquete que necesita está
disponible en su repositorio, que es un lugar donde su sistema operativo almacena información.
La herramienta apt tiene una función de búsqueda que puede comprobar si el paquete está disponible.
La sintaxis es sencilla:
Tenga en cuenta que usamos el comando aptcache para buscar en el caché de apt, o el lugar
donde almacena los nombres de los paquetes. Entonces, si estuviera buscando el sistema de
detección de intrusiones Snort, por ejemplo, ingresaría el comando que se muestra en el Listado
41.
Como puede ver, numerosos archivos tienen la palabra clave snort , pero cerca de la mitad del
resultado vemos snort: sistema flexible de detección de intrusiones en la red. ¡Eso es lo que estamos
buscando!
Agregar software
Ahora que sabes que el paquete snort existe en tu repositorio, puedes usar aptget para descargar
el software.
Para instalar una pieza de software desde el repositorio predeterminado de su sistema
operativo en la terminal, use el comando aptget , seguido de la palabra clave install y luego el
nombre del paquete que desea instalar. La sintaxis se ve así:
Eliminación de software
Al eliminar software, utilice aptget con la opción eliminar , seguido del nombre del software a
eliminar (consulte el Listado 43).
Listado 44: Eliminación de Snort y los archivos de configuración que lo acompañan con aptget purge
electrónico www.wowebook.org
Machine Translated by Google
Actualización de paquetes
Los repositorios de software se actualizarán periódicamente con nuevo software o nuevas versiones
de software existente. Estas actualizaciones no le llegan automáticamente, por lo que debe
solicitarlas para poder aplicarlas a su propio sistema. Actualizar no es lo mismo que actualizar:
actualizar simplemente actualiza la lista de paquetes disponibles para descargar desde el
repositorio, mientras que actualizar actualizará el paquete a la última versión en el repositorio.
Listado 45: Actualizando todos los paquetes obsoletos con aptget update
Paquetes de actualización
Listado 46: Actualizando todos los paquetes obsoletos con aptget Upgrade
Debería ver en el resultado que su sistema estima la cantidad de espacio en el disco duro necesario
para el paquete de software. Continúe e ingrese Y
si desea continuar y tener suficiente espacio en el disco duro para la actualización.
Por supuesto, utilizará el repositorio de Kali, que tiene una gran cantidad de
software de seguridad y piratería. Pero debido a que Kali se especializa en seguridad
y piratería, no incluye algún software y herramientas especiales, ni siquiera algún
software común y corriente. Vale la pena agregar uno o dos repositorios de respaldo en
los que su sistema pueda buscar en caso de que no encuentre un software específico
en el repositorio de Kali.
Los repositorios que su sistema buscará software se almacenan en el archivo
sources.list , y puede modificar este archivo para definir desde qué repositorios desea
descargar el software. A menudo agrego los repositorios de Ubuntu después de los
repositorios de Kali en mi archivo sources.list ; De esa manera, cuando solicito descargar
un nuevo paquete de software, mi sistema primero buscará en el repositorio de Kali y, si el
paquete de software no está allí, buscará en el repositorio de Ubuntu.
Puede encontrar el archivo fuentes.list en /etc/apt/sources.list y abrirlo con cualquier
editor de texto. Volveré a usar Leafpad. Para abrir el archivo sources.list , ingrese lo
siguiente en su terminal, reemplazando leafpad con el nombre de su editor:
electrónico www.wowebook.org
Machine Translated by Google
multiverse Contiene software restringido por derechos de autor u otras cuestiones legales
Una vez que haya instalado Synaptic, puede iniciarlo desde Configuración4
Administrador de paquetes Synaptic, que debería abrir una ventana como la de la Figura
42.
Ahora puedes buscar el paquete que estás buscando. Simplemente haga clic en
la pestaña Buscar para abrir una ventana de búsqueda. Como está buscando Snort
nuevamente, ingrese snort en la ventana de búsqueda y haga clic en Buscar. Desplácese
hacia abajo en los resultados de la búsqueda para encontrar el paquete que está buscando.
Marque la casilla junto a Snort y luego haga clic en la pestaña Aplicar , como se muestra en
la Figura 43. Synaptic ahora descargará e instalará Snort desde el repositorio junto con
las dependencias necesarias.
electrónico www.wowebook.org
Machine Translated by Google
El comando git clone copia todos los datos y archivos de esa ubicación en su
sistema. Puede verificar que se hayan descargado exitosamente usando el comando de
lista larga ls –l en el directorio de destino, así:
kali >ls l
total 80
drwxrxrx 7 raíz raíz 4096 10 de enero 22:19 bluediving
drwxrxrx 2 raíz raíz 4096 5 de diciembre 11:17 Escritorio
drwxrxrx 2 raíz raíz 4096 5 de diciembre 11:17 Documentos
drwxrxrx 2 raíz raíz 4096 5 de diciembre 11:17 Descargas
drwxrxrx 2 raíz raíz 4096 5 de diciembre 11:17 Música
recorte
Resumen
En este capítulo, aprendió algunas de las muchas formas de descargar e instalar nuevo
software en su sistema Linux. Los administradores de paquetes de software (como apt),
los instaladores basados en GUI y los clones de git son los métodos más comunes y
cruciales que debe conocer un aspirante a hacker. Pronto se familiarizará con cada
uno de ellos.
Ejercicios
Antes de pasar al Capítulo 5, pruebe las habilidades que aprendió en este capítulo
completando los siguientes ejercicios:
3. Actualiza tu repositorio.
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
5
Control de archivos
Permisos del directorio
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Estos otros usuarios suelen agruparse en grupos que generalmente comparten una
función similar. En una entidad comercial, estos grupos podrían ser finanzas, ingeniería,
ventas, etc. En un entorno de TI, estos grupos pueden incluir desarrolladores,
administradores de red y administradores de bases de datos.
La idea es colocar a personas con necesidades similares en un grupo al que se le
concedan permisos relevantes; entonces cada miembro del grupo hereda los permisos
del grupo. Esto se debe principalmente a la facilidad de administración de permisos y,
por tanto, a la seguridad.
El usuario raíz es parte del grupo raíz de forma predeterminada. Cada nuevo usuario
del sistema debe agregarse a un grupo para poder heredar los permisos de ese grupo.
Conceder permisos
A todos y cada uno de los archivos y directorios se les debe asignar un nivel particular de
permiso para las diferentes identidades que lo utilizan. Los tres niveles de permiso son
los siguientes:
r Permiso para leer. Esto otorga permiso solo para abrir y ver un archivo.
w Permiso para escribir. Esto permite a los usuarios ver y editar un archivo.
x Permiso para ejecutar. Esto permite a los usuarios ejecutar un archivo (pero no
necesariamente verlo o editarlo).
De esta forma, el usuario root puede otorgar a los usuarios un nivel de permiso
dependiendo de para qué necesitan los archivos. Cuando se crea un archivo, normalmente
el usuario que lo creó es el propietario del archivo y el grupo propietario es el grupo
actual del usuario. El propietario del archivo puede otorgarle varios privilegios de acceso.
Veamos cómo cambiar los permisos para pasar la propiedad a usuarios individuales y a
grupos.
Aquí, damos el comando, el nombre del usuario al que le estamos dando propiedad
y luego la ubicación y el nombre del archivo relevante. Este comando otorga a la cuenta
de usuario de Bob u la propiedad de bobsfile v.
Comprobando permisos
Cuando desee saber qué permisos se otorgan a qué usuarios para un archivo o directorio,
use el comando ls con el parámetro –l (largo) para mostrar el contenido de un directorio
en formato largo; esta lista contendrá los permisos. En el Listado 51, uso el comando ls –
l en el archivo /usr/share/hashcat
(una de mis herramientas favoritas para descifrar contraseñas) para ver qué podemos
aprender sobre los archivos allí.
Listado 51: Verificando los permisos de un archivo con el comando de listado largo
u El tipo de archivo
v Los permisos del archivo para propietario, grupos y usuarios, respectivamente
w El número de enlaces (este tema está más allá del alcance del libro).
x El propietario del archivo
Estos permisos no están escritos en piedra. Como usuario root o propietario de archivos, puede
cambiarlos. A continuación, haremos precisamente eso.
Cambiar permisos
Podemos usar el comando de Linux chmod (o cambiar modo) para cambiar las misiones. Sólo un
usuario root o el propietario del archivo pueden cambiar los permisos.
En esta sección, usamos chmod para cambiar los permisos en hashcat.hcstat
utilizando dos métodos diferentes. Primero usamos una representación numérica de permisos y
luego usamos una representación simbólica.
están representados por 1 y 0, respectivamente. Puede pensar en los permisos rwx como tres
interruptores ON/OFF, de modo que cuando se conceden todos los permisos, esto equivale a 111
en binario.
Un conjunto binario como este se representa fácilmente como un dígito mediante convert
convirtiéndolo en octal, un sistema numérico de ocho dígitos que comienza con 0 y termina con
7. Un dígito octal representa un conjunto de tres dígitos binarios, lo que significa que podemos
representar un conjunto rwx completo con un dígito. La Tabla 51 contiene todas las combinaciones
de permisos posibles y sus representantes octales y binarios.
000 0
001 1 X
010 2 w
011 3 wx
100 4 r
101 5 RX
110 6 rw
111 7 rwx
rwx
4
rwx
21
Observe en la Tabla 51 que la representación octal para wx es 3, que no es coincidencia
que sea el mismo valor que obtenemos cuando sumamos los dos valores para establecer w y x
individualmente: 2 + 1 = 3.
Finalmente, cuando los tres permisos están activados, se ve así:
rwx
421
electrónico www.wowebook.org
Machine Translated by Google
777
Aquí es donde entra en juego el atajo. Al pasarle a chmod tres dígitos octales (uno
para cada conjunto de rwx ), seguidos de un nombre de archivo, podemos cambiar los
permisos de ese archivo para cada tipo de usuario. Ingrese lo siguiente en su línea de comando:
Al observar la Tabla 51, podemos ver que esta declaración le otorga al propietario
todos los permisos, al grupo todos los permisos y a todos los demás (otros) solo el permiso
de lectura.
Ahora podemos ver si esos permisos han cambiado ejecutando ls l en el directorio
y mirando la línea hashcat.hcstat . Navegue hasta el directorio y ejecute ese comando
ahora:
kali >ls l
total 32952
drwxrxrx 5 u raíz raíz raíz 4096 5 de diciembre 10:47 conjuntos de caracteres
rwxrwxr 1 raíz 33685504 28 de junio de 2018 hashcat.hcstat
rwrr 1 raíz raíz raíz 33685504 28 de junio de 2018 hashcat.hctune
drwxr xrx 2 raíz 4096 5 de diciembre 10:47 mascarillas
drwxr xrx 2 raíz raíz raíz 4096 5 de diciembre 10:47 OpenCL
drwxr xrx 3 raíz 4096 5 de diciembre 10:47 reglas
Elimina un permiso
+ Agrega un permiso
= Establece un permiso
Después del operador, incluya el permiso que desea agregar o eliminar (rwx) y,
finalmente, el nombre del archivo al que aplicarlo.
54 Capítulo 5
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Este comando dice que se elimine () el permiso de escritura (w) de hashcat
.hcstat para el usuario (u).
Ahora, cuando verifiques los permisos con ls –l nuevamente, deberías ver
que el archivo hashcat.hcstat ya no tiene permiso de escritura para el usuario:
kali >ls l
total 32952
drwxrxrx 5 raíz raíz raíz 4096 5 de diciembre 10:47
rxrxr 1 raíz 33685504 28 de junio de 2018 hashcat.hcstat
rwrr 1 raíz raíz raíz 33685504 28 de junio de 2018 hashcat.hctune
drwxr xrx 2 raíz 4096 5 de diciembre 10:47 mascarillas
drwxr xrx 2 raíz raíz raíz 4096 5 de diciembre 10:47 OpenCL
drwxr xrx 3 raíz 4096 5 de diciembre 10:47 reglas
También puedes cambiar varios permisos con un solo comando. Si desea otorgar
permiso de ejecución tanto al usuario como a otros usuarios (sin incluir el grupo), puede
ingresar lo siguiente:
Este comando le dice a Linux que agregue el permiso de ejecución para el usuario.
así como el permiso de ejecución para otros para el archivo hashcat.hcstat .
kali >ls l
total 80
drwxrxrx 7 raíz raíz 4096 5 de diciembre 11.17 Escritorio
drwxrxrx 7 root root 4096 5 de diciembre 11.17 Documentos
drwxrxrx 7 root root 4096 5 de diciembre 11.17 Descargas
drwxrxrx 7 raíz raíz 4096 5 de diciembre 11.17 Música
rwrr 1 raíz raíz 1072 5 de diciembre 11.17 newhackertoolu
drwxrxrx 7 root root 4096 5 de diciembre 11.17 Imágenes
Ahora, cuando realizamos un listado largo en el directorio, podemos ver que nuestra
nueva herramienta hacker tiene permiso de ejecución para el propietario:
recorte
drwxrxrx 7 raíz raíz 4096 5 de diciembre 11.17 Música
rwxrwrw 1 raíz raíz 1072 5 de diciembre 11.17 newhackertool
drwxrxrx 7 root root 4096 5 de diciembre 11.17 Imágenes
recorte
Como ahora comprende, esto nos otorga (como propietario) todos los permisos, incluido
el de ejecución, y otorga al grupo y a todos los demás solo permisos de lectura y escritura (4
+ 2 = 6).
La umask es un número decimal de tres dígitos que corresponde a los tres dígitos de
los permisos, pero el número de la umask se resta del número de permisos para proporcionar
el nuevo estado de los permisos. Esto significa que cuando se crea un nuevo archivo o
directorio, sus permisos se establecen en el valor predeterminado menos el valor en umask,
como se muestra en la Figura 51.
Por ejemplo, si la umask está configurada en 022, se creará un nuevo archivo con el valor predeterminado original.
Los permisos de 666 ahora tendrán los permisos 644, lo que significa que el propietario tiene permisos de
lectura y escritura, y el grupo y todos los demás usuarios solo tienen permiso de lectura.
En Kali, como ocurre con la mayoría de los sistemas Debian, la umask está preconfigurada en 022,
lo que significa que el valor predeterminado de Kali es 644 para archivos y 755 para directorios.
El valor de umask no es universal para todos los usuarios del sistema. Cada usuario puede establecer
un valor de máscara de usuario predeterminado personal para los archivos y directorios en su archivo .profile
personal . Para ver el valor actual cuando inicia sesión como usuario, simplemente ingrese el comando
umask y observe lo que se devuelve. Para cambiar el valor de umask para un usuario, edite el archivo /home/
username/.profile y, por ejemplo, agregue umask 007 para configurarlo de modo que solo el usuario y los
miembros del grupo de usuarios tengan permisos.
Permisos especiales
Además de los tres permisos de propósito general, rwx, Linux tiene tres permisos especiales que son un poco
más complicados. Estos permisos especiales son configurar ID de usuario (o SUID), configurar ID de grupo
(o SGID) y bit fijo. Discutiré cada uno de ellos por separado en las siguientes tres secciones.
Como ya debería saber, un usuario puede ejecutar un archivo sólo si tiene permiso para ejecutar ese archivo
en particular. Si el usuario solo tiene permisos de lectura y/o escritura, no puede ejecutar. Esto puede parecer
sencillo, pero existen excepciones a esta regla.
Es posible que se haya encontrado con un caso en el que un archivo requiere los permisos del usuario
root durante la ejecución para todos los usuarios, incluso aquellos que no son root. Por ejemplo, un archivo que
permite a los usuarios cambiar su contraseña necesitaría acceso al archivo /etc/shadow (el archivo que
contiene las contraseñas de los usuarios en Linux) que requiere privilegios de usuario root para poder ejecutarse.
En tal caso, puede otorgar temporalmente privilegios de propietario para ejecutar el archivo configurando el bit
SUID en el programa.
Básicamente, el bit SUID dice que cualquier usuario puede ejecutar el archivo con los permisos del
propietario, pero esos permisos no se extienden más allá del uso de ese archivo.
electrónico www.wowebook.org
Machine Translated by Google
Para configurar el bit SUID , ingrese un 4 antes de los permisos regulares, de modo
que un archivo con un nuevo permiso resultante de 644 se represente como 4644 cuando el SUID
El bit está configurado.
En este caso, queremos buscar archivos en cualquier parte del sistema de archivos, para el
usuario root u otro administrador de sistemas, con los permisos 4000. Para hacer esto, podemos
usar el siguiente comando de búsqueda :
Con este comando le pedimos a Kali que comience a buscar en la parte superior del sistema
de archivos con la sintaxis / . Luego busca en todas partes debajo de / archivos que son propiedad
de root, especificados con el usuario root y que tienen el bit de permiso SUID establecido (perm
4000).
Cuando ejecutamos este comando, obtenemos el resultado que se muestra en el Listado 52.
/usr/bin/chsh
/usr/bin/gpasswd
/usr/bin/pkexec
/usr/bin/sudo
/usr/bin/contraseña
/usr/bin/kismet_capture
recorte
El resultado revela numerosos archivos que tienen el bit SUID configurado. Naveguemos
hasta el directorio /usr/bin , donde residen muchos de estos archivos, y luego ejecutemos un listado
largo en ese directorio y desplácese hacia abajo hasta el archivo sudo , como se muestra en el Listado
53.
Tenga en cuenta que en u, el primer conjunto de permisos (para el propietario) tiene una s
en lugar de la x. Así es como Linux representa que el bit SUID está configurado. Esto significa que
cualquiera que ejecute el archivo sudo tiene privilegios de usuario root, lo que puede ser un problema
de seguridad para el administrador del sistema y un posible vector de ataque para el hacker. Por
ejemplo, algunas aplicaciones necesitan acceder al directorio /etc/
archivo sombra para completar con éxito sus tareas. Si el atacante puede obtener el control de esa
aplicación, puede utilizar el acceso de esa aplicación a las contraseñas en un sistema Linux.
Linux tiene un sistema de seguridad bien desarrollado que protege archivos y directorios del
acceso no autorizado. El aspirante a hacker debe tener un conocimiento básico de este sistema no
sólo para proteger sus archivos sino también para ejecutar nuevas herramientas y archivos. En
algunos casos, los piratas informáticos pueden aprovechar los permisos SUID y SGID para escalar
privilegios de un usuario normal a un usuario root.
Resumen
El uso de permisos por parte de Linux para proteger los archivos y directorios de un usuario
o grupo de otros usuarios en el sistema puede usarse con fines ofensivos y defensivos.
Ahora debería saber cómo administrar estos permisos y cómo explotar los puntos débiles
de este sistema de seguridad, en particular, los bits SUID y SGID .
Ejercicios
Antes de pasar al Capítulo 6, ponga a prueba los conocimientos adquiridos en este capítulo
completando los siguientes ejercicios:
1. Seleccione un directorio y ejecute un listado largo en él. Tenga en cuenta los permisos sobre
los archivos y directorios.
Gestión de proceso
6
En un momento dado, un sistema Linux
normalmente tiene cientos, o incluso miles,
de procesos ejecutándose simultáneamente.
Un proceso es simplemente un programa que se
ejecuta y utiliza recursos. Incluye una terminal, un servidor
web, cualquier comando en ejecución, cualquier base
de datos, la interfaz GUI y mucho más. Cualquier buen linux
El administrador, y en particular un hacker, necesita comprender cómo gestionar sus
procesos para optimizar sus sistemas. Por ejemplo, una vez que un pirata informático
toma el control de un sistema objetivo, es posible que desee encontrar y detener un
determinado proceso, como una aplicación antivirus o un firewall. Para hacerlo, el
hacker primero necesitaría saber cómo encontrar el proceso. Es posible que el hacker
también desee configurar un script de escaneo para que se ejecute periódicamente
para encontrar sistemas vulnerables, por lo que también veremos cómo programar dicho script.
En este capítulo, aprenderá a gestionar esos procesos. Primero,
aprenda a ver y encontrar procesos y a descubrir qué procesos utilizan la mayor
cantidad de recursos. Luego, aprenderá a gestionar procesos mediante
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Visualización de procesos
En la mayoría de los casos, el primer paso en la gestión de procesos es ver qué procesos se
están ejecutando en su sistema. La herramienta principal para ver procesos (y una de las
mejores amigas del administrador de Linux) es el comando ps . Ejecútelo en su línea de comando
para ver qué procesos están activos:
kali >ps
PID TTY TIEMPO CMD
El kernel de Linux, el núcleo interno del sistema operativo que controla casi todo,
asigna un ID de proceso único (PID) a cada proceso de forma secuencial, a medida que se
crean. Cuando se trabaja con estos procesos en Linux, a menudo es necesario especificar sus
PID, por lo que es mucho más importante anotar el PID del proceso que el nombre del proceso.
Al ejecutar el comando ps con las opciones aux se mostrarán todos los procesos que se
ejecutan en el sistema para todos los usuarios, como se muestra en el Listado 61. Tenga en
cuenta que no antepone un guión () a estas opciones y que todo está en minúsculas; Debido
a que Linux distingue entre mayúsculas y minúsculas, el uso de opciones en mayúsculas le
daría resultados significativamente diferentes.
Listado 61: Usando las opciones auxiliares para ver los procesos de todos los usuarios
Como puede ver, este comando ahora enumera tantos procesos que probablemente se
ejecuten en la parte inferior de la pantalla. El primer proceso es init, que aparece en la
columna final, y el último proceso es el comando que ejecutamos para mostrar, ps aux.
Muchos de los detalles (PID, %CPU, TIEMPO, COMANDO, etc.) pueden ser diferentes
en su sistema, pero deben tener el mismo formato. Para nuestros propósitos, estas
son las columnas más importantes de este resultado:
En general, para realizar cualquier acción sobre un proceso, debemos especificar su PID.
Veamos cómo utilizar este identificador a nuestro favor.
Cuando consultamos o realizamos una acción sobre procesos, generalmente no queremos que
todos los procesos se muestren en la pantalla. Es simplemente un problema de demasiada
información. La mayoría de las veces queremos encontrar información sobre un solo
proceso. Para hacerlo, podemos usar el comando de filtrado grep, que presenté en el
Capítulo 1.
Para demostrarlo, usaremos el marco de explotación Metasploit, el marco de
explotación más utilizado y el buen amigo de casi todos los piratas informáticos. Esto viene
instalado en su sistema Kali, así que inicie Metasploit con lo siguiente:
electrónico www.wowebook.org
Machine Translated by Google
la tercera columna (la columna de CPU), para ver que está usando el 35,1 por ciento de su CPU,
y consulte la cuarta columna para ver que está usando el 15,2 por ciento de la memoria de su
sistema. Eso es bastante. ¡Es una bestia exigente!
Cuando ingresa el comando ps , los procesos se muestran en el orden en que se iniciaron y, dado
que el kernel asigna PID en el orden en que se iniciaron, lo que ve son procesos ordenados por
número de PID.
En muchos casos, queremos saber qué procesos utilizan más
recursos. Aquí es donde el comando top resulta útil porque muestra los procesos ordenados por
recursos utilizados, comenzando por el más grande.
A diferencia del comando ps , que nos proporciona una instantánea única de los procesos, top
actualiza la lista dinámicamente (de forma predeterminada, cada 10 segundos).
Puede observar y monitorear esos procesos que consumen muchos recursos, como se muestra
en el Listado 63.
kali >arriba
arriba 15:31:17 hasta 2 días, ^;50, 4 usuarios, carga promedio: 0,00, 0,04, 0,09
Tareas: 176 en total, 1 en ejecución, 175 durmiendo, 0 detenido, 0 zombie
%Cpu(s): 1,3 us, 0,7 sy,).) ni, 97,4 id, 0,0 wa, 0,0 hi 0,0 si 0,0
KiB Mem: 1491220 en total, 64848 gratis, 488272 usados, 938100 buff/caché
KiB Swap: 1046524 en total, 1044356 gratis, 2168 usados. 784476 disponible MEM
Los administradores de sistemas a menudo mantienen la parte superior en ejecución en una terminal para monitorear
uso de los recursos del proceso. Como hacker, es posible que quieras hacer lo mismo,
especialmente si tienes varias tareas ejecutándose en tu sistema. Mientras tienes la parte
superior en ejecución, presiona H o ? Aparecerá una lista de comandos interactivos y al presionar
Q saldrá de la parte superior. Pronto volverá a utilizar top para administrar sus procesos en
“Cambiar la prioridad de los procesos con nice” en la página 65 y “Eliminar procesos” en la
página 66.
Gestión de procesos
Los piratas informáticos a menudo necesitan realizar multiprocesamiento y un sistema operativo
como Kali es ideal para ello. El pirata informático puede tener un escáner de puertos ejecutándose
mientras ejecuta un escáner de vulnerabilidades y un exploit simultáneamente. Esto requiere que
el pirata informático administre estos procesos de manera eficiente para utilizar mejor los recursos
del sistema y completar la tarea. En esta sección, le mostraré cómo administrar múltiples procesos.
−20 0 +19
electrónico www.wowebook.org
Machine Translated by Google
El comando renice toma valores absolutos entre –20 y 19 y establece la prioridad en ese nivel
particular, en lugar de aumentar o disminuir desde el nivel en el que comenzó. Además, Renice
requiere el PID del proceso al que se dirige en lugar del nombre. Entonces, si el proceso lento está
usando una cantidad excesiva de recursos en su sistema y desea darle una prioridad más baja,
permitiendo así que otros procesos tengan una prioridad más alta y más recursos, puede cambiar el
proceso lento (que tiene un PID de 6996) y darle es un valor agradable mucho más alto , así:
Al igual que con nice, solo el usuario root puede cambiar un proceso a un valor negativo para
darle mayor prioridad, pero cualquier usuario puede ser amable y reducir la prioridad con renice.
También puede utilizar la utilidad superior para cambiar el valor agradable . con la cima
utilidad en ejecución, simplemente presione la tecla R y luego proporcione el PID y el bonito
valor. El Listado 64 muestra la utilidad superior ejecutándose. Cuando presiono la tecla R y proporciono
el PID y el valor agradable , obtengo el siguiente resultado:
arriba 21:36:56 hasta 21:41, 2 usuarios, carga promedio: 0,60, 0,22, 0,11
Tareas: 128 en total, 1 en ejecución, 127 durmiendo, 0 detenido, 0 zombie
%Cpu(s): 1,5 us, 0,7 sy, 0,0 ni, 96,7 id, 1,1 wa, 0,0 hi, 0,0 si, 0,0 st
KiB Mem: 511864 en total, 500780 usados, 11084 libres, 152308 buffers
Intercambio de KiB: 901116 en total, 14444 usados, 886672 gratuitos, 171376 en caché
u PID para Renice
|
PID USUARIO PR NI VIRT RES SHR S %CPU %MEM TIEMPO DOMINIO
5451 raíz 20 0 1577m 19m 14m S 5.3 3.9 42:46.26 0LLYDBG.EXE
2766 raíz 20 0 55800 20m 5480 S 2,6 4,0 1:01,42 Xorg
5456 raíz 20 0 6356 4272 1780 S 1.3 0.8 13:21.69 servidor de vino
7 raíz 20 0 0 0 0 S 0.3 0.0 0:30.12 rcu_sched
5762 raíz 20 0 174m 20m 17m S 0.3 4.1 0:04.74 gnometerminal
Procesos de matanza
Con el comando superior , puede identificar qué procesos están utilizando demasiados
recursos; A menudo, esos procesos serán legítimos, pero puede haber procesos
maliciosos que consumen recursos y usted querrá eliminarlos.
Si solo desea reiniciar un proceso con la señal HUP, ingrese 1
opción con matar, así:
Gestión de procesos 67
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
En Linux, ya sea que esté trabajando desde la línea de comandos o la GUI, está
trabajando dentro de un shell. Todos los comandos que se ejecutan se ejecutan desde ese
shell, incluso si se ejecutan desde la interfaz gráfica. Cuando ejecuta un comando, el shell
espera hasta que se complete el comando antes de ofrecer otro símbolo del sistema.
En este caso, el shell bash abrirá el editor de texto leafpad para crear un nuevo script.
Mientras trabajamos en el editor de texto, la terminal se ocupa ejecutando el editor de texto.
Si regresamos a la terminal, deberíamos ver que está ejecutando nuestro editor de texto y
que no tenemos ningún mensaje nuevo que nos permita ingresar más comandos.
Por supuesto, podríamos abrir otra terminal para ejecutar más comandos, pero una
mejor opción para ahorrar recursos y espacio en la pantalla es iniciar el editor de texto
ejecutándose en segundo plano. Ejecutar un proceso en segundo plano simplemente
significa que continuará ejecutándose sin necesidad del terminal. De esta forma, el terminal
queda libre para otras tareas.
Para iniciar el editor de texto en segundo plano, simplemente agregue un signo (&) al
final del comando, así:
Ahora, cuando se abre el editor de texto, la terminal devuelve un nuevo símbolo del
sistema para que podamos ingresar otros comandos en nuestro sistema mientras editamos
nuestro nuevo script. Esto es efectivo para cualquier proceso que pueda ejecutarse durante un
período de tiempo significativo cuando desee utilizar el terminal. Como hacker, esto le resultará
útil para ejecutar múltiples terminales con múltiples tareas, para ahorrar recursos y espacio en
la pantalla.
Si desea mover un proceso que se ejecuta en segundo plano al primer plano, puede
utilizar el comando fg (primer plano). El comando fg requiere el PID del proceso que desea
volver al primer plano, como se muestra a continuación.
Procesos de programación
Tanto los administradores de sistemas Linux como los piratas informáticos a menudo necesitan
programar procesos para que se ejecuten a una hora determinada del día. Un administrador del
sistema podría querer programar una copia de seguridad del sistema para que se ejecute todos los
sábados por la noche a las 2 a.m., por ejemplo. Un pirata informático podría querer configurar un
script para que se ejecute y realice reconocimientos de forma regular, encontrando puertos abiertos
o vulnerabilidades. En Linux, puedes lograr esto al menos de dos maneras: con at y crond.
El comando at es un demonio (un proceso en segundo plano) útil para programar un trabajo para
que se ejecute una vez en algún momento en el futuro. El crond es más adecuado para programar
tareas para que se realicen todos los días, semanas o meses, y cubriremos esto en detalle en el
Capítulo 16.
Usamos el demonio at para programar la ejecución de un comando o conjunto de comandos en
a las 19:20 Programado para ejecutarse a las 7:20 pm del día actual.
a las 19:20 horas del 25 de junio Programado para ejecutarse a las 7:20 pm el 25 de junio
en este momento + 20 minutos Programado para ejecutarse en 20 minutos a partir de la hora actual.
en este momento + 10 horas Programado para ejecutarse en 10 horas a partir de la hora actual.
en este momento + 5 días Programado para ejecutarse en cinco días a partir de la fecha actual.
en este momento + 3 semanas Programado para ejecutarse en tres semanas a partir de la fecha actual.
a las 19:20 25/06/2019 Programado para ejecutarse a las 7:20 p.m. el 25 de junio de 2019
Cuando ingresa al demonio at con la hora especificada, entra en modo interactivo y recibe
un mensaje at> . Aquí es donde ingresa el comando que desea ejecutar en el momento especificado:
en >/root/myscanningscript
Este fragmento de código programará myscanningscript para que se ejecute hoy a las 7:20
a. m.
electrónico www.wowebook.org
Machine Translated by Google
Resumen
Gestionar procesos en Linux es una habilidad clave para todo usuario y hacker de Linux.
Debe poder ver, buscar, eliminar, priorizar y programar procesos para administrar su
instancia de Linux de manera óptima. Un pirata informático a menudo necesitará
encontrar procesos en el objetivo que desea eliminar, como el software antivirus o un
firewall. También necesitarán gestionar múltiples procesos en un ataque y priorizarlos.
Ejercicios
Antes de pasar al Capítulo 7, pruebe las habilidades que aprendió en este capítulo completando
los siguientes ejercicios:
1. Ejecute el comando ps con las opciones auxiliares de su sistema y observe qué proceso es
el primero y cuál el último.
2. Ejecute el comando superior y observe los dos procesos que utilizan la mayor cantidad
de recursos.
3. Utilice el comando kill para finalizar el proceso que utiliza la mayor cantidad de recursos.
5. Cree un script llamado myscanning (el contenido no es importante) con un editor de texto y
luego prográmelo para que se ejecute el próximo miércoles a la 1 am.
Gestión de usuarios
7
Variables de entorno
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
kali >env
XDG_VTNR=7
SSHAGENT_PID=922
XDG_SESSION_ID=2
XDG_GREETER_DATA_DIR=/var/lib/lightdm/data/root
GLADE_PIXMAP_PATH=:eco
TÉRMINO=xtérmino
SHELL=/bin/bash
recorte
USUARIO=raíz
recorte
RUTA=/usr/local/sbin :usr/local/bin:/usr/sbin:/sbin/bin
recorte
INICIO=/raíz
recorte
Las variables de entorno siempre están en mayúsculas, como en INICIO, RUTA, SHELL, etc. Estas son
sólo las variables de entorno predeterminadas que vienen en su sistema. Un usuario también puede crear sus
propias variables y, como verá, necesitamos un comando diferente para incluirlas en la salida.
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
recorte
Ahora la lista de variables ocupará una pantalla, línea por línea, y luego se detendrá.
Cuando presiona Intro, el terminal avanza a la siguiente línea, llevándolo a la siguiente variable,
para que pueda desplazarse presionando o manteniendo presionado Intro.
Como recordará del Capítulo 2, siempre que utilice el comando more para la salida, puede
ingresar q para salir (o salir) y regresar al símbolo del sistema.
Aunque usar set con more da resultados más manejables que revisar la gran cantidad de
nombres de variables que obtienes solo con set , aún puede ser bastante tedioso si estás
buscando una variable en particular. En su lugar, puede utilizar el comando de filtrado grep para
encontrar la variable de interés.
Usemos la variable HISTSIZE como ejemplo. Esta variable contiene la cantidad
máxima de comandos que almacenará su archivo de historial de comandos.
Estos comandos son los que haya escrito previamente en el símbolo del sistema en esta sesión
y se pueden recuperar con las teclas de flecha hacia arriba y hacia abajo. Tenga en cuenta
que HISTSIZE no almacena los comandos en sí, solo el número de ellos que se pueden
almacenar.
Canalice la salida de su conjunto con grep para encontrar la variable HISTSIZE , así:
Como puede ver, este comando encuentra la variable HISTSIZE y muestra su valor. El
valor predeterminado de esta variable probablemente esté establecido en 1000 en su sistema.
Esto indica que la terminal almacenará sus últimos 1000 comandos de forma predeterminada.
Ahora veamos cómo cambiar el valor de una variable. Como se señaló, la variable HISTSIZE
contiene el valor de la cantidad de comandos para almacenar en el archivo de historial.
A veces, no querrá que su sistema guarde comandos anteriores, tal vez porque no quiere dejar ninguna
evidencia de su actividad en su propio sistema o en un sistema de destino. En ese caso, puede establecer
la variable HISTSIZE en 0
por lo que el sistema no almacenará ninguno de sus comandos anteriores. Debido a que esta
variable tiene un valor único, para cambiarla, le asigna un nuevo valor en la forma familiar que
se muestra en el Listado 71.
Kali >HISTSIZE=0
Ahora, cuando intenta utilizar las teclas de flecha hacia arriba y hacia abajo para
recuperar sus comandos, no sucede nada porque el sistema ya no los almacena.
Esto es sigiloso, aunque puede resultar inconveniente.
Cuando cambia una variable de entorno, ese cambio sólo ocurre en ese entorno en particular;
en este caso, ese entorno es la sesión de bash shell. Esto significa que cuando cierra la
terminal, todos los cambios realizados se pierden y los valores se restablecen a sus
valores predeterminados. Si desea que los cambios sean permanentes, debe utilizar el
comando exportar . Este comando exportará el nuevo valor de su entorno actual (el shell
bash) al resto del sistema, haciéndolo disponible en todos los entornos hasta que lo cambie
y lo exporte nuevamente.
Las variables son cadenas, por lo que si ejecuta con cautela, no es mala idea
guardar el contenido de una variable en un archivo de texto antes de modificarla. Por
ejemplo, dado que estamos a punto de cambiar la variable PS1 , que controla la
información que muestra en el mensaje, primero ejecute el siguiente comando para guardar
los valores existentes en un archivo de texto en el directorio de inicio del usuario actual:
De esta manera, siempre podrás deshacer los cambios. Si desea ser aún más
cauteloso y crear un archivo de texto con todas las configuraciones actuales, puede
guardar el resultado del comando set en un archivo de texto con un comando como
este:
Después de haber cambiado una variable, como lo hicimos en el Listado 71, puede
hacer que el cambio sea permanente ingresando export y luego el nombre de la variable que
cambió, como se muestra aquí:
Kali >HISTSIZE=1000
kali > exportar HISTSIZE
raíz@kali:directorio_actual
Esto es muy útil si tiene shells en varios sistemas o si ha iniciado sesión con varias
cuentas. Al establecer diferentes valores \u y \h para diferentes shells o cuentas, puede
saber de un vistazo quién es usted y cuál es su sistema actual.
Ahora, cada vez que utilices este terminal, se te recordará que eres el "Mejor hacker
del mundo". Pero cualquier terminal posterior que abra seguirá teniendo el símbolo del
sistema predeterminado, porque la variable PS1 solo contiene valores para su sesión de
terminal. Recuerde, hasta que exporte una variable, solo es válida para esa sesión. Si
realmente te gusta este nuevo símbolo del sistema y quieres verlo en cada terminal, debes
exportarlo, así:
Hacer que su mensaje muestre su directorio actual puede ser generalmente útil,
particularmente para un principiante, por lo que es algo a considerar cuando cambia su variable
PS1 .
Cambiando tu RUTA
Una de las variables más importantes en su entorno es su variable PATH , que controla en qué
parte de su sistema buscará su shell los comandos que ingrese, como cd, ls y echo. La mayoría de
los comandos se encuentran en el subdirectorio sbin o bin , como /usr/local/sbin o usr/local/bin. Si
el shell bash no encuentra el comando en uno de los directorios de su variable PATH , devolverá
el error comando no encontrado, incluso si ese comando existe en un directorio que no está
en su PATH.
Puede averiguar qué directorios están almacenados en su variable PATH haciendo clic en
usando echo en su contenido, así:
Estos son los directorios donde tu terminal buscará cualquier comando. Cuando ingresa ls,
por ejemplo, el sistema sabe que debe buscar en cada uno de estos directorios el comando ls ,
y cuando encuentra ls, el sistema lo ejecuta.
Cada directorio está separado por dos puntos (:), y no olvide agregar el $
símbolo de contenido a RUTA.
Para poder utilizar esta nueva herramienta desde cualquier directorio, es necesario agregar el
directorio que contiene esta herramienta en su variable PATH .
Para agregar newhackingtool a su variable PATH , ingrese lo siguiente:
kali >RUTA=$RUTA:/root/newhackingtool
N ota Agregar a PATH puede ser una técnica útil para los directorios que usa con frecuencia, pero tenga
cuidado de no agregar demasiados directorios a su variable PATH . Debido a que el sistema
tendrá que buscar en todos y cada uno de los directorios de PATH para encontrar comandos,
agregar muchos directorios podría ralentizar su terminal y su piratería.
Un error común cometido por los nuevos usuarios de Linux es asignar un nuevo directorio,
como /root/newhackingtool, directamente a la variable PATH de esta manera:
kali >PATH=/root/newhackingtool
kali >echo $PATH
/root/nuevaherramientadehacking
kali >cd
bash: cd: comando no encontrado
Esto asigna una cadena a la variable MYNEWVARIABLE. Para ver el valor de esa variable,
use el comando echo y el símbolo $ content con el nombre de la variable, como hicimos antes:
Al igual que las variables de entorno de nuestro sistema, las variables definidas por el usuario
deben exportarse para persistir en nuevas sesiones.
Si desea eliminar esta nueva variable, o cualquier variable, utilice el comando unset
dominio. Sin embargo, piense siempre antes de eliminar una variable del sistema, porque su sistema
probablemente funcionará de manera muy diferente después.
Como puede ver, cuando ingresa MYNEWVARIABLE sin establecer, elimina la variable junto
con su valor. Si usa echo en esa misma variable, Linux ahora devolverá una línea en blanco.
Resumen
Es posible que las variables de entorno le parezcan extrañas, pero vale la pena conocerlas. Controlan
cómo se ve, actúa y se siente su entorno de trabajo en Linux. Puede gestionar estas variables
para adaptar su entorno a sus necesidades cambiándolas, exportándolas e incluso creando las
suyas propias.
En algunos casos, pueden resultar útiles para cubrir sus huellas como hacker.
Ejercicios
Antes de pasar al Capítulo 8, pruebe las habilidades que aprendió en este capítulo completando los
siguientes ejercicios:
3. Encuentre un método para cambiar la barra diagonal (/) por una barra invertida (\) en el
ejemplo falso de Microsoft cmd PS1 (consulte el Listado 72).
8. Agregue su directorio de inicio a la variable PATH para que cualquier binario en su directorio de
inicio pueda usarse en cualquier directorio.
electrónico www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Escritura de Bash
8
Cualquier hacker que se precie debe poder
escribir guiones. De hecho, cualquier
administrador de Linux que se precie debe poder
escribir scripts. Los piratas informáticos a menudo necesitan automa
comandos, a veces desde múltiples herramientas, y esto se
hace de manera más eficiente a través de programas cortos que
ellos mismos escriben.
En este capítulo, crearemos algunos scripts de shell bash simples para comenzar con los scripts.
Agregaremos capacidades y características a medida que avancemos y eventualmente crearemos un
script capaz de encontrar posibles objetivos de ataque en un rango de direcciones IP.
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Debido a que el shell bash está disponible en casi todas las distribuciones de
Linux y UNIX (incluidos macOS y Kali), usaremos el shell bash exclusivamente.
El shell bash puede ejecutar cualquier comando, utilidad o aplicación del sistema que
su línea de comandos habitual pueda ejecutar, pero también incluye algunos de sus propios
comandos integrados. La Tabla 81 más adelante en el capítulo le brinda una referencia
a algunos comandos útiles que residen dentro del shell bash.
En capítulos anteriores, utilizó los comandos cd, pwd, set y umask . En esta
sección, usará dos comandos más: el comando echo , usado por primera vez en el Capítulo
7, que muestra mensajes en la pantalla, y el comando read , que lee datos y los almacena
en otro lugar. Simplemente aprender estos dos comandos le permitirá crear una herramienta
simple pero poderosa.
Necesitará un editor de texto para crear scripts de shell. Puede utilizar el editor de
texto de Linux que más le guste, incluidos vi, vim, emacs, gedit, kate, etc. Usaré Leafpad
en estos tutoriales, como lo hice en capítulos anteriores.
El uso de un editor diferente no debería suponer ninguna diferencia en el script ni en su
funcionalidad.
#!
Luego sigues el shebang (#!) con /bin/bash para indicar que quieres
el sistema operativo para utilizar el intérprete de shell bash. Como verá en capítulos
posteriores, también puede utilizar el shebang para utilizar otros intérpretes, como Perl
o Python. Aquí desea utilizar el intérprete de bash, así que ingrese lo siguiente:
#! /bin/bash
Luego, ingrese el comando echo, que le indica al sistema que simplemente repita
(o eco) de regreso a su monitor lo que siga al comando.
En este caso, queremos que el sistema nos responda "¡Hola, HackersArise!", como se hace en el
Listado 81. Tenga en cuenta que el texto o mensaje que queremos repetir debe estar entre comillas dobles.
#! /bin/bash
Aquí también verá una línea precedida por una almohadilla (#). Este es un comentario, que es una
nota que te dejas a ti mismo o a cualquier otra persona que lea el código para explicar lo que estás
haciendo en el script. Los programadores utilizan comentarios en todos los lenguajes de codificación. El
intérprete no lee ni ejecuta estos comentarios, por lo que no necesita preocuparse por estropear su código.
Son visibles sólo para los humanos. El shell bash sabe que una línea es un comentario si comienza con el
carácter #.
De forma predeterminada, un script bash recién creado no es ejecutable ni siquiera por usted, el
propietario. Veamos los permisos de nuestro nuevo archivo en la línea de comando usando cd para movernos
al directorio y luego ingresando ls l. Debería verse así:
kali >ls l
recorte
rwrr 1 raíz raíz 42 22 de octubre 14:32 HelloHackersArise
recorte
Como puede ver, nuestro nuevo archivo tiene permisos rwrr (644). Como aprendió en el Capítulo
5, esto significa que el propietario de este archivo sólo tiene permisos de lectura (r) y escritura (w), pero no
permisos de ejecución (x). El grupo y todos los demás usuarios sólo tienen permisos de lectura. Necesitamos
darnos lindos permisos exe para poder ejecutar este script. Cambiamos los permisos con el comando chmod,
como vio en el Capítulo 5. Para otorgar permisos de ejecución al propietario, al grupo y a todos los demás,
ingrese lo siguiente:
electrónico www.wowebook.org
Machine Translated by Google
Ahora, cuando hacemos un listado largo en el archivo, así, podemos ver que
tener permisos de ejecución:
kali >ls l
recorte
rwx rx rx 1 raíz raíz 42 22 de octubre 14:32 HelloHackersArise
recorte
Ejecutando HelloHackersArise
kali >./HelloHackersArise
El ./ antes del nombre del archivo le dice al sistema que queremos ejecutar este script en
el archivo HelloHackersArise del directorio actual. También le dice al sistema que si hay otro
archivo en otro directorio llamado HelloHackersArise, ignórelo y ejecute HelloHackersArise solo
en el directorio actual. Puede parecer poco probable que haya otro archivo con este nombre en su
sistema, pero es una buena práctica utilizar ./ al ejecutar archivos, ya que esto localiza la ejecución
del archivo en el directorio actual y muchos directorios tendrán nombres de archivo duplicados, como
inicio. y configuración.
Cuando presionamos Enter, nuestro script muy simple devuelve nuestro mensaje al monitor:
¡Hola, HackersArise!
Entonces, ahora tenemos un guión simple. Todo lo que hace es devolver un mensaje a la salida
estándar. Si queremos crear scripts más avanzados, probablemente necesitaremos agregar algunas
variables.
84 Capítulo 8
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
tú#! /bin/bash
leer nombre
x echo "¿En qué capítulo estás en Conceptos básicos de Linux para hackers?"
leer capitulo
y echo "Bienvenido" $nombre "al Capítulo" $capítulo "de Conceptos básicos de Linux para hackers!"
¡Abrimos con #! /bin/bash para decirle al sistema que queremos usar el intérprete bash para este script u.
Luego agregamos un comentario que describe el script y su funcionalidad v. Después de eso, le solicitamos al
usuario su nombre y le pedimos al intérprete que lea la entrada y la coloque en una variable que llamamos
nombre w.
Luego solicitamos al usuario que ingrese el capítulo en el que está trabajando actualmente en este libro, y
nuevamente leemos la entrada del teclado en una variable, esta vez llamada capítulo x.
En la línea final, construimos una línea de salida que da la bienvenida al lector por su nombre al capítulo
en el que se encuentra. Usamos el comando echo y proporcionamos el texto que queremos mostrar en la
pantalla entre comillas dobles. Luego, para completar el nombre y número de capítulo que ingresó el usuario,
agregamos las variables donde deberían aparecer en el mensaje. Como se señaló en el Capítulo 7, para utilizar
los valores contenidos en las variables, debe preceder el nombre de la variable con el símbolo $.
Guarde este archivo como WelcomeScript.sh. La extensión .sh es la convención para archivos de script.
Es posible que hayas notado que no incluimos la extensión antes; no es estrictamente necesario y, si deja la
extensión desactivada, el archivo se guardará como un archivo de script de shell de forma predeterminada.
Ahora, ejecutemos este script. No olvide darse permiso de ejecución con chmod primero; de lo
contrario, el sistema operativo le regañará con un mensaje de Permiso denegado.
kali >./WelcomeScript.sh
¿Cómo te llamas?
Ocupar la Web
¿En qué capítulo estás en Conceptos básicos de Linux para hackers?
8
¡Bienvenido a OccupytheWeb al Capítulo 8 de Conceptos básicos de Linux para hackers!
Como puede ver, su secuencia de comandos tomó información del usuario, la colocó en vari
ables, y luego usó esas entradas para hacer un saludo para el usuario.
electrónico www.wowebook.org
Machine Translated by Google
Este es un script simple, pero le enseñó cómo usar variables y recibir entradas desde el teclado.
Ambos son conceptos cruciales en secuencias de comandos que necesitará utilizar en secuencias de
comandos más complejas en el futuro.
Ahora que tiene algunas habilidades básicas de secuencias de comandos, pasemos a algunas
secuencias de comandos un poco más avanzadas que tienen aplicaciones en el mundo real para la
piratería. Usaremos un ejemplo del mundo del black hat hacking. Los hackers de sombrero negro son
aquellos con intenciones maliciosas, como robar números de tarjetas de crédito o desfigurar sitios
web. Los hackers de sombrero blanco son aquellos con buenas intenciones, como ayudar a los
desarrolladores de software o administradores de sistemas a hacer que sus sistemas sean más seguros.
Los hackers de sombrero gris son aquellos que tienden a moverse entre estos dos extremos.
Antes de continuar, debe familiarizarse con una herramienta sencilla pero esencial llamada nmap
que viene instalada en Kali de forma predeterminada. Probablemente hayas escuchado el nombre; nmap
se utiliza para sondear un sistema para ver si está conectado a la red y averiguar qué puertos están
abiertos. A partir de los puertos abiertos descubiertos, puede suponer qué servicios se están ejecutando
en el sistema de destino. Esta es una habilidad crucial para cualquier hacker o administrador de sistemas.
No es muy difícil. El escaneo de nmap más simple y confiable es el escaneo de conexión TCP,
designado con el modificador sT en nmap. Entonces, si quisieras escanear la dirección IP 192.168.181.1
con un escaneo TCP, ingresarías lo siguiente:
Para ir un paso más allá, si desea realizar un escaneo TCP de la dirección 192.168.181.1, para ver
si el puerto 3306 (el puerto predeterminado para MySQL) está abierto, puede ingresar esto:
Aquí, p designa el puerto que desea buscar. Continúe y pruébelo ahora en su sistema Kali.
Nuestra tarea
En el momento de escribir este artículo, hay un hacker que cumple condena en una prisión federal de EE.
UU. con el nombre de Max Butler, también conocido como Max Vision en todo el mundo hacker. Max era
una especie de hacker de sombrero gris. De día era un profesional de seguridad informática en Silicon
Valley y de noche robaba y vendía números de tarjetas de crédito en el mercado negro. Hubo un tiempo
en que dirigió el mercado negro de tarjetas de crédito más grande del mundo, CardersMarket. Ahora, Max
cumple una condena de 13 años de prisión.
86 Capítulo 8
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Al final, Max quería encontrar todos los sistemas que tuvieran el puerto 5505 abierto para
poder pasar de robar miles de números de tarjetas de crédito a robar millones. Max decidió
escribir un script que escanearía millones de direcciones IP en busca de sistemas con el puerto
5505 abierto. Por supuesto, la mayoría de los sistemas no tienen el puerto 5505 abierto, por lo
que, si lo tuvieran, es probable que estuvieran ejecutando el condenado Aloha POS. Podría ejecutar
este script mientras estaba en el trabajo durante el día y luego, por la noche, piratear aquellos
sistemas identificados con el puerto 5505 abierto.
Nuestra tarea es escribir un script que será casi idéntico al script de Max, pero en lugar de
buscar el puerto 5505 como lo hizo Max, nuestro script buscará sistemas conectados a la
omnipresente base de datos en línea MySQL. MySQL es una base de datos de código abierto
utilizada detrás de millones de sitios web; Trabajaremos con MySQL en el Capítulo 12. De forma
predeterminada, MySQL usa el puerto 3306. Las bases de datos son el "vellón de oro" que casi todo
hacker de sombrero negro busca, ya que a menudo contienen números de tarjetas de crédito e
información de identificación personal (PII) que Es muy valioso en el mercado negro.
Un escáner sencillo
Antes de escribir el script para escanear IP públicas en Internet, asumamos una tarea mucho más
pequeña. En lugar de escanear el mundo, primero escribamos un script para buscar el puerto 3306
en una red de área local para ver si nuestro script realmente funciona. Si es así, podemos editarlo
fácilmente para realizar una tarea mucho más grande.
En su editor de texto, ingrese el script que se muestra en el Listado 83.
tú#! /bin/bash
v # Este script está diseñado para encontrar hosts con MySQL instalado
gato MySQLscan2
Ahora usemos el comando nmap para solicitar un escaneo TCP w en nuestra LAN,
buscando el puerto 3306 x. (Tenga en cuenta que sus direcciones IP pueden diferir; en su
terminal, use el comando ifconfig en Linux o el comando ipconfig en Windows para determinar
su dirección IP). Para permanecer sigiloso, también enviamos la salida estándar de nmap
que normalmente aparecería en la pantalla. a un lugar especial en Linux, donde desaparece y.
Estamos haciendo esto en una máquina local, por lo que no importa mucho, pero si usaras el
script de forma remota, querrás ocultar la salida de nmap. Luego enviamos el resultado del
escaneo a un archivo llamado MySQLscan en un formato z compatible con grep, es decir, un
formato en el que grep puede funcionar.
Kali >./MySQLscanner.sh
Como podemos ver, este script pudo identificar la única dirección IP en mi LAN con
MySQL ejecutándose. Sus resultados pueden diferir, dependiendo de si algún puerto ejecuta
instalaciones de MySQL en su red local, por supuesto.
Ahora queremos adaptar este script para que sea aplicable a algo más que su propia red
local. Este script sería mucho más fácil de usar si pudiera solicitarle al usuario el rango de
direcciones IP que desea escanear y el puerto a buscar, y luego usar esa entrada. Recuerde,
aprendió cómo solicitarle al usuario y poner su entrada de teclado en una variable en
“Agregar funcionalidad con variables y entrada de usuario” en la página 84.
Echemos un vistazo a cómo podría utilizar variables para hacer que este script sea más
flexible y eficiente.
#! /bin/bash
"
u echo "Ingrese la dirección IP inicial: v lea FirstIP
"
w echo "Ingrese el último octeto de la última dirección IP:
leer LastOctetIP
88 Capítulo 8
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
"
x echo "Ingrese el número de puerto que desea escanear: leer puerto
{ gato MySQLscan2
NOTA El nombre de la variable es irrelevante, pero la mejor práctica es utilizar un nombre de variable que
le ayuda a recordar lo que contiene la variable.
También debemos solicitar al usuario estos valores. Podemos hacer esto usando el
comando echo que usamos en el Listado 81.
Para obtener un valor para la variable FirstIP, haga eco "Ingrese la dirección IP inicial:
"
en la pantalla, solicitando al usuario la primera dirección IP que desea escanear. Al ver este mensaje
A continuación, necesitamos editar el comando nmap en nuestro script para usar las
variables que acabamos de crear y completar. Para utilizar el valor almacenado en la variable,
simplemente anteponemos el nombre de la variable con $, como en $port, por ejemplo. Entonces,
en y, escaneamos un rango de direcciones IP, comenzando con la primera IP ingresada por el usuario
hasta la segunda IP ingresada por el usuario, y buscamos el puerto particular ingresado por el usuario.
Hemos utilizado las variables en lugar de la subred para escanear y el puerto para determinar qué
escanear. El símbolo de redirección > le indica a la salida estándar de nmap, que generalmente va
a la pantalla, que vaya a /dev/null (/dev/null
es simplemente un lugar para enviar la salida para que desaparezca). Luego, enviamos el
resultado en un formato compatible con grep a un archivo al que llamamos MySQLscan.
La siguiente línea sigue siendo la misma que en nuestro escáner simple: genera el
contenido del archivo MySQLscan, lo canaliza a grep, donde se filtra por líneas que incluyen la
palabra clave open, y luego envía esa salida a un nuevo archivo llamado MySQLscan2 z. Finalmente,
mostramos el contenido del archivo MySQLscan2 {.
Si todo funciona como se esperaba, este script escaneará las direcciones IP desde la primera
dirección de entrada hasta la última dirección de entrada, buscando el puerto de entrada.
y luego informar solo con las direcciones IP que tienen el puerto designado abierto. Guarde su archivo de script
como MySQLscannerAdvanced y recuerde darse permiso de ejecución.
Ahora podemos ejecutar nuestro script de escaneo simple con las variables que determinan qué rango de
direcciones IP y puerto escanear sin tener que editar el script cada vez que queramos ejecutar un escaneo:
kali >./MySQLscannerAdvanced.sh
Introduzca la dirección IP inicial:
192.168.181.0
Introduzca la última dirección IP:
192.168.181.255
Ingrese el número de puerto que desea escanear:
3306
Anfitrión: 192.168.181.254 ()Puertos:3306/open/tcp//mysql//
El script solicita al usuario la primera dirección IP, la última dirección IP y luego el puerto que desea
buscar. Después de recopilar esta información, el script realiza el escaneo de nmap y produce un informe de
todas las direcciones IP en el rango que tienen abierto el puerto especificado. Como puede ver, incluso el
script más simple puede crear una herramienta poderosa. Aprenderá aún más sobre la creación de scripts
en el Capítulo 17.
Como prometimos, la Tabla 81 le brinda una lista de algunos comandos útiles integrados en bash.
Dominio Función
: Devuelve 0 o verdadero
exportar Hace que una variable o función esté disponible para otros programas.
90 Capítulo 8
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Dominio Función
esperar
Espera a que se complete un proceso en segundo plano
Resumen
La creación de secuencias de comandos es una habilidad esencial para cualquier hacker o administrador de sistemas.
Le permite automatizar tareas que normalmente le llevarían horas de su tiempo y, una vez guardado el script, puede utilizarlo
una y otra vez. La creación de scripts en Bash es la forma más básica de scripting y avanzará al scripting en Python con aún
Ejercicios
Antes de pasar al Capítulo 9, pruebe las habilidades que aprendió en este capítulo completando los siguientes
ejercicios:
2. Cree un script similar a MySQLscanner.sh pero diséñelo para buscar sistemas con la base de datos SQL
ing dirección IP y el puerto a buscar. Luego filtre todas las direcciones IP donde esos puertos están
www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
9
Comprimir y archivar
probablemente reconocerás este concepto por el formato .zip , que combina y comprime
archivos para hacerlos más pequeños y poder transferirlos a través de Internet o a
medios extraíbles.
Hay muchas formas de hacer esto en Linux y en este capítulo analizamos algunas de
las herramientas más comunes para hacerlo. También analizamos el comando dd , que le
permite copiar unidades enteras, incluidos los archivos eliminados en esas unidades.
¿Qué es la compresión?
El interesante tema de la compresión podría llenar un libro entero por sí solo, pero
para este libro sólo necesitamos una comprensión rudimentaria del proceso.
La compresión, como su nombre lo indica, hace que los datos sean más pequeños, por lo que requiere menos
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
La compresión con pérdida es muy eficaz para reducir el tamaño de los archivos, pero
se pierde la integridad de la información. En otras palabras, el archivo después de la
compresión no es exactamente igual al original. Este tipo de compresión funciona muy bien
para archivos de gráficos, vídeo y audio, donde apenas se nota una pequeña diferencia en
el archivo: mp3, .mp4, .png y .jpg son algoritmos de compresión con pérdida. Si se cambia un
píxel en un archivo .png o una sola nota en un archivo .mp3 , es poco probable que su ojo o
su oído noten la diferencia; aunque, por supuesto, los aficionados a la música dirán que
definitivamente pueden notar la diferencia entre un archivo .png . mp3 y un archivo .flac sin
comprimir. Los puntos fuertes de la compresión con pérdidas son su eficiencia y eficacia. La
relación de compresión es muy alta, lo que significa que el archivo resultante es significativamente
más pequeño que el original.
Sin embargo, la compresión con pérdida es inaceptable cuando se envían archivos o
software y la integridad de los datos es crucial. Por ejemplo, si envía un script o un documento,
se debe conservar la integridad del archivo original cuando se descomprime. Este capítulo se
centra en este tipo de compresión sin pérdidas , que está disponible en varias utilidades y
algoritmos. Desafortunadamente, la compresión sin pérdidas no es tan eficiente como la
compresión con pérdidas, como se podría imaginar, pero para el hacker, la integridad suele
ser mucho más importante que el índice de compresión.
kali >ls l
rwxrxrx 1 raíz raíz 22311 27 de noviembre de 2018 13:00 hackersarise1.sh
rwxrxrx 1 raíz raíz rwxr 8791 27 de noviembre de 2018 13:00 hackersarise2.sh
xrx 1 raíz raíz 3992 27 de noviembre de 2018 13:00 hackersarise3.sh
Supongamos que desea enviar estos tres archivos a otro hacker con el que está trabajando
en un proyecto. Puede combinarlos y crear un único archivo usando el comando del Listado 91.
hackersarise2
hackersarise3
En su totalidad, este comando tomará los tres archivos y creará un solo archivo,
HackersArise.tar, a partir de ellos. Cuando hagas otra lista larga del directorio, verás que también
contiene el nuevo archivo .tar , como se muestra a continuación:
kali >ls l
recorte
rwrr 1 raíz raíz 40960 27 de noviembre de 2018 13:32 HackersArise.tar
recorte
kali >
Tenga en cuenta el tamaño del tarball aquí: 40.960 bytes. Cuando se archivan los tres archivos,
tar utiliza una sobrecarga significativa para realizar esta operación: mientras que la suma de los tres
archivos antes del archivado era de 35.094 bytes, después del archivado, el tarball había crecido a
40.960 bytes. En otras palabras, el proceso de archivado ha añadido más de 5.000 bytes. Aunque
esta sobrecarga puede ser significativa con archivos pequeños, se vuelve cada vez menos significativa
con archivos cada vez más grandes.
Podemos mostrar esos archivos desde el tarball, sin extraerlos, al
usando el comando tar con el modificador t content list, como se muestra a continuación:
Aquí vemos nuestros tres archivos originales y sus tamaños originales. Luego puede extraer
esos archivos del tarball usando el comando tar con x
(extraer), como se muestra a continuación:
Debido a que todavía estás usando el modificador –v , este comando mostrará qué
Los archivos se extraen en la salida. Si desea extraer los archivos y hacerlo “silenciosamente”,
es decir, sin mostrar ningún resultado, simplemente puede eliminar el modificador v (detallado),
como se muestra aquí:
Los archivos se han extraído al directorio actual; puede hacer una lista larga en el
directorio para verificarlo. Tenga en cuenta que, de forma predeterminada, si ya existe un archivo
extraído, tar eliminará el archivo existente y lo reemplazará con el archivo extraído.
Comprimir archivos
Ahora tenemos un archivo archivado, pero ese archivo es más grande que la suma de los
archivos originales. ¿Qué sucede si desea comprimir esos archivos para facilitar su transporte?
Linux tiene varios comandos capaces de crear archivos comprimidos. Miraremos estos:
Todos ellos son capaces de comprimir nuestros archivos, pero utilizan diferentes algoritmos
de compresión y tienen diferentes ratios de compresión. Por lo tanto, veremos cada uno y de qué
es capaz.
En general, comprimir es lo más rápido, pero los archivos resultantes son más grandes; bzip2
es el más lento, pero los archivos resultantes son los más pequeños; y gzip cae en algún
punto intermedio. La razón principal por la que usted, como hacker en ciernes, debería conocer los
tres métodos es que al acceder a otras herramientas, se encontrará con varios tipos de
compresión. Por lo tanto, esta sección le muestra cómo lidiar con los principales métodos de
compresión.
Probemos primero con gzip (GNU zip), ya que es la utilidad de compresión más utilizada en Linux.
Puede comprimir su archivo HackersArise.tar ingresando lo siguiente (asegurándose de estar en
el directorio que contiene el archivo archivado):
Observe que utilizamos el comodín * para la extensión del archivo; esto le dice a linux
que el comando debe aplicarse a cualquier archivo que comience con HackersArise con cualquier
extensión de archivo. Utilizará notación similar para los siguientes ejemplos.
Cuando hacemos un listado largo en el directorio, podemos ver que HackersArise.tar ha sido
reemplazado por HackersArise.tar.gz, ¡y el tamaño del archivo se ha comprimido a solo 3299
bytes!
kali >ls l
recorte
rwrr 1 raíz raíz 3299 27 de noviembre de 2018 13:32 HackersArise.tar.gz
recorte
Luego podemos descomprimir ese mismo archivo usando el comando gunzip , abreviatura
de GNU unzip.
Una vez descomprimido, el archivo ya no se guarda con la extensión .tar.gz sino con la
extensión .tar . Además, observe que ha vuelto a su tamaño original de 40.960 bytes. Intente
hacer una lista larga para confirmar esto. Vale la pena señalar que gzip también se puede
utilizar para extraer archivos .zip .
Otra de las utilidades de compresión más utilizadas en Linux es bzip2, que funciona de
manera similar a gzip pero tiene mejores relaciones de compresión, lo que significa que
el archivo resultante será aún más pequeño. Puede comprimir su archivo HackersArise.tar
ingresando lo siguiente:
Cuando haces una lista larga, puedes ver que bzip2 ha comprimido el archivo a solo 2081
bytes. También tenga en cuenta que la extensión del archivo ahora es .tar.bz2.
Para descomprimir el archivo comprimido, use bunzip2, así:
Tenga en cuenta que la utilidad de compresión redujo el tamaño del archivo a 5476 bytes,
más del doble del tamaño de bzip2. También tenga en cuenta que la extensión del archivo
ahora es .tar.Z (con una Z mayúscula).
Para descomprimir el mismo archivo, use descomprimir:
También puedes usar el comando gunzip con archivos que han sido comprimidos con
compress.
Como se mencionó, vale la pena investigar un poco más por tu cuenta, pero
Esta es una buena introducción al comando y sus usos comunes.
Resumen
Linux tiene una serie de comandos que le permiten combinar y comprimir sus archivos
para facilitar su transferencia. Para combinar archivos, tar es el comando preferido y
tiene al menos tres utilidades para comprimir archivos (gzip, bzip2 y compress), todas
con diferentes relaciones de compresión. El comando dd va más allá. Le permite realizar
una copia física de dispositivos de almacenamiento sin estructuras lógicas, como un
sistema de archivos, lo que le permite recuperar artefactos como archivos eliminados.
Ejercicios
Antes de pasar al Capítulo 10, pruebe las habilidades que aprendió en este
capítulo completando los siguientes ejercicios:
electrónico www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
10
Sistema de archivos y almacenamiento
Gestión de dispositivos
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Los piratas informáticos suelen utilizar medios externos para cargar datos, herramientas de
piratería o incluso su sistema operativo. Una vez que esté en su sistema de destino, debe
comprender con qué está trabajando, dónde encontrar archivos confidenciales u otros archivos
críticos, cómo montar una unidad en el sistema de destino y si puede colocar esos archivos en
su sistema y dónde. . En este capítulo cubrimos todos estos temas, además de cómo
administrar y monitorear dispositivos de almacenamiento.
Comenzamos con el directorio conocido como /dev, que probablemente ya habrás
notado en la estructura del directorio: dev es la abreviatura de dispositivo, y cada dispositivo
en Linux está representado por su propio archivo dentro del directorio /dev . Comencemos
trabajando con /dev.
kali >cd/dev
kali >ls l
total 0
crw 1 raíz raíz 10,175 16 de mayo 12:44 agpgart
crw 1 raíz raíz 10,235 16 de mayo 12:44 autofs
drwxrxrx 1 raíz raíz 160 16 de mayo 12:44 bloque
recorte
lrwxrwxrwx 1 raíz raíz 3 16 mayo 12:44 cdrom > sr0
recorte
drwxrxrx 2 raíz raíz 60 16 de mayo 12:44 CPU
recorte
recorte
brwrw 1 raíz raíz brwrw 8, 0 16 de mayo 12:44 sda
1 raíz raíz brwrw 1 raíz raíz 8, 1 16 mayo 12:44 sda1
brwrw 1 raíz raíz 8, 2 16 de mayo 12:44 sda2
8, 5 16 de mayo 12:44 sda5
Linux utiliza etiquetas lógicas para las unidades que luego se montan en el sistema de archivos.
Estas etiquetas lógicas variarán dependiendo de dónde estén montadas las unidades, lo que significa
que el mismo disco duro puede tener diferentes etiquetas en diferentes momentos, dependiendo de
dónde y cuándo esté montado.
Originalmente, Linux representaba las unidades de disquete (¿las recuerdas?) como fd0
y discos duros como hda. De vez en cuando todavía verás estas representaciones de unidades
en sistemas Linux heredados, pero hoy en día la mayoría de las unidades de disquete ya no existen
(gracias a Dios). Aun así, los discos duros antiguos que utilizaban una interfaz IDE o EIDE
todavía se representan en el formato hda. Las unidades de interfaz Serial ATA (SATA) y los discos
duros de interfaz de sistema pequeño (SCSI) más nuevos se representan como sda. Las unidades a
veces se dividen en secciones conocidas como particiones, que se representan en el sistema de
etiquetado con números, como verá a continuación.
Cuando los sistemas tienen más de un disco duro, Linux simplemente los nombra en serie
incrementando la última letra en orden alfabético, de modo que la primera unidad es sda, la segunda
es sdb, la tercera es sdc, y así sucesivamente (consulte la Tabla 10). 1). La letra de serie después
de sd a menudo se denomina letra mayor .
número.
Archivo de dispositivo
Descripción
Particiones de unidad
Algunas unidades se pueden dividir en particiones para administrar y separar información. Por
ejemplo, es posible que desee separar su disco duro para que su archivo de intercambio ,
directorio de inicio y directorio / estén todos en particiones separadas; es posible que desee
hacer esto por varias razones, incluido compartir recursos y relajar el valor predeterminado.
permisos. Linux etiqueta cada partición con un número menor que aparece después de la
designación de la unidad. De esta forma, la primera partición de la primera unidad SATA sería
sda1. La segunda partición sería entonces sda2, la tercera sda3, y así sucesivamente, como se
ilustra en la Tabla 102.
Dividir Descripción
sda1 La primera partición (1) en la primera (a) unidad SATA
sda2 La segunda (2) partición en la primera (a) unidad
sda3 La tercera (3) partición en la primera (a) unidad
sda4 La cuarta (4) partición en la primera (a) unidad
En ocasiones, es posible que desee ver las particiones de su sistema Linux para
ver cuáles tiene y cuánta capacidad hay disponible en cada una. Puedes hacer esto
usando la utilidad fdisk . Al usar el modificador l con fdisk se enumeran todas las
particiones de todas las unidades, como se muestra en el Listado 102.
kali >fdisk l
Disco /dev/sda: 20GiB, 21474836480 bytes, 41943040 sectores
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño del sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes/512 bytes
Tipo de etiqueta de disco: dos
Identificador de disco: 0x7c06cd70
Como puede ver en el Listado 102, los dispositivos sda1, sda2 y sda5 se
enumeran en la primera estrofa. Estos tres dispositivos forman el disco virtual de mi
máquina virtual, que es una unidad de 20 GB con tres particiones, incluida la partición de
intercambio (sda5), que actúa como RAM virtual (similar a los archivos de paginación
en Windows) cuando se excede la capacidad de la RAM.
Si explora el Listado 102 hasta la tercera estrofa, verá una segunda salida de
dispositivo designada sdb1; la etiqueta b nos indica que esta unidad está separada de
los primeros tres dispositivos. Esta es mi unidad flash de 64 GB. Tenga en cuenta
que fdisk indica que es un tipo de sistema de archivos HPFS/NTFS/ExFAT. Estos tipos
de archivos (sistema de archivos de alto rendimiento (HPFS), sistema de archivos de
nueva tecnología (NTFS) y tabla de asignación de archivos extendida (exFAT) no son
nativos de los sistemas Linux, sino de los sistemas macOS y Windows. vale la pena ser
Otra cosa a tener en cuenta sobre el nombre de los archivos de dispositivo en el directorio /
dev es que la primera posición contiene c o b. Puede ver esto en el Listado 101 al comienzo
de la mayoría de las entradas, y se parece a esto:
Estas letras representan las dos formas en que los dispositivos transfieren datos hacia
adentro y hacia afuera. La c significa carácter y estos dispositivos se conocen, como es de
esperar, como dispositivos de caracteres . Los dispositivos externos que interactúan con el
sistema enviando y recibiendo datos carácter por carácter, como ratones o teclados, son
dispositivos de caracteres.
La b representa el segundo tipo: dispositivos de bloque . Se comunican en bloques de
datos (varios bytes a la vez) e incluyen dispositivos como discos duros y unidades de DVD. Estos
dispositivos requieren un rendimiento de datos de mayor velocidad y, por lo tanto, envían y
reciben datos en bloques (muchos caracteres o bytes a la vez). Una vez que sepas si un
dispositivo es un personaje o un dispositivo de bloque, podrás obtener fácilmente más
información sobre él, como verás a continuación.
El comando de Linux lsblk, abreviatura de bloque de lista, enumera información básica sobre
cada dispositivo de bloque enumerado en /dev. El resultado es similar a la salida de fdisk l,
pero también mostrará los dispositivos con múltiples particiones en una especie de árbol,
mostrando cada dispositivo con sus particiones como ramas, y no requiere privilegios de root
para ejecutarse. En el Listado 103, por ejemplo, vemos sda, con sus ramas sda1, sda2 y sda5.
kali >lsblk
MAJ:MIN RM TAMAÑO RO TIPO PUNTO DE MONTAJE
2:0 1 disco 4K 0
8:0 0 20G 0 disco
Nombre 8:1 0 18.7G 0 parte /
fd0 8:2 0 1K 0 parte
8:5|sda5
sda1 |sda1 |sda2 0 1.3G 0 parte [SWAP]
La salida incluye la unidad de disquete como fd0 y la unidad de DVD como sr0, incluso
aunque ninguno de los dos está en mi sistema; esto es simplemente un vestigio de los sistemas
heredados. También podemos ver información sobre el punto de montaje de la unidad: esta es la
posición en la que se conectó la unidad al sistema de archivos. Tenga en cuenta que el disco duro sda1
está montado en / y la unidad flash está montada en /media.
Verá más sobre el significado de esto en la siguiente sección.
Montaje y desmontaje
La mayoría de los sistemas operativos modernos, incluidas la mayoría de las versiones nuevas de
Linux, montan automáticamente los dispositivos de almacenamiento cuando están conectados, lo
que significa que la nueva unidad flash o disco duro se conecta automáticamente al sistema de
archivos. Para aquellos nuevos en Linux, el montaje puede ser un tema extraño.
Primero se debe conectar físicamente un dispositivo de almacenamiento al sistema de archivos y
luego se adjunta lógicamente al sistema de archivos para que los datos estén disponibles para el
sistema operativo. En otras palabras, incluso si el dispositivo está conectado físicamente al sistema, no
necesariamente está conectado lógicamente ni disponible para el sistema operativo. El término montaje
es un legado de los primeros días de la informática, cuando las cintas de almacenamiento (antes de los
discos duros) tenían que montarse físicamente en el sistema informático; piense en esas computadoras
grandes con unidades de cinta giratoria que quizás haya visto en viejas películas de ciencia ficción.
Como se mencionó, el punto en el árbol de directorios donde están conectados los dispositivos se
conoce como punto de montaje. Los dos puntos de montaje principales en Linux son /mnt
y /medios. Como regla general, los discos duros internos se montan en /mnt y los dispositivos USB
externos, como unidades flash y discos duros USB externos, se montan en /media, aunque técnicamente
En algunas versiones de Linux, es necesario montar una unidad manualmente para poder acceder a su
contenido, por lo que vale la pena aprender esta habilidad. Para montar una unidad en el sistema de
archivos, use el comando de montaje . El punto de montaje del dispositivo debe ser un directorio vacío;
Si monta un dispositivo en un directorio que tiene subdirectorios y archivos, el dispositivo montado
cubrirá el contenido del directorio, haciéndolo invisible y no disponible. Entonces, para montar el nuevo
disco duro sdb1 en el directorio /mnt , deberá ingresar lo siguiente:
Entonces ese disco duro debería estar disponible para acceder. Si desea montar la unidad
flash sdc1 en el directorio /media , deberá ingresar esto:
Los sistemas de archivos que están montados en un sistema se guardan en un archivo en /etc/
fstab (abreviatura de tabla del sistema de archivos), que el sistema lee en cada inicio.
Si tienes experiencia en Mac o Windows, probablemente hayas desmontado una unidad sin
saberlo. Antes de retirar una unidad flash de su sistema, debe “expulsarla” para evitar dañar los
archivos almacenados en el dispositivo. Expulsar es sólo otra palabra para desmontar.
De manera similar al comando mount , puede desmontar un segundo disco duro ingresando el
comando umount seguido de la entrada del archivo del dispositivo en el directorio /dev , como /dev/
sdb. Tenga en cuenta que el comando no se escribe desmontar sino desmontar (sin n).
No puede desmontar un dispositivo que está ocupado, por lo que si el sistema está leyendo o
Al escribir en el dispositivo, solo recibirá un error.
En esta sección, analizamos algunos comandos para monitorear el estado del sistema de archivos,
una habilidad necesaria para cualquier hacker o administrador del sistema. Obtendremos información
sobre los discos montados y luego buscaremos y corregiremos errores. Los dispositivos de
almacenamiento son particularmente propensos a errores, por lo que vale la pena aprender esta habilidad.
El comando df (para liberar disco) nos proporcionará información básica sobre cualquier disco duro
o dispositivo montado, como CD, DVD y unidades flash, incluido cuánto espacio se está utilizando
y cuánto hay disponible (consulte el Listado 104). ). Sin ninguna opción, df utiliza de forma
predeterminada la primera unidad de su sistema (en este caso, sda). Si desea verificar una unidad
diferente, simplemente siga el comando df con la representación de la unidad que desea verificar
(por ejemplo, df sdb).
kali >df
Sistema de Bloques 1K Usado Disponible Uso% Montado en
archivos 19620732 17096196 1504788 92% /
rootfs udev 10240 0 10240 0% /desarrollador
recorte
La primera línea de salida aquí muestra los encabezados de las categorías y luego obtenemos
la información. El espacio en disco se proporciona en bloques de 1 KB. En la segunda línea, vemos que
rootfs tiene 19.620.732 bloques de un kilobyte, de los cuales está usando
17.096.196 (o alrededor del 92 por ciento), dejando 1.504.788 disponibles. El comando df también
nos dice que este sistema de archivos está montado en la parte superior del sistema de archivos /.
En la última línea, puedes ver mi unidad flash USB. Tenga en cuenta que está designado
/dev/sdb1, está casi 100 por ciento lleno y está montado en /media/USB3.0.
En resumen, mi disco virtual en este sistema se denomina sda1, que
se descompone de la siguiente manera:
Mi unidad flash de 64 GB está designada como sdb1 y mi unidad externa como sdc1.
Comprobando errores
El comando fsck (abreviatura de verificación del sistema de archivos) verifica el sistema de archivos en
busca de errores y repara el daño, si es posible, o coloca el área defectuosa en bloques defectuosos.
tabla para marcarlo como malo. Para ejecutar el comando fsck , debe especificar el tipo de sistema
de archivos (el valor predeterminado es ext2) y el archivo del dispositivo a verificar. Es importante
tener en cuenta que debe desmontar la unidad antes de ejecutar una verificación del sistema de
archivos. Si no puede desmontar el dispositivo montado, recibirá el mensaje de error que se muestra en
el Listado 105.
kali >fsck
fsck de utillinux 2.20.1
e2fsck 1.42.5 (29 de julio de 2012)
/dev/sda1 está montado
e2fsck: No se puede continuar, abortando.
Listado 105: Intentando (y fallando) ejecutar una verificación de errores en una unidad montada
Entonces, el primer paso al realizar una verificación del sistema de archivos es desmontar el
dispositivo. En este caso, desmontaré mi unidad flash para realizar una verificación del sistema de archivos:
Puedo agregar la opción p para que fsck repare automáticamente cualquier problema
con el dispositivo, así:
Con el dispositivo desmontado, ahora puedo verificar si hay sectores defectuosos u otros
problemas con el dispositivo, de la siguiente manera:
Resumen
Comprender cómo Linux designa y administra sus dispositivos es crucial para cualquier
usuario y hacker de Linux. Los piratas informáticos necesitarán saber qué dispositivos
están conectados a un sistema y cuánto espacio hay disponible. Debido a que los
dispositivos de almacenamiento a menudo desarrollan errores, podemos verificar y
reparar esos errores con fsck. El comando dd es capaz de realizar una copia física de
un dispositivo, incluidos los archivos eliminados.
Ejercicios
Antes de pasar al Capítulo 11, pruebe las habilidades que aprendió en este capítulo completando los siguientes
ejercicios:
4. Utilice el comando dd para copiar todo el contenido de una unidad flash a otra, incluidos los archivos
eliminados.
electrónico www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
11
El sistema de registro
Como hacker, los archivos de registro pueden ser un rastro de las actividades y
la identidad de su objetivo. Pero también puede ser un rastro de sus propias actividades
en el sistema de otra persona. Por lo tanto, un pirata informático necesita saber qué
información puede recopilar, así como qué puede recopilar sobre sus propias acciones
y métodos para ocultar esa evidencia.
Por otro lado, cualquiera que proteja sistemas Linux necesita saber cómo administrar
las funciones de registro para determinar si un sistema ha sido atacado y luego descifrar
qué sucedió realmente y quién lo hizo.
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Este capítulo le muestra cómo examinar y configurar archivos de registro, así como
como cómo eliminar evidencia de su actividad e incluso desactivar el registro por
completo. Primero, veremos el demonio que realiza el registro.
Como puede ver, numerosos archivos contienen la palabra clave rsyslog, algunos
de los cuales son más útiles que otros. El que queremos examinar es el archivo de
configuración rsyslog.conf.
Como casi todas las aplicaciones en Linux, rsyslog se administra y configura mediante
un archivo de configuración de texto plano ubicado, como suele ser el caso en Linux, en el
directorio /etc . En el caso de rsyslog, el archivo de configuración se encuentra en /etc/
rsyslog.conf. Abra ese archivo con cualquier editor de texto y exploraremos lo que hay
dentro (aquí uso Leafpad):
#################
#### MÓDULOS ####
#################
###########################
#### DIRECTIVAS GLOBALES ####
###########################
Como puede ver, el archivo rsyslog.conf viene bien documentado con numerosos
comentarios que explican su uso. Gran parte de esta información no le será útil en este
momento, pero si navega hasta la línea 50, encontrará la sección Reglas . Aquí es donde
puede establecer las reglas sobre lo que su sistema Linux registrará automáticamente.
Las reglas de rsyslog determinan qué tipo de información se registra, qué programas
registran sus mensajes y dónde se almacena ese registro. Como hacker, esto le permite
descubrir qué se está registrando y dónde están escritos esos registros para poder
eliminarlos u ocultarlos. Desplácese hasta la línea 50 y debería ver algo como el Listado
112.
###############
#### NORMAS ####
###############
#
# Primero, algunos archivos de registro estándar. Registre por instalación.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none #cron.* /var/log/syslog
daemon.* /var/log/cron.log
kern.* 1pr.* /var/log/daemon.log
correo.* /var/log/kern.log
/var/log/lpr.log
usuario.* /var/log/mail.log
/var/log/usuario.log
#
# Registro para el sistema de correo. Dividirlo para que
# es fácil escribir scripts para analizar estos archivos.
#
correo.info /var/log/mail.info
correo.advertir /var/log/mail.warn
correo.err /var/log/mail.err
Cada línea es una regla de registro independiente que indica qué mensajes se registran y
dónde se registran. El formato básico de estas reglas es el siguiente:
prioridad.de.instalaciones acción
La palabra clave facility hace referencia al programa, como mail, kernel o lpr,
cuyos mensajes se están registrando. La palabra clave de prioridad determina qué
tipo de mensajes registrar para ese programa. La palabra clave de acción , en el
extremo derecho, hace referencia a la ubicación donde se enviará el registro. Veamos
cada sección más de cerca, comenzando con la palabra clave facility , que se refiere
a cualquier software que esté generando el registro, ya sea el kernel, el sistema de correo
o el usuario.
La siguiente es una lista de códigos válidos que se pueden utilizar en lugar del
Palabra clave de instalación en las reglas de nuestro archivo de configuración:
Un comodín de asterisco (*) en lugar de una palabra se refiere a todas las instalaciones.
Puede seleccionar más de una instalación enumerándolas separadas por una coma.
La prioridad le dice al sistema qué tipos de mensajes registrar. Los códigos se enumeran
desde la prioridad más baja, comenzando en la depuración, hasta la prioridad más alta, y
terminando en el pánico. Si la prioridad es *, se registran los mensajes de todas las prioridades.
Cuando especifica una prioridad, se registran los mensajes de esa prioridad y superiores. Por
ejemplo, si especifica un código de prioridad de alerta, el sistema registrará los mensajes
clasificados como alerta y de mayor prioridad, pero no registrará los mensajes marcados como
críticos ni con ninguna prioridad inferior a la alerta.
Aquí está la lista completa de códigos válidos para prioridad:
• depurar
• información
• aviso
• advertencia
• advertir
• error
• errar
• crítico
• alerta
• emerger
• pánico
correo.* /var/log/correo
Este ejemplo registrará eventos de correo de todas las prioridades (*) en /var/log/mail.
kern.crit /var/log/kernel
Este ejemplo registrará eventos del kernel de prioridad crítica (crit) o superior en /var/log/
kernel.
*.emergente *
Este último ejemplo registrará todos los eventos de prioridad de emergencia (emerg) para
todos los usuarios registrados. Con estas reglas, el pirata informático puede determinar dónde se
encuentran los archivos de registro, cambiar las prioridades o incluso desactivar reglas de registro
específicas.
Primero, puede configurar la unidad de tiempo que sus números de rotación se refieren a usted. El valor
predeterminado aquí es semanal, lo que significa que cualquier número después de la palabra clave rotar
siempre se refiere a semanas.
Más abajo, puede ver la configuración de la frecuencia con la que se rotan los registros:
La configuración predeterminada es rotar los registros cada cuatro semanas. Esta configuración
predeterminada funcionará para la mayoría de las personas, pero si desea conservar sus registros por
más tiempo con fines de investigación o por menos tiempo para borrarlos más rápido, esta es la
configuración que debe cambiar. Por ejemplo, si revisa sus archivos de registro todas las semanas y desea
ahorrar espacio de almacenamiento, puede cambiar esta configuración para rotar 1. Si tiene suficiente
espacio de almacenamiento para sus registros y desea mantener un registro semipermanente para análisis
forense más adelante, podrías cambiar esta configuración para rotar 26
para conservar sus registros durante seis meses o rotar 52 para conservarlos durante un año.
De forma predeterminada, se crea un nuevo archivo de registro vacío cuando se rotan los antiguos.
fuera w. Como indican los comentarios en el archivo de configuración, también puede optar por
comprimir sus archivos de registro rotados x.
Al final de cada período de rotación, se cambia el nombre de los archivos de registro y se empujan
hacia el final de la cadena de registros a medida que se crea un nuevo archivo de registro, que reemplaza
al archivo de registro actual. Por ejemplo, /var/log.auth se convertirá en /var/log.auth.1, luego en /var/
log.auth.2, y así sucesivamente. Si rota los registros cada cuatro semanas y mantiene cuatro conjuntos de
copias de seguridad, tendrá /var/log.auth.4, pero no /var/log.auth.5, es decir
electrónico www.wowebook.org
Machine Translated by Google
Para obtener más detalles sobre las muchas formas de personalizar y utilizar logrotate
utilidad, consulte la página man logrotate . Este es un excelente recurso para aprender sobre las
funciones que puede usar y las variables que puede cambiar para personalizar cómo se manejan sus
registros. Una vez que se familiarice con Linux, tendrá una mejor idea de la frecuencia con la que necesita
iniciar sesión y qué opciones prefiere, por lo que vale la pena volver a visitar el archivo logrotate.conf .
Permanecer sigiloso
Una vez que haya comprometido un sistema Linux, es útil desactivar el registro y eliminar cualquier evidencia
de su intrusión en los archivos de registro para reducir las posibilidades de detección. Hay muchas formas de
hacer esto y cada una conlleva sus propios riesgos y nivel de confiabilidad.
Eliminación de pruebas
Primero, querrás eliminar cualquier registro de tu actividad. Simplemente podría abrir los archivos de registro
y eliminar con precisión cualquier registro que detalla su actividad, línea por línea, utilizando las técnicas
de eliminación de archivos que aprendió en el Capítulo 2. Sin embargo, esto podría llevar mucho tiempo y
dejar espacios de tiempo en los archivos de registro, lo que parece sospechoso. Además, los archivos
eliminados generalmente pueden ser recuperados por un investigador forense capacitado.
Una solución mejor y más segura es destruir los archivos de registro. Con otros sistemas de
eliminación de archivos, un investigador experto aún puede recuperar los archivos eliminados, pero
supongamos que hay una manera de eliminar el archivo y sobrescribirlo varias veces, lo que hace que su
recuperación sea mucho más difícil. Por suerte para nosotros, Linux tiene un comando incorporado,
apropiadamente llamado shred, precisamente para este propósito.
Para comprender cómo funciona el comando shred , eche un vistazo rápido a la
pantalla de ayuda ingresando el siguiente comando:
electrónico www.wowebook.org
Machine Translated by Google
triturar <ARCHIVO>
Una vez que haya triturado un archivo, verá que el contenido es un galimatías indescifrable,
como se muestra en la Figura 111.
Deshabilitar el registro
Otra opción para cubrir sus huellas es simplemente desactivar el registro. Cuando un pirata
informático toma el control de un sistema, podría desactivar inmediatamente el registro para evitar
que el sistema realice un seguimiento de sus actividades. Esto, por supuesto, requiere privilegios
de root.
Para desactivar todos los registros, el hacker podría simplemente detener el demonio rsyslog .
Detener cualquier servicio en Linux utiliza la misma sintaxis, que se muestra aquí (verá más sobre
esto en el Capítulo 12):
Resumen
Los archivos de registro rastrean casi todo lo que sucede en su sistema Linux. Pueden ser un
recurso invaluable al intentar analizar lo que ha ocurrido, ya sea un mal funcionamiento o un
ataque. Para el hacker, los archivos de registro pueden ser evidencia de sus actividades e
identidad. Sin embargo, un hacker astuto puede eliminar y destruir estos archivos y desactivar el
registro por completo, sin dejar evidencia alguna.
Ejercicios
Antes de pasar al Capítulo 12, pruebe las habilidades que aprendió en este capítulo completando los
siguientes ejercicios:
4. Utilice el comando shred para triturar y eliminar todos sus archivos de registro de kern .
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
12
Uso y transporte de servicios
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Para iniciar el servicio apache2 (servidor web o servicio HTTP), ingresaría lo siguiente:
Ahora que comprende cómo iniciar, detener y reiniciar servicios desde la línea de
comandos, pasemos a los cuatro servicios de Linux más críticos para los piratas informáticos.
Si tiene Kali ejecutándose en su sistema, Apache ya está instalado. Muchas otras distribuciones
de Linux también lo tienen instalado de forma predeterminada. Si no tienes instalado
Apache, puedes descargarlo e instalarlo desde los repositorios ingresando lo siguiente:
El servidor web Apache suele estar asociado con la base de datos MySQL (que veremos
en la siguiente sección) y estos dos servicios suelen combinarse con un lenguaje de
programación como Perl o PHP para desarrollar aplicaciones web. Esta combinación de Linux,
Apache, MySQL y PHP o Perl forma una plataforma poderosa y robusta para el desarrollo e
implementación de aplicaciones basadas en web, conocidas colectivamente como LAMP. Estas
son las herramientas más utilizadas para desarrollar sitios web en el mundo de Linux, y también
son muy populares en el mundo de Microsoft, donde generalmente se las conoce como WAMP,
donde la W significa Windows.
El primer paso, por supuesto, es iniciar nuestro demonio Apache. En Kali, vaya a
Applications4Services4HTTPD y haga clic en Inicio de Apache. Puede lograr lo mismo desde
la línea de comando ingresando lo siguiente:
Ahora que Apache se está ejecutando, debería poder mostrar su página web
predeterminada. Ingrese http://localhost/ en su navegador web favorito para abrir la página
web, que debería verse similar a la Figura 121.
Como puede ver, Apache muestra "Funciona" como su página web predeterminada. Ahora
que sabes que tu Servidor Web Apache está funcionando, ¡personalicémoslo!
Tenga en cuenta aquí que la página web predeterminada tiene exactamente el texto que se
mostró cuando abrimos nuestro navegador en localhost, pero en formato HTML u.
Todo lo que necesitamos hacer es editar o reemplazar este archivo para que nuestro servidor web
muestre la información que queremos.
Ahora que tenemos el servidor web en funcionamiento y el archivo index.html abierto, podemos
agregar cualquier texto que queramos que proporcione el servidor web. Crearemos algunos bloques
HTML simples.
Creemos esta página. En un nuevo archivo en su editor de texto, ingrese el código que se
muestra en el Listado 122.
<html>
<cuerpo>
</cuerpo>
</html>
Una vez que haya ingresado el texto exactamente como aparece en el Listado 122,
guarde este archivo como /var/www/html/index.html y cierre su editor de texto. Su editor
de texto le indicará que el archivo ya existe. Esta bien. Simplemente sobrescriba el archivo /
var/www/html/index.html existente .
Sin embargo, antes de hacer eso, inicie OpenSSH en su sistema Kali con el
comando ahora familiar:
Configurando la Raspberry Pi
El primer paso es asegurarse de que SSH esté ejecutándose y habilitado en Raspberry Spy
Pi. SSH suele estar desactivado de forma predeterminada, por lo que para habilitarlo, vaya
al menú Preferencias e inicie la Configuración de Raspberry Pi. Luego vaya a la pestaña Interfaces
y, junto a SSH, haga clic en Habilitado (si aún no está marcado) y haga clic en Aceptar.
126 Capítulo 12
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
conecte el módulo al puerto de la cámara y luego enciéndalo nuevamente. Tenga en cuenta que
la cámara es muy frágil y nunca debe entrar en contacto con los pines de entrada/salida de uso
general (GPIO); de lo contrario, podría acortarse y morir.
Ahora, con el servicio SSH en funcionamiento, coloque la Raspberry Spy Pi en algún
lugar de su casa, escuela o cualquier otro lugar que desee espiar. Por supuesto, debe estar
conectado a la red de área local, ya sea mediante cable Ethernet o, idealmente, mediante
WiFi. (Los nuevos Raspberry Pi 3 y Raspberry Pi Zero tienen WiFi incorporado).
pi >ifconfig
Para conectarse a la Raspberry Spy Pi remota a través de SSH desde su sistema Kali,
ingrese lo siguiente, recordando usar la dirección IP de su propia Pi:
kali >sshpi@192.168.1.101
Contraseña de pi@192.168.1.101:
Los programas incluidos con el sistema Debian GNU/Linux son software libre;
Los términos de distribución exactos para cada programa se describen en la
archivos individuales en /usr/share/doc/*/copyright.
Configurando la cámara
A continuación, necesitamos configurar la cámara. Para hacerlo, inicie la herramienta de
configuración Raspberry Pi ingresando el siguiente comando:
pi >sudo raspiconfig
Esto debería iniciar un menú gráfico como el que se muestra en la Figura 123.
Desplácese hacia abajo hasta 6 Habilitar cámara y presione Enter. Ahora, desplácese hasta la
parte inferior de este menú, seleccione Finalizar y presione Intro, como se muestra en la Figura 124.
¡Ahora tu cámara Raspberry Spy Pi debería estar habilitada y lista para espiar!
Empezando a espiar
Una vez que su Raspberry Spy Pi se haya reiniciado y haya iniciado sesión a través de SSH
desde su terminal Kali, estará listo para comenzar a usarlo para espiar tomando fotografías.
pi@raspberrypi: raspistill
Aplicación de cámara raspistill v1.3.8
Ejecuta la cámara durante un tiempo específico y realiza una captura JPG al final si se solicita
uso: raspistill [opciones]
Comandos de parámetros de imagen
recorte
¡Usemos ahora Raspberry Spy Pi para tomar algunas fotografías de espionaje remoto!
El comando raspistill tiene numerosas opciones que debes explorar, pero aquí simplemente
usaremos las predeterminadas. Para tomar una fotografía y guardarla como JPEG, ingrese lo
siguiente:
Usamos la opción –v para obtener una salida detallada y la opción –o para decirle a raspistill
que estamos a punto de darle un nombre de archivo para usar; luego le damos el nombre del archivo.
Cuando hacemos un listado largo de Raspberry Spy Pi, podemos ver el archivo firstpicture.jpg,
como se muestra aquí:
pi@raspberrypi: ls l
total 2452
drwxrxrx 2 pi pi drwxrxrx 2 pi 4096 18 de marzo de 2019 Escritorio
pi drwxrxrx 2 pi pi rwrr 1 4096 18 de marzo de 2019 Documentos
pi pi drwxrxrx 2 pi pi drwxrxr 4096 18 de marzo de 2019 Descargas
x 2 pi pi cortar 2472219 18 de marzo de 2019 primera imagen.jpg
4096 18 de marzo de 2019 Música
4096 18 de marzo de 2019 Imágenes
Hemos tomado nuestra primera foto espía en nuestro control remoto Raspberry Spy Pi
usando SSH! Siéntete libre de explorar más a fondo esta arma versátil.
Iniciando MySQL
Afortunadamente, Kali ya tiene MySQL instalado (si está utilizando otra distribución, puede
descargar e instalar MySQL desde el repositorio de software o directamente desde https://
www.mysql.com/downloads/).
Para iniciar su servicio MySQL, ingrese lo siguiente en la terminal:
Escriba 'ayuda'; o '\h' para obtener ayuda. Escriba '\c' para borrar la declaración de entrada actual
mysql >
agregando una contraseña después de su primer inicio de sesión. Tenga en cuenta que los nombres
de usuario y las contraseñas para su sistema operativo y MySQL son separados y distintos. Cambiemos
la contraseña del usuario root de MySQL ahora para estar seguros.
MySQL fue desarrollado por primera vez por MySQL AB de Suecia en 1995 y luego fue
adquirido por Sun Microsystems en 2008, que a su vez fue adquirido por Oracle en
2009, por lo que MySQL ahora es propiedad de Oracle. Oracle es el editor de software
de bases de datos más grande del mundo, por lo que la comunidad de código
abierto tiene importantes inquietudes sobre el compromiso de Oracle de mantener
MySQL como código abierto. Como resultado, ahora existe una bifurcación del software de
base de datos MySQL llamada “Maria” que se compromete a mantener este software y
sus versiones posteriores de código abierto. Como administrador de Linux o hacker, debes vigilar a María.
SQL es un lenguaje de programación interpretado para interactuar con una base de datos. La base de
datos suele ser una base de datos relacional , lo que significa que los datos se almacenan en varias
tablas que interactúan y cada tabla tiene valores en una o más columnas y filas.
Existen varias implementaciones de SQL, cada una con sus propios comandos.
y sintaxis, pero aquí hay algunos comandos comunes:
unión Se utiliza para combinar los resultados de dos o más operaciones seleccionadas.
insertar Se utiliza para agregar nuevos datos.
Puedes proporcionar condiciones a cada comando para que sea más específico.
específico sobre lo que quieres hacer. Por ejemplo, la línea
devolverá los valores de los campos de usuario y contraseña para cualquier usuario cuyo valor de
usuario sea igual a "admin" en la tabla de clientes.
Veamos qué usuarios ya hay en nuestro sistema MySQL ingresando lo siguiente. (Tenga en
cuenta que los comandos en MySQL terminan con un punto y coma).
Esto muestra que los usuarios root no tienen contraseña establecida. Asignemos una
contraseña a root. Para hacerlo, primero seleccionaremos una base de datos con la que trabajar.
MySQL en su sistema vendrá con algunas bases de datos ya configuradas. Utilice las bases
de datos del programa; comando para ver todas las bases de datos disponibles:
MySQL viene con tres bases de datos por defecto, dos de las cuales (información_
esquema y esquema_rendimiento) son bases de datos administrativas que no usaremos aquí. Usaremos la
base de datos no administrativa, mysql, que se incluye para sus propios fines. Para comenzar a utilizar la base
de datos mysql , ingrese:
Este comando nos conecta a mysql. Ahora, podemos establecer la contraseña para que el
usuario root surja hackers con el siguiente comando:
mysql >actualizar contraseña establecida por el usuario = CONTRASEÑA("hackersarise") donde usuario = 'raíz';
Para acceder a una base de datos MySQL en el host local, utilizamos la siguiente sintaxis:
De forma predeterminada, este comando usa la instancia de MySQL en el host local si no se le proporciona
un nombre de host o una dirección IP. Entonces, para acceder a una base de datos remota, debemos proporcionar
el nombre de host o la dirección IP del sistema que aloja la base de datos MySQL. He aquí un ejemplo:
Esto nos conectará a la instancia de MySQL en 192.168.1.101 y nos solicitará una contraseña. Para fines
de demostración, me estoy conectando a una instancia de MySQL en mi red de área local (LAN). Si tiene un
sistema en su red con MySQL instalado, use su dirección IP aquí. Asumiré que logró omitir la contraseña e
inició sesión en el sistema como root (ya sabe que, de manera predeterminada, la base de datos MySQL no
tiene contraseña).
Esto abre la interfaz de línea de comandos de MySQL, que nos proporciona el indicador mysql >. Además
de esta interfaz de línea de comandos, MySQL tiene interfaces GUI, tanto nativas (MySQL Workbench) como de
terceros (Navicat y TOAD para MySQL). Para usted como hacker, la interfaz de línea de comandos puede ser la
mejor oportunidad para explotar la base de datos MySQL, así que nos centraremos en eso aquí. Es poco
probable que, como ingresante no autorizado a la base de datos, se le presente una GUI fácil de usar.
N ota Esta pantalla nos recuerda que todos los comandos deben terminar en punto y coma o \g (a diferencia de SQL
Server de Microsoft) y que podemos obtener ayuda ingresando ayuda; o \h.
Ahora que hemos iniciado sesión como administrador del sistema, podemos navegar unim
pedió a través de la base de datos. Si hubiésemos iniciado sesión como usuario normal, nuestra navegación
estaría limitada por los permisos proporcionados por el administrador del sistema para ese usuario.
Con acceso al sistema, queremos husmear. Nuestro siguiente paso es descubrir si hay bases de datos a las que
valga la pena acceder. Aquí está el comando para encontrar qué bases de datos están en el sistema al que se
accede:
¡Ajá! Hemos encontrado una base de datos que vale la pena explorar con números de tarjetas de crédito.
Conectémonos con él.
electrónico www.wowebook.org
Machine Translated by Google
En MySQL, como en otros sistemas gestores de bases de datos (DBMS), podemos conectarnos a la base
de datos que nos interese ingresando use nombre de base de datos;.
Por supuesto, no hace falta decir que es poco probable que un administrador de base de datos sea
tan complaciente como para nombrar una base de datos con algo tan fácilmente reconocible como
números de tarjetas de crédito, por lo que es posible que deba explorar un poco para encontrar una base de
datos de interés.
Ahora estamos conectados a la base de datos de números de tarjetas de crédito y podemos explorar un poco para
ver qué información podría contener. Los datos de una base de datos se organizan en tablas, y cada tabla puede
contener un conjunto diferente de datos relacionados.
Podemos saber qué tablas hay en esta base de datos ingresando el siguiente comando:
Aquí podemos ver que esta base de datos tiene solo una tabla, llamada números de tarjeta.
Generalmente, las bases de datos tendrán numerosas tablas, por lo que es probable que tengas que espiar un
poco más. En esta base de datos de muestra, tenemos la suerte de poder centrar nuestra atención en esta única
tabla para extraer el vellocino de oro del hacker.
Ahora que tenemos una tabla que queremos examinar, necesitamos comprender la estructura de esa
tabla. Una vez que sabemos cómo está dispuesta la tabla, podemos extraer la información relevante.
134 Capítulo 12
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
MySQL responde con la información crítica sobre la estructura de nuestra tabla de interés. Podemos
ver el nombre de cada campo, así como el tipo de datos que contiene (a menudo el tipo de texto varchar o
el tipo entero int). También podemos ver si aceptará valores NULL; la clave, si existe alguna (la clave
vincula las tablas); cualquier valor predeterminado que pueda tener un campo; y cualquier información
adicional al final, como notas.
Para ver realmente los datos en la tabla, usamos el comando SELECT. El SELECCIONAR
El comando requiere que conozca la siguiente información:
•Las columnas dentro de esa tabla que contienen los datos que desea ver
Como un atajo útil para ver los datos de todas las columnas, podemos usar un
asterisco como comodín en lugar de escribir cada nombre de columna que queremos ver. Entonces, para
ver un volcado de todos los datos de la tabla de números de tarjetas, ingresamos lo siguiente:
Como puede ver, MySQL ha mostrado toda la información de la tabla de números de tarjeta en
nuestra pantalla. ¡Hemos encontrado el vellocino de oro del hacker!
PostgreSQL, o simplemente Postgres, es otra base de datos relacional de código abierto que se utiliza
a menudo en aplicaciones muy grandes orientadas a Internet debido a su capacidad para escalar
fácilmente y manejar cargas de trabajo pesadas. Fue lanzado por primera vez en julio de 1996 y lo
mantiene un grupo importante de desarrolladores conocido como PostgreSQL Global Development
Group.
PostgreSQL también se instala de forma predeterminada en Kali, pero si está utilizando otra
distribución de Linux, probablemente estará en su repositorio y podrá instalarlo ingresando el siguiente
comando:
electrónico www.wowebook.org
Machine Translated by Google
Como ocurre con casi todos los servicios en Linux, podemos iniciar PostgreSQL ingresando al inicio
de la aplicación de servicio, así:
Tenga en cuenta que cuando Metasploit haya completado el inicio, verá un mensaje msf >.
Enseñarle cómo usar Metasploit con fines de piratería y explotación está más allá del alcance de este
libro, pero aquí configuraremos la base de datos en la que Metasploit almacenará su información.
Con Metasploit en ejecución, podemos configurar PostgreSQL con el siguiente comando para que
almacene datos de cualquier actividad de Metasploit en su sistema:
A continuación, debemos iniciar sesión en Postgres como root. Aquí, precedemos a la com.
Mande con su, el comando “cambiar de usuario”, para obtener privilegios de root:
136 Capítulo 12
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Cuando salga de Postgres con el comando de salida, la terminal volverá al mensaje msf >.
•El usuario
•La contraseña
•El anfitrión
En nuestro caso, podemos conectar msfconsole a nuestra base de datos con el siguiente
comando ing:
Como puede ver, Metasploit responde que la base de datos PostgreSQL está conectada
y lista para usar. Ahora, cuando hagamos un análisis del sistema o ejecutemos exploits con
Metasploit, los resultados se almacenarán en nuestra base de datos PostgreSQL. Además,
Metasploit ahora almacena sus módulos en nuestra base de datos Postgres, ¡lo que hace que la
búsqueda del módulo correcto sea mucho más fácil y rápida!
Resumen
Linux cuenta con numerosos servicios que se ejecutan en segundo plano hasta que el usuario
los necesita. El servidor web Apache es el más utilizado, pero un hacker también debe estar
familiarizado con MySQL, SSH y PostgreSQL para diversas tareas. En este capítulo, cubrimos
los conceptos básicos absolutos para comenzar a utilizar estos servicios. Una vez que se sienta
cómodo con su sistema Linux, le insto a que explore más a fondo cada uno de estos servicios.
Ejercicios
Antes de pasar al Capítulo 13, pruebe las habilidades que aprendió en este capítulo
completando los siguientes ejercicios:
2. Utilizando el archivo index.html, cree un sitio web sencillo que anuncie su llegada al
apasionante mundo del hacking.
4. Inicie su servicio de base de datos MySQL y cambie la contraseña del usuario root a
hackersarise. Cambie a la base de datos mysql.
138 Capítulo 12
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
13
Convertirse en seguro y
Anónimo
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Ningún método garantiza que sus actividades estén a salvo de miradas indiscretas y, con
suficiente tiempo y recursos, se puede rastrear cualquier cosa. Sin embargo, es probable que
estos métodos dificulten mucho el trabajo del rastreador.
Para comenzar, analicemos a alto nivel algunas de las formas en que se rastrean nuestras
actividades en Internet. No entraremos en todos los métodos de seguimiento ni en demasiados
detalles sobre ninguno de ellos, ya que eso estaría fuera del alcance de este libro.
De hecho, una discusión así podría ocupar por sí sola un libro entero.
Primero, su dirección IP lo identifica cuando navega por Internet. Los datos enviados
desde su máquina generalmente están etiquetados con su dirección IP, lo que facilita el
seguimiento de sus actividades. En segundo lugar, Google y otros servicios de correo electrónico
“leerán” su correo electrónico en busca de palabras clave para ofrecerle anuncios de manera más eficiente.
Aunque hay muchos métodos más sofisticados que requieren mucho más tiempo y recursos,
estos son los que intentamos evitar en este capítulo. Comencemos echando un vistazo a
cómo las direcciones IP nos delatan en Internet.
Cuando envía un paquete de datos a través de Internet, contiene las direcciones IP del
origen y el destino de los datos. De esta forma, el paquete sabe adónde va y dónde devolver la
respuesta. Cada paquete salta a través de múltiples enrutadores de Internet hasta que encuentra
su destino y luego regresa al remitente. Para la navegación general por Internet, cada salto es
un enrutador por el que pasa el paquete para llegar a su destino. Puede haber entre 20 y 30 saltos
entre el remitente y el destino, pero normalmente cualquier paquete llegará al destino en menos de
15 saltos.
A medida que el paquete atraviesa Internet, cualquiera que lo intercepte puede ver quién lo
envió, dónde ha estado y hacia dónde se dirige. Esta es una forma en que los sitios web pueden
saber quién es usted cuando llega e iniciar sesión automáticamente, y también es la forma en
que alguien puede rastrear dónde ha estado en Internet.
Para ver qué saltos puede realizar un paquete entre usted y el destino, puede usar el
comando traceroute, como se muestra a continuación. Simplemente ingrese traceroute
y la dirección IP o dominio de destino, y el comando enviará paquetes al destino y rastreará la ruta
de esos paquetes.
140 Capítulo 13
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
+ +
annie
++ +
+ Nodo Tor
Ruta cifrada
Paso libre Factura
Para habilitar el uso de Tor, simplemente instale el navegador Tor desde https://www
.torproject.org/. Una vez instalado, se verá como en la Figura 132 y podrá usarlo como
cualquier navegador de Internet antiguo. Al utilizar este navegador, navegará por Internet a
través de un conjunto separado de enrutadores y podrá visitar sitios sin que Big Brother lo
rastree. Desafortunadamente, la desventaja es que navegar a través del navegador Tor
puede ser mucho más lento; Debido a que no hay tantos enrutadores, el ancho de banda es
limitado en esta red.
Preocupaciones de seguridad
Servidores proxy
Otra estrategia para lograr el anonimato en Internet es utilizar proxies, que son sistemas
intermedios que actúan como intermediarios para el tráfico: el usuario se conecta a un
proxy y al tráfico se le proporciona la dirección IP del proxy antes de pasar (consulte la
Figura 13). 3). Cuando el tráfico regresa del destino, el proxy lo envía de regreso al
origen. De esta manera, el tráfico parece provenir del proxy y no de la dirección IP
de origen.
172.23.26.8
Servidor
proxy
IP
Tu dirección IP
65.55.125.1289 Servidor proxy
Tu dirección IP
65.55.125.1289
electrónico www.wowebook.org
Machine Translated by Google
Los argumentos que proporcione pueden incluir una dirección IP. Por ejemplo,
Si quisieras usar proxychains para escanear un sitio con nmap de forma anónima, ingresarías lo siguiente:
Esto enviaría el comando de escaneo oculto nmap –sS a la dirección IP proporcionada a través de
un proxy. Luego, la herramienta construye la cadena de servidores proxy, por lo que no tienes que
preocuparte por eso.
En esta sección, configuramos un proxy para que lo utilice el comando proxychains . Como ocurre con casi
todas las aplicaciones en Linux/Unix, la configuración de las cadenas proxy se administra mediante el archivo
de configuración, específicamente /etc/proxychains.conf. Abra el archivo de configuración en el editor de
texto de su elección con el siguiente comando (reemplazando leafpad con el editor elegido si es necesario):
recorte
Desplácese hacia abajo en este archivo hasta la línea 61, y debería ver la sección ProxyList ,
como se muestra en el Listado 132.
[Lista de proxy]
# agregar proxy aquí...
electrónico www.wowebook.org
Machine Translated by Google
# mientras tanto
# valores predeterminados establecidos en "tor"
Listado 132: La sección del archivo de configuración para agregar servidores proxy
Podemos agregar proxies ingresando las direcciones IP y los puertos de los proxies que queremos
usar en esta lista. Por ahora, usaremos algunos servidores proxy gratuitos. Puede encontrar servidores
proxy gratuitos buscando en Google "proxies gratuitos" o utilizando el sitio http://www.hidemy.
.nombre, como se muestra en la Figura 134. Sin embargo, tenga en cuenta que utilizar servidores proxy
gratuitos en actividades de piratería en la vida real no es una buena idea. Cubriré esto con más detalle
más adelante en el capítulo. El ejemplo utilizado aquí es sólo para fines educativos.
Complete los detalles en el formulario o simplemente haga clic en buscar; luego agregue uno de los
los servidores proxy resultantes a su archivo proxychains.conf usando el siguiente formato:
He aquí un ejemplo:
[Lista de proxy]
# agregar proxy aquí...
calcetines4 114.134.186.12 22020
# mientras tanto
# valores predeterminados establecidos en "tor"
electrónico www.wowebook.org
Machine Translated by Google
Esto abre con éxito https://www.hackersarise.com/ en Firefox a través del proxy elegido y
me devuelve los resultados. Para cualquiera que rastree este tráfico, parece que fue mi proxy el
que navegó a https://www.hackersarise.com/
en lugar de mi dirección IP.
Ahora que tenemos proxychains funcionando, veamos algunas otras opciones que podemos
configurar a través del archivo proxychains.conf . Como ya lo tenemos configurado, simplemente
estamos usando un único proxy. Sin embargo, podemos instalar varios proxies y usarlos todos,
podemos usar un número limitado de la lista o podemos hacer que las cadenas de proxy
cambien el orden al azar. Probemos todas estas opciones.
Primero, agreguemos algunos servidores proxy más a nuestra lista. Volver a http://www.hidemy
.nombre y busque más direcciones IP proxy. Luego agregue algunos de estos proxies más
a su archivo proxychains.conf , así:
[Lista de proxy]
# agregar proxy aquí...
calcetines4 114.134.186.12 22020
calcetines4 188.187.190.59 8888
calcetines4 181.113.121.158 335551
Encadenamiento dinámico
# cadena_dinamica
#
Encadenamiento aleatorio
Nuestro último truco de proxy es la opción de encadenamiento aleatorio , donde las cadenas
de proxy elegirán aleatoriamente un conjunto de direcciones IP de nuestra lista y las usarán
para crear nuestra cadena de proxy. Esto significa que cada vez que usamos cadenas de
proxy, el proxy se verá diferente para el objetivo, lo que dificultará el seguimiento de nuestro
tráfico desde su origen. Esta opción también se considera “dinámica” porque si uno de los
proxies está inactivo, pasará al siguiente.
Vuelva al interior del archivo /etc/proxychains.conf y comente las líneasdynamic_chain y
estricto_chain agregando un # al comienzo de cada línea; luego descomente la línea
random_chain . Sólo podemos usar una de estas tres opciones a la vez, así que
asegúrese de comentar las otras opciones antes de usar proxychains.
# cadena_dinamica
#
# cadena_estricta
#
electrónico www.wowebook.org
Machine Translated by Google
Aquí, descomenté chain_len y le di un valor de 3, lo que significa que proxychains ahora usará tres
proxies de mi lista en /etc/proxychains.conf
archivo, eligiéndolos aleatoriamente y pasando al siguiente si un proxy no funciona. Tenga en cuenta
que, aunque este método ciertamente mejora su anonimato, también aumenta la latencia de sus
actividades en línea.
Ahora que sabes cómo usar cadenas proxy, puedes hackear con relativo anonimato. Digo
“relativo” porque no existe una forma segura de permanecer en el anonimato mientras la NSA y el FSB
espían nuestras actividades en línea.
pero podemos hacer que la detección sea mucho más difícil con la ayuda de proxychains.
Preocupaciones de seguridad
Como última nota sobre la seguridad del proxy, asegúrese de elegir sus servidores proxy con
prudencia: las cadenas de proxy son tan buenas como los servidores proxy que utiliza. Si tiene la
intención de permanecer en el anonimato, no utilice un proxy gratuito, como se mencionó anteriormente.
Los piratas informáticos utilizan servidores proxy pagados en los que se puede confiar. De hecho, es
probable que los servidores proxy gratuitos vendan su dirección IP y su historial de navegación. Como
dijo una vez Bruce Schneier, el famoso criptógrafo y experto en seguridad: “Si algo es gratis, tú no
eres el cliente; tú eres el producto”. En otras palabras, es probable que cualquier producto gratuito
recopile sus datos y los venda. ¿Por qué si no ofrecerían un proxy gratis?
Aunque la dirección IP de su tráfico que sale del proxy será anónima, existen otras formas para que
las agencias de vigilancia lo identifiquen. Por ejemplo, el propietario del proxy conocerá su identidad y,
si el espionaje o las agencias de aplicación de la ley con jurisdicción lo presionan lo suficiente, puede
ofrecer su identidad para proteger su negocio. Es importante ser consciente de las limitaciones de los
proxy como fuente de anonimato.
El uso de una red privada virtual (VPN) puede ser una forma eficaz de mantener su tráfico web
relativamente anónimo y seguro. Una VPN se utiliza para conectarse a un dispositivo de Internet
intermediario, como un enrutador, que envía su tráfico a su destino final etiquetado con la dirección IP
del enrutador.
El uso de una VPN ciertamente puede mejorar su seguridad y privacidad, pero no es garantía de
anonimato. El dispositivo de Internet al que se conecta debe registrar o registrar su dirección IP para
poder enviarle los datos correctamente, de modo que cualquiera que pueda acceder a estos registros
pueda descubrir información sobre usted.
La belleza de las VPN es que son simples y fáciles de usar. Puede abrir una
cuenta con un proveedor de VPN y luego conectarse sin problemas a la VPN
cada vez que inicie sesión en su computadora. Utilizaría su navegador como de
costumbre para navegar por la web, pero cualquiera que esté mirando le parecerá
que su tráfico proviene de la dirección IP y la ubicación del dispositivo VPN de
Internet y no de la suya. Además, todo el tráfico entre usted y el dispositivo VPN
está cifrado, por lo que ni siquiera su proveedor de servicios de Internet puede ver su tráfico.
Entre otras cosas, una VPN puede ser eficaz para evadir contenidos
controlados por el gobierno y censuras de información. Por ejemplo, si su gobierno
nacional limita su acceso a sitios web con un mensaje político particular,
probablemente pueda usar una VPN ubicada fuera de su país para acceder a ese
contenido. Algunas corporaciones de medios, como Netflix, Hulu y HBO, limitan
el acceso a su contenido a direcciones IP que se originan en su propio país.
Usar una VPN basada en un país que esos servicios permitan a menudo puede
ayudarte a sortear esas limitaciones de acceso.
Algunos de los mejores y más populares servicios VPN comerciales, según
Según CNET, son los siguientes:
• IP desaparecer
•NordVPN
•VPN exprés
•Ciberfantasma
•VPN de rana dorada
•Esconde mi culo (HMA)
•Acceso privado a Internet
•PuroVPN
•TorGuard
•VPN con búfer
La mayoría de estos servicios VPN cobran entre 50 y 100 dólares al año y muchos
ofrecen una prueba gratuita de 30 días. Para obtener más información sobre cómo
configurar una VPN, elija una de la lista y visite el sitio web. Debería encontrar
instrucciones de descarga, instalación y uso que sean bastante fáciles de seguir.
La ventaja de una VPN es que todo su tráfico está encriptado cuando sale de
su computadora, lo que lo protege contra espionaje, y su dirección IP queda oculta
por la dirección IP de la VPN cuando visita un sitio. Al igual que con un servidor
proxy, el propietario de la VPN tiene su dirección IP de origen (de lo contrario,
no podrían enviarle su tráfico). Si son presionados por agencias de espionaje o
autoridades policiales, podrían revelar su identidad. Una forma de evitarlo es
utilizar sólo VPN que prometan no almacenar ni registrar esta información (y
esperar que sean veraces). De esta forma, si alguien insiste en que el proveedor
del servicio VPN entregue sus datos a sus usuarios, no hay datos.
electrónico www.wowebook.org
Machine Translated by Google
Una forma de evitar las escuchas ilegales en su correo electrónico es utilizar correo
electrónico cifrado. ProtonMail, que se muestra en la Figura 135, cifra su correo electrónico de
un extremo a otro o de un navegador a otro. Esto significa que su correo electrónico está
cifrado en los servidores de ProtonMail; ni siquiera los administradores de ProtonMail pueden leer
su correo electrónico.
ProtonMail fue fundado por un grupo de jóvenes científicos en las instalaciones del
supercolisionador CERN en Suiza. Los suizos tienen una larga historia de protección de secretos
(¿recuerdas esas cuentas bancarias suizas de las que tanto has oído hablar?), y los servidores de
ProtonMail están ubicados en la Unión Europea, que tiene leyes mucho más estrictas con respecto
al intercambio de datos personales que lo hace Estados Unidos. ProtonMail no cobra por una
cuenta básica, pero ofrece cuentas premium por una tarifa nominal. Es importante tener en cuenta
que al intercambiar correo electrónico con usuarios que no son de ProtonMail, existe la posibilidad
de que parte o la totalidad del correo electrónico no esté cifrado. Consulte la base de conocimientos
de soporte de ProtonMail para obtener todos los detalles.
Resumen
Estamos constantemente vigilados por empresas comerciales y agencias de inteligencia
nacionales. Para mantener seguros sus datos y sus viajes web, debe implementar al
menos una de las medidas de seguridad analizadas en este capítulo.
Al emplearlos en combinación, puede minimizar su huella en la web y mantener sus
datos mucho más seguros.
Ejercicios
Antes de pasar al Capítulo 14, pruebe las habilidades que aprendió en este capítulo
completando los siguientes ejercicios:
1. Ejecute traceroute a su sitio web favorito. ¿Cuántos saltos aparecen entre usted y su sitio
favorito?
2. Descargue e instale el navegador Tor. Ahora, navegue de forma anónima por la web como lo
haría con cualquier otro navegador y vea si nota alguna diferencia en la velocidad.
3. Intente usar cadenas proxy con el navegador Firefox para navegar a su favorito
sitio web.
4. Explore los servicios VPN comerciales de algunos de los proveedores enumerados en este
capítulo. Elija uno y pruebe una prueba gratuita.
electrónico www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
14
Comprensión y observación
Conexiones inalámbricas
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Redes WiFi
Empezaremos con WiFi. En esta sección, le mostraré cómo encontrar, examinar y conectarse a puntos
de acceso WiFi. Antes de hacerlo, dediquemos un poco de tiempo a repasar algunos términos y
tecnologías básicos de WiFi para ayudarlo a comprender mejor el resultado de muchas de las consultas
que haremos en este capítulo:
ESSID (identificador de conjunto de servicios extendidos) Es el mismo que el SSID, que analizamos
en el Capítulo 3, pero se puede utilizar para múltiples AP en una LAN inalámbrica.
Canales WiFi puede funcionar en cualquiera de los 14 canales (1–14). En Estados Unidos, la
conexión WiFi está limitada a los canales 1 a 11.
Energía Cuanto más cerca esté del AP WiFi, mayor será la potencia y más fácil será romper la
conexión.
Modos WiFi puede funcionar en uno de tres modos: administrado, maestro o monitor. Aprenderá
qué significan estos modos en la siguiente sección.
Alcance inalámbrico En los Estados Unidos, un AP WiFi debe transmitir legalmente su señal a un
límite superior de 0,5 vatios. A esta potencia, tiene un alcance normal de unos 100 metros (300
pies). Las antenas de alta ganancia pueden ampliar este alcance hasta 20 millas.
La frecuencia WiFi está diseñada para funcionar en 2,4 GHz y 5 GHz. Los AP WiFi modernos y
las tarjetas de red inalámbrica suelen utilizar ambos.
En el Capítulo 3, conoció el comando de red básico de Linux ifconfig, que enumera cada interfaz de red
activada en su sistema junto con algunas estadísticas básicas, incluida (lo más importante) la dirección
IP de cada interfaz. Echemos otro vistazo a los resultados al ejecutar ifconfig.
Kali >ifconfig
eth0Linkencap:EthernetHWaddr 00:0c:29:ba:82:0f
Dirección Internet:192:168.181.131 Bcast:192.168.181.255 Máscara:255.255.255.0
recorte
La interfaz WiFi aquí se muestra como wlan0 . En Kali Linux, conexión WiFi
Las caras generalmente se designan como wlanX, donde X representa el número de
esa interfaz. En otras palabras, el primer adaptador WiFi de su sistema estaría etiquetado
como wlan0, el segundo wlan1, y así sucesivamente.
Si solo desea ver sus interfaces WiFi y sus estadísticas, Linux tiene un comando
específico similar a ifconfig pero dedicado a la conexión inalámbrica.
Ese comando es iwconfig. Cuando ingresa, solo se muestran sus interfaces inalámbricas
y sus datos clave:
Kali >iwconfig
no hay extensiones inalámbricas
Aquí, vemos sólo las interfaces inalámbricas, también conocidas como tarjetas de
red, y datos clave sobre ellas, incluido el estándar inalámbrico utilizado, si el ESSID está
apagado y el modo. El modo tiene tres configuraciones: administrado, lo que significa
que está listo para unirse o se ha unido a un AP; master, lo que significa que está listo
para actuar como AP o ya lo es; y monitorear, que discutiremos un poco más adelante en
el capítulo. También podremos ver si tiene algún cliente asociado y cuál es su potencia
de transmisión, entre otras cosas. A partir de este ejemplo, puede ver que wlan0 está en
el modo requerido para conectarse a una red WiFi pero aún no está conectado a ninguna.
Volveremos a revisar este comando una vez que la interfaz inalámbrica esté conectada a
una red WiFi.
Si no está seguro de a qué AP WiFi desea conectarse, puede
vea todos los puntos de acceso inalámbrico a los que puede llegar su tarjeta de red
usando el comando iwlist . La sintaxis de iwlist es la siguiente:
Puedes realizar múltiples acciones con iwlist. Para nuestros propósitos, haremos
use la acción de escaneo para ver todos los AP WiFi en su área. (Tenga en cuenta
que con una antena estándar, su alcance será de 300 a 500 pies, pero esto se
puede ampliar con una antena económica de alta ganancia).
El resultado de este comando debe incluir todos los AP WiFi dentro del alcance
de su interfaz inalámbrica, junto con datos clave sobre cada AP, como la dirección MAC
del AP, el canal y la frecuencia en la que está operando, su calidad, su señal. nivel, si su
clave de cifrado está habilitada y su ESSID.
Necesitará la dirección MAC del AP objetivo (BSSID), la dirección MAC de un
cliente (otra tarjeta de red inalámbrica) y el canal en el que opera el AP para realizar
cualquier tipo de piratería, por lo que esta es información valiosa.
recorte
Además de mostrar los AP WiFi dentro del alcance y datos clave sobre
ellos, incluido el SSID, el modo, el canal, la velocidad de transferencia, la intensidad de
la señal y los protocolos de seguridad habilitados en el dispositivo, nmcli se puede utilizar
para conectarse a los AP. La sintaxis para conectarse a un AP es la siguiente:
Entonces, según los resultados de nuestro primer comando, sabemos que hay un
AP con un SSID de HackersArise. También sabemos que tiene seguridad WPA1 WPA2
(esto significa que el AP es capaz de usar tanto el WPA1 antiguo como el WPA2 más
nuevo), lo que significa que tendremos que proporcionar la contraseña para conectarnos
a la red. Afortunadamente como es nuestro AP, sabemos que la contraseña es 12345678,
por lo que podemos ingresar lo siguiente:
Pruebe esto en una red que conozca y luego, cuando se haya conectado exitosamente
a ese AP inalámbrico, ejecute iwconfig nuevamente para ver qué ha cambiado.
Aquí está mi resultado de conectarme a HackersArise:
Kali >iwconfig
no hay extensiones inalámbricas
Uno de los exploits más populares que pueden probar los nuevos hackers es descifrar puntos
de acceso WiFi. Como se mencionó, antes de que puedas siquiera considerar atacar un
AP WiFi, necesitas la dirección MAC del AP objetivo (BSSID), la dirección MAC de un cliente
y el canal en el que está operando el AP.
Podemos obtener toda esa información y más utilizando las herramientas de la suite
aircrack ng. He mencionado este conjunto de herramientas para piratear WiFi varias veces
antes y ahora es el momento de usarlo. Este conjunto de herramientas está incluido en todas
las versiones de Kali, por lo que no es necesario descargar ni instalar nada.
Para utilizar estas herramientas de forma eficaz, primero debe poner su tarjeta de red
inalámbrica en modo monitor para que la tarjeta pueda ver todo el tráfico que pasa por su camino.
Normalmente, una tarjeta de red captura sólo el tráfico destinado específicamente a esa
tarjeta. El modo monitor es similar al modo promiscuo en las tarjetas de red cableadas.
Para poner su tarjeta de red inalámbrica en modo monitor, use el comando airmonng
comando de la suite aircrackng. La sintaxis de este comando es simple:
recorte
recorte
Tenga en cuenta que airodumpng divide la pantalla de salida en una parte superior e inferior
parte. La parte superior tiene información sobre los AP de transmisión, incluido el BSSID, la
potencia del AP, cuántas tramas de baliza se han detectado, la tasa de rendimiento de datos,
cuántos paquetes han atravesado la tarjeta inalámbrica, el canal (114), el límite de rendimiento
teórico, el protocolo de cifrado, el cifrado utilizado para el cifrado, el tipo de autenticación y el ESSID
(comúnmente conocido como SSID). En la parte del cliente, la salida nos dice que un cliente no está
asociado, lo que significa que ha sido detectado pero no está conectado a ningún AP, y que otro
está asociado con una estación, lo que significa que está conectado al AP en esa dirección.
¡Ahora tienes toda la información que necesitas para descifrar el AP! A pesar de
está más allá del alcance de este libro, para descifrar el AP inalámbrico, necesita la dirección MAC
del cliente, la dirección MAC del AP, el canal en el que está operando el objetivo y una lista de
contraseñas.
Entonces, para descifrar la contraseña de WiFi, abrirías tres terminales. En la primera terminal,
ingresaría comandos similares a los siguientes, completando las direcciones MAC del cliente y AP y el
canal:
Este comando captura todos los paquetes que atraviesan el AP en el canal 10 usando la opción
c .
En otra terminal, puedes usar el comando aireplayng para eliminar
(desautenticar) a cualquier persona conectada al AP y obligarlos a volver a autenticarse en el AP,
como se muestra a continuación. Cuando se vuelven a autenticar, puede capturar el hash de su
contraseña que se intercambia en el protocolo de enlace de cuatro vías WPA2PSK. El hash de la
contraseña aparecerá en la esquina superior derecha del terminal airodumpng .
Finalmente, en la terminal final, puede usar una lista de contraseñas (wordlist.dic) para encontrar
la contraseña en el hash capturado (HackersArisePSK.cap), como se muestra aquí:
•Nombre
•Clase
•Lista de servicios
•Información técnica
Cuando los dos dispositivos se emparejan, intercambian una clave secreta o de enlace. Cada
almacena esta clave de enlace para que pueda identificar al otro en futuros emparejamientos.
Cada dispositivo tiene un identificador único de 48 bits (una dirección similar a MAC)
y normalmente un nombre asignado por el fabricante. Estos serán datos útiles cuando
queramos identificar y acceder a un dispositivo.
BlueZ tiene una serie de herramientas simples que podemos usar para administrar y escanear
Dispositivos Bluetooth, incluidos los siguientes:
hciconfig Esta herramienta funciona de manera muy similar a ifconfig en Linux, pero para dispositivos
Bluetooth. Como puede ver en el Listado 141, lo he usado para abrir la interfaz Bluetooth y consultar
las especificaciones del dispositivo.
hcitool Esta herramienta de consulta puede proporcionarnos el nombre del dispositivo, la ID del
dispositivo, la clase del dispositivo y la información del reloj del dispositivo, lo que permite que los
dispositivos funcionen sincrónicamente.
hcidump Esta herramienta nos permite detectar la comunicación Bluetooth, lo que significa que
podemos capturar datos enviados a través de la señal Bluetooth.
El primer paso de escaneo y reconocimiento con Bluetooth es verificar si el adaptador Bluetooth del
sistema que estamos usando está reconocido y habilitado para que podamos usarlo para buscar otros
dispositivos. Podemos hacer esto con la herramienta incorporada de BlueZ hciconfig, como se muestra
en el Listado 141.
kali >hciconfig
hci0: Tipo: BR/EDR Bus: USB
Dirección BD: 10:AE:60:58:F1:37 ACL MTU: 310:10 SCO MTU: 64:8
CONSULTA PSCAN EN EJECUCIÓN
Bytes RX: 131433 acl: 45 sco: 0 eventos: 10519 errores: 0
Bytes TX: 42881 acl: 45 sco: 0 comandos: 5081 errores: 0
Como puede ver, mi adaptador Bluetooth se reconoce con una dirección MAC.
de 10:AE:60:58:F1:37. Este adaptador ha sido denominado hci0. El siguiente paso es comprobar que la
conexión está habilitada, lo cual también podemos hacer con hciconfig
proporcionando el nombre y el comando arriba :
Si el comando se ejecuta correctamente, no deberíamos ver ningún resultado, solo un nuevo mensaje.
Ahora que sabemos que nuestro adaptador está activo, podemos usar otra herramienta en la suite BlueZ
llamada hcitool, que se usa para buscar otros dispositivos Bluetooth dentro.
rango.
Primero usemos la función de escaneo de esta herramienta para buscar dispositivos Bluetooth que
estén enviando sus balizas de descubrimiento, lo que significa que están en modo de descubrimiento, con
el comando de escaneo simple que se muestra en el Listado 142.
electrónico www.wowebook.org
Machine Translated by Google
72:6E:46:65:72:66 Android BT
22:C5:96:08:5D:32 SCHI535
Ahora recopilemos más información sobre los dispositivos detectados con la función de consulta inq:
Esto nos da las direcciones MAC de los dispositivos, la compensación del reloj y la
clase de los dispositivos. La clase indica qué tipo de dispositivo Bluetooth encontró y
puede buscar el código y ver qué tipo de dispositivo es yendo al sitio Bluetooth SIG en
https://www.bluetooth.org/enus/specification/
númerosasignados/descubrimientodeservicios/.
La herramienta hcitool es una potente interfaz de línea de comandos para la pila
Bluetooth que puede hacer muchas, muchas cosas. El Listado 143 muestra la página de
ayuda con algunos de los comandos que puede utilizar. Eche un vistazo a la página de ayuda
para ver la lista completa.
Opciones:
ayuda Mostrar ayuda
i dev dispositivo HCI
Comandos
dev Mostrar dispositivos locales
inq Consultar dispositivos remotos
escanear Buscar dispositivos remotos
nombre Obtener nombre de dispositivos remotos
recorte
Muchas herramientas de pirateo de Bluetooth que verá por ahí simplemente usan
estos comandos en un script, y usted puede crear fácilmente su propia herramienta
usando estos comandos en su propio script bash o Python; veremos los scripts en el
Capítulo 17.
Service Discovery Protocol (SDP) es un protocolo Bluetooth para buscar servicios Bluetooth
(Bluetooth es un conjunto de servicios) y, útilmente, BlueZ proporciona la herramienta sdptool
para buscar en un dispositivo los servicios que proporciona.
También es importante tener en cuenta que no es necesario que el dispositivo esté en modo de
descubrimiento para poder escanearlo. La sintaxis es la siguiente:
El Listado 144 me muestra usando sdptool para buscar servicios en uno de los dispositivos
detectados anteriormente en el Listado 142.
recorte
Aquí podemos ver que la herramienta sdptool pudo extraer información sobre todos los
servicios que este dispositivo es capaz de utilizar. En particular, vemos que este dispositivo es
compatible con el protocolo ATT, que es el protocolo de atributo de baja energía.
Esto puede proporcionarnos más pistas sobre qué es el dispositivo y posibles vías para interactuar
más con él.
Una vez que hayamos recopilado las direcciones MAC de todos los dispositivos cercanos, podemos
enviar pings a estos dispositivos, ya sea que estén en modo de descubrimiento o no, para ver si
están disponibles. Esto nos permite saber si están activos y dentro del alcance. Para enviar un
ping, utilizamos el comando l2ping con la siguiente sintaxis:
recorte
Resumen
Los dispositivos inalámbricos representan el futuro de la conectividad y la piratería. Linux ha desarrollado
comandos especializados para escanear y conectarse a puntos de acceso WiFi en el primer paso hacia el hackeo
de esos sistemas. El conjunto de herramientas de piratería inalámbrica aircrackng incluye airmonng y airodump
ng, que nos permiten escanear y recopilar información clave de dispositivos inalámbricos dentro del alcance. La
suite BlueZ incluye hciconfig, hcitool y otras herramientas capaces de escanear y recopilar información, que son
necesarias para piratear los dispositivos Bluetooth dentro del alcance. También incluye muchas otras herramientas
que vale la pena explorar.
Ejercicios
Antes de pasar al Capítulo 15, pruebe las habilidades que aprendió en este capítulo completando
los siguientes ejercicios:
1. Verifique sus dispositivos de red con ifconfig. Tenga en cuenta las extensiones inalámbricas.
3. Verifique qué puntos de acceso WiFi están dentro del alcance de iwlist.
4. Verifique qué puntos de acceso WiFi están dentro del alcance de nmcli. cual encuentras
¿Más útil e intuitivo, nmcli o iwlist?
7. Pruebe si esos dispositivos Bluetooth están dentro de una distancia accesible con
l2ping.
15
Administrar el kernel de Linux
y módulos de kernel cargables
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
El acceso al kernel permite al usuario cambiar la forma en que los sistemas operativos
Funciona, se ve y se siente. También les permite bloquear el sistema operativo,
haciéndolo inviable. A pesar de este riesgo, en algunos casos, el administrador del
sistema debe acceder con mucho cuidado al kernel por razones operativas y de seguridad.
En este capítulo, examinaremos cómo alterar la forma en que funciona el kernel y
agregar nuevos módulos al kernel. Probablemente no hace falta decir que si un hacker
puede alterar el kernel del objetivo, podrá controlar el sistema.
Además, es posible que un atacante necesite alterar el funcionamiento del kernel para
algunos ataques, como un ataque de intermediario (MITM), en el que el pirata informático
se coloca entre un cliente y un servidor y puede espiar o alterar la comunicación.
Primero, veremos más de cerca la estructura del núcleo y sus módulos.
166 Capítulo 15
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
kali >uname a
Linux Kali 4.6.0kalilamd64 #1 SMP Debian 4.6.4lkalil (21/07/2016) x86_64
El kernel responde diciéndonos que la distribución que ejecuta nuestro sistema operativo es
Linux Kali, la compilación del kernel es 4.6.4 y la arquitectura para la que está diseñado es la
arquitectura x86_64. También nos dice que tiene capacidades de multiprocesamiento simétrico
(SMP) (lo que significa que puede ejecutarse en máquinas con múltiples núcleos o procesadores)
y que fue compilado en Debian 4.6.4 el 21 de julio de 2016. Su resultado puede ser diferente,
según el kernel. se utilizó en su compilación y la CPU de su sistema. Esta información puede ser
necesaria al instalar o cargar un controlador del kernel, por lo que es útil saber cómo obtenerla.
Otra forma de obtener esta información, así como otra información útil, es usar el
comando cat en el archivo /proc/version , así:
net.ipv4.ip_dynaddr = 0
net.ipv4.ip_early_demux = 0
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_use_pmtu = 0
recorte
#kernel.nombrededominio = ejemplo.com
################################################## ############3
# Funciones encontradas anteriormente en netbase
#
# Descomente las dos líneas siguientes para habilitar la protección contra falsificación (ruta inversa
# Active la verificación de dirección de origen en todas las interfaces para
# prevenir algunos ataques de suplantación de identidad.
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1
Consulte http://lwn.net/Articles/277146/ #
Descomente la siguiente línea para habilitar el reenvío de paquetes para IPv4
tu #net.ipv4.ip_forward=1
La línea relevante está en u; simplemente elimine el comentario (#) aquí para habilitar
el reenvío de IP.
Desde una perspectiva de refuerzo del sistema operativo, podría utilizar este archivo
para deshabilitar las solicitudes de eco ICMP agregando la línea net.ipv4.icmp_echo_ignore_
all=1 para que sea más difícil, pero no imposible, para los piratas informáticos encontrar su sistema. Después
de agregar la línea, deberá ejecutar el comando sysctl p.
kali >lsmod
Módulo Tamaño Usado por
nfnetlink_queue 20480 0
nfnetlink_log 201480 0
nfnetlink 16384 2 nfnetlink_log, nfnetlink_queue
bluetooth 516096 0
rfkill 0 2 bluetooth
recorte
Como puede ver, el comando lsmod enumera todos los módulos del kernel, así como
información sobre su tamaño y qué otros módulos pueden usarlos. Así, por ejemplo, el
módulo nfnetlink (un protocolo basado en mensajes para la comunicación entre el kernel y
el espacio de usuario) tiene 16.384 bytes y lo utilizan tanto el módulo nfnetlink_log como el
módulo nf_netlink_queue .
Desde la suite insmod , podemos cargar o insertar un módulo con insmod y eliminar
un módulo con rmmod, que significa eliminar módulo. Estos comandos no son perfectos y
es posible que no tengan en cuenta las dependencias de los módulos, por lo que usarlos
pueden dejar el núcleo inestable o inutilizable. Como resultado, las distribuciones modernas
de Linux ahora han agregado el comando modprobe ,
que carga automáticamente las dependencias y hace que cargar y eliminar módulos del
kernel sea menos riesgoso. Cubriremos modprobe en un momento. Primero, veamos cómo
obtener más información sobre nuestros módulos.
Como puede ver, el comando modinfo revela información importante sobre este
módulo del kernel que es necesaria para usar Bluetooth en su sistema.
Tenga en cuenta que, entre muchas otras cosas, enumera las dependencias del módulo: rfkill
y crc16. Las dependencias son módulos que deben instalarse para el bluetooth.
módulo funcione correctamente.
Normalmente, esta es información útil para solucionar problemas por los cuales un
dispositivo de hardware en particular no funciona. Además de anotar cosas como las
dependencias, puede obtener información sobre la versión del módulo y la versión del kernel
para la que se desarrolló el módulo y luego asegurarse de que coincidan con la versión
que está ejecutando.
Para eliminar un módulo, use el modificador r (eliminar) con modprobe seguido del
nombre del módulo:
Si hay algún mensaje del kernel con la palabra "video", se mostrará aquí. Si no aparece
nada, no hay mensajes que contengan esa palabra clave.
Luego, para eliminar este mismo módulo, puede ingresar el mismo comando
pero con el modificador r (eliminar):
Recuerde, los módulos cargables del kernel son una comodidad para un usuario/
administrador de Linux, pero también son una importante debilidad de seguridad con la que
los hackers profesionales deberían estar familiarizados. Como dije antes, los LKM pueden ser el
vehículo perfecto para introducir su rootkit en el kernel y causar estragos.
Resumen
El kernel es crucial para el funcionamiento general del sistema operativo y, como tal, es un
área protegida. Cualquier cosa que se agregue inadvertidamente al kernel puede alterar el
sistema operativo e incluso tomar el control del mismo.
Los LKM permiten al administrador del sistema agregar módulos directamente al
kernel sin tener que reconstruir todo el kernel cada vez que quieran agregar un módulo.
Si un pirata informático puede convencer al administrador del sistema para que agregue un LKM malicioso, el
El pirata informático puede tomar el control total del sistema, a menudo sin que el administrador del sistema se
dé cuenta.
Ejercicios
Antes de pasar al Capítulo 16, pruebe las habilidades que aprendió en este capítulo
completando los siguientes ejercicios:
5. Seleccione un módulo del kernel y obtenga más información sobre él usando modinfo.
electrónico www.wowebook.org
Machine Translated by Google
dieciséis
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Al iniciar la base de datos PostgreSQL cada vez antes de iniciar Metasploit, puede hacer que
PostgreSQL, o cualquier servicio o script, se inicie automáticamente cuando se inicia el
sistema.
En este capítulo, aprenderá más sobre cómo usar el demonio cron y crontab para
configurar scripts para que se ejecuten automáticamente, incluso cuando el sistema está
desatendido. También aprenderá cómo configurar secuencias de comandos de inicio que se
ejecutan automáticamente cada vez que se inicia el sistema, lo que le proporcionará los
servicios necesarios que necesitará ejecutar durante su ajetreado día de piratería.
1 Minuto 0–59
2 Hora 023
3 Día del mes 1–31
4 Mes 1–12
5 Día de la semana 0–7
El archivo crontab etiqueta las columnas de forma útil. Tenga en cuenta que la primera
El campo proporciona los minutos (30), el segundo campo proporciona la hora (2), el
quinto campo proporciona los días (15, o de lunes a viernes), el sexto campo define el
usuario (raíz) y el séptimo campo es el camino al guión. Los campos tercero y cuarto
contienen asteriscos (*) porque queremos que este script se ejecute todos los días, de
lunes a viernes, independientemente del día del mes o del mes.
En el Listado 161, el quinto campo define un rango para el día de la semana mediante
usando un guión () entre los números. Si desea ejecutar un script en varios días de la
semana no contiguos, puede separar esos días con comas (,). Así, martes y jueves serían
2,4.
Para editar crontab, puede ejecutar el comando crontab seguido de e
(editar) opción:
kali >crontab e
Seleccione un editor. Para cambiar más tarde, ejecute 'selecteditor'.
1. /bin/nano <más fácil
2. /usr/bin/mcedit
3. /usr/bin/vim.basic
4. /usr/bin/vim.gtk
5. /usr/bin/vim.tiny
Elija 15 [1]:
La primera vez que ejecute este comando, le preguntará qué editor desea utilizar. El
valor predeterminado es /bin/nano, la opción 1. Si elige esta opción, se abrirá directamente
en crontab.
Otra opción, y a menudo mejor para el recién llegado a Linux, es
Abre crontab directamente en tu editor de texto favorito, lo cual puedes hacer así:
He usado este comando para abrir crontab en Leafpad. Puede ver un recorte del
archivo en el Listado 162.
SHELL=/bin/sh
RUTA=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Ahora, para configurar una nueva tarea programada regularmente, simplemente necesita ingresar un
nueva línea y guarde el archivo.
Veamos primero esta utilidad desde la perspectiva del administrador del sistema. Como administrador
del sistema, a menudo querrá ejecutar copias de seguridad de todos sus archivos fuera de horario,
mientras el sistema no se está utilizando y los recursos están disponibles. (Las copias de seguridad
del sistema tienden a requerir recursos del sistema que tienen poca demanda durante el horario
comercial). El momento ideal podría ser en medio de la noche del fin de semana. En lugar de tener
que iniciar sesión a las 2 a. m . del sábado por la noche o el domingo por la mañana (estoy seguro de
que tiene otras prioridades a esa hora), puede programar la copia de seguridad para que se inicie
automáticamente a esa hora, aunque no esté frente a su computadora. .
Tenga en cuenta que el campo de hora utiliza un reloj de 24 horas en lugar de am y pm,
entonces la 1 pm son, por ejemplo, las 13:00. Además, tenga en cuenta que los días de la semana
(DOW) comienzan con el domingo (0) y terminan con el sábado (6).
Para crear un trabajo, simplemente necesita editar el archivo crontab agregando una línea en el
formato prescrito. Entonces, supongamos que desea crear una tarea de respaldo regular utilizando una
cuenta de usuario llamada "copia de seguridad". Escribiría un script para realizar una copia de seguridad
del sistema y lo guardaría como systembackup.sh en el directorio /bin , luego programaría esta copia
de seguridad para que se ejecute todos los sábados por la noche/domingo por la mañana a las 2 a.m.
agregando la siguiente línea a crontab:
Tenga en cuenta que el comodín * se utiliza para indicar "cualquiera" y usarlo en lugar de un
dígito para el día del mes, mes o día de la semana se lee como "todos" los días o meses. Si lees al otro
lado de esta línea, dice
5. El domingo (0),
El demonio cron ejecutará ese script todos los domingos por la mañana a las 2 am, todos los meses.
Si solo desea que la copia de seguridad se ejecute los días 15 y 30 de cada mes,
independientemente de en qué días de la semana caigan esas fechas, puede revisar la entrada en
crontab para que aparezca de la siguiente manera :
Tenga en cuenta que el campo del día del mes (DOM) ahora tiene 15,30. Esto le indica al sistema
que ejecute el script solo los días 15 y 30 de cada mes, es decir, aproximadamente cada dos semanas.
Cuando desee especificar varios días, horas o meses, deberá enumerarlos separados por una coma, como
hicimos aquí.
A continuación, supongamos que la empresa le exige que esté especialmente atento a sus copias
de seguridad. No puede permitirse el lujo de perder ni siquiera un día de datos en caso de un corte de
energía o una falla del sistema. Luego deberá hacer una copia de seguridad de los datos cada noche
de la semana agregando la siguiente línea:
**
00 23 15 copia de seguridad /root/systembackup.sh
Este trabajo se ejecutaría a las 11 p.m. (hora 23), todos los días del mes, todos los meses, pero
solo de lunes a viernes (días 1 a 5). Tenga en cuenta especialmente que designamos los días de lunes a
viernes proporcionando un intervalo de días (1 a 5) separados por un guión (). Esto también podría haberse
designado como 1,2,3,4,5; de cualquier manera funciona perfectamente bien.
Ahora que comprende los conceptos básicos de la programación de un trabajo con el crontab
comando, programemos el script MySQLscanner.sh , que busca puertos MySQL abiertos, que creó en el
Capítulo 8. Este escáner busca sistemas que ejecutan MySQL buscando el puerto abierto 3306.
***
00 9 usuario /usr/share/MySQLsscanner.sh
Hemos configurado el trabajo para que se ejecute a las 00 minutos, a la novena hora, todos los días de
el mes (*), todos los meses (*), todos los días de la semana (*), y ejecutarlo como usuario habitual.
Simplemente necesitamos guardar este archivo crontab para programar el trabajo.
Ahora, supongamos que quiere ser especialmente cuidadoso y ejecutar este escáner sólo los fines
de semana y a las 2 am , cuando es menos probable que alguien esté observando el tráfico de la red.
También querrás que funcione solo en verano, de junio a agosto. Su trabajo ahora se vería así:
electrónico www.wowebook.org
Machine Translated by Google
SHELL=/bin/sh
RUTA=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Ahora, MySQLscanner.sh solo se ejecutará los fines de semana de junio, julio y agosto a
las 2 am.
Atajos de crontab
El archivo crontab tiene algunos atajos integrados que puede utilizar en lugar de especificar la
hora, el día y el mes cada vez. Estos incluyen lo siguiente:
• @anual
• @anualmente
• @mensual
• @semanal
• @diario
• @medianoche
• @mediodía
• @reiniciar
Entonces, si desea que el escáner MySQL se ejecute todas las noches a medianoche,
puede agregar la siguiente línea al archivo crontab :
178 Capítulo 16
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
como init o init.d. Este demonio luego comienza a ejecutar una serie de scripts que se encuentran
en /etc/init.d/rc. Estos scripts incluyen comandos para iniciar muchos de los servicios necesarios
para ejecutar su sistema Linux como espera.
Linux tiene múltiples niveles de ejecución que indican qué servicios deben iniciarse durante el
arranque. Por ejemplo, el nivel de ejecución 1 es el modo de usuario único y los servicios como
las redes no se inician en el nivel de ejecución 1. Los scripts rc están configurados para
ejecutarse según el nivel de ejecución seleccionado:
0 Detener el sistema
6 Reinicie el sistema
Puede agregar servicios para que el script rc.d se ejecute al inicio usando updaterc.d
dominio. Este comando le permite agregar o eliminar servicios del script rc.d. La sintaxis de update
rc.d es sencilla; simplemente enumera el comando seguido del nombre del script y luego la acción
a realizar, así:
Este resultado nos dice que el único proceso que ps encontró ejecutándose para PostgreSQL
fue el mismo comando que ejecutamos buscándolo, por lo que actualmente no hay ninguna base
de datos PostgreSQL ejecutándose en este sistema.
Ahora, actualicemos nuestro rc.d para que PostgreSQL se ejecute automáticamente en
el arranque:
Esto agrega la línea al archivo rc.d. Debe reiniciar el sistema para que se realice el
cambio. Una vez que hayas hecho eso, usemos nuevamente el comando ps con grep
para buscar un proceso PostgreSQL:
Como puede ver, PostgreSQL se ejecuta sin que usted ingrese ningún
comandos manualmente. ¡Se inicia automáticamente cuando su sistema arranca,
listo y esperando ser utilizado con su Metasploit!
Una vez que haya completado su instalación, puede iniciar rcconf ingresando lo
siguiente:
Esto abrirá una GUI simple como la de la Figura 161. Luego puede desplazarse
por los servicios disponibles, seleccionar los que desea iniciar al iniciar y hacer clic en
Aceptar.
En esta figura, puede ver el servicio PostgreSQL listado en segundo lugar desde
último. Presione la barra espaciadora para seleccionar este servicio, presione el tabulador
para resaltar <Ok> y luego presione Intro. La próxima vez que inicie Kali, PostgreSQL se
iniciará automáticamente.
Resumen
Tanto los administradores de sistemas como los piratas informáticos a menudo necesitan
programar servicios, scripts y utilidades para que se ejecuten a intervalos regulares. Linux le
permite programar casi cualquier script o utilidad para que se ejecute de forma regular utilizando
el demonio cron , que ejecuta estos trabajos desde la tabla cron . Además, puede hacer que los
servicios se inicien automáticamente durante el arranque utilizando el comando updaterc.d o la
herramienta basada en GUI rcconf para actualizar los scripts rc.d.
Ejercicios
Antes de pasar al Capítulo 17, pruebe las habilidades que aprendió en este capítulo completando
los siguientes ejercicios:
1. Programe su script MySQLscanner.sh para que se ejecute todos los miércoles a las 3 p. m.
2. Programe su script MySQLscanner.sh para que se ejecute cada décimo día del mes en abril, junio y
agosto.
3. Programe su script MySQLscanner.sh para que se ejecute todos los martes a jueves a las
10 am.
5. Actualice su script rc.d para ejecutar PostgreSQL cada vez que arranque su sistema.
6. Descargue e instale rcconf y agregue las bases de datos PostgreSQL y MySQL para comenzar
durante el arranque.
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
17
Conceptos básicos de Python Scripting
para hackers
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Cuando instala Python, también instala su conjunto de bibliotecas y módulos estándar que
brindan una amplia gama de capacidades, incluidos tipos de datos integrados, manejo de
excepciones, módulos numéricos y matemáticos, manejo de archivos, servicios criptográficos,
manejo de datos de Internet e interacción. con protocolos de Internet (IP).
Usando pepita
con Python 3 aquí, necesitará pip para Python 3 para descargar e instalar paquetes.
Puede descargar e instalar pip desde el repositorio de Kali ingresando lo siguiente:
Puede ver que esto le brinda mucha información sobre el paquete, incluido el
directorio que lo contiene.
Como alternativa al uso de pip, puede descargar un paquete directamente desde
el sitio (asegúrese de descargarlo en el directorio adecuado), descomprimirlo (consulte
el Capítulo 9 sobre cómo descomprimir el software) y luego ejecutar lo siguiente:
Esto instalará todos los paquetes descomprimidos que aún no se hayan instalado.
recorte
Aquí puede ver que usamos el comando wget y la URL completa del paquete. Una
vez descargado el paquete, deberá descomprimirlo con tar, como aprendió en el
Capítulo 9:
ejecutando build_py
creando construcción
recorte
ejecutando install_egg_info
escribiendo /usr/local/lib/python2.7/distpackages/python_nmap0.3.4.egg.info
También se pueden obtener muchos otros módulos de esta manera. Una vez
que haya instalado este módulo nmap, puede usarlo en sus scripts de Python
importando el módulo. Más sobre esto más adelante. Ahora comencemos con algunas
secuencias de comandos.
Ahora que sabes cómo instalar módulos en Python, quiero cubrir algunos de los conceptos
y la terminología básicos de Python, y luego la sintaxis básica.
Después de eso, escribirás algunos scripts que serán útiles para los hackers de todo
el mundo y que espero demuestren el poder de Python.
Al igual que con bash o cualquier otro lenguaje de scripting, podemos crear scripts de
Python usando cualquier editor de texto. Para este capítulo, para simplificar las cosas, le
aconsejo que utilice un editor de texto simple como Leafpad, pero es útil saber que hay varios
entornos de desarrollo integrados, o IDE, disponibles para usar con Python. Un IDE es como
un editor de texto con otras capacidades integradas, como codificación de colores, depuración y
compilación. Kali tiene el IDE PyCrust integrado, pero hay muchos más IDE disponibles para
descargar, de los cuales el mejor es posiblemente PyCharm de JetBrain. Este es un IDE
excelente con muchas mejoras que hacen que aprender Python sea más fácil y rápido. Existe
una versión profesional para comprar y una edición comunitaria que es gratuita. Puede
encontrarlos en https://www.jetbrains.com/pycharm/.
Una vez que hayas completado este capítulo, si quieres seguir aprendiendo Python,
PyCharm es una excelente herramienta que te ayudará en tu desarrollo. Por ahora, usaremos un
editor de texto básico como Leafpad para simplificar las cosas.
Tenga en cuenta que aprender cualquier lenguaje de programación requiere tiempo y
mucho trabajo. Sea paciente consigo mismo: intente dominar cada uno de los pequeños
guiones que le proporciono antes de continuar.
Formatear en Python
variables
Ahora, pasemos a algunos conceptos más prácticos en Python. Una variable es uno de los tipos
de datos más básicos en programación, y la encontró anteriormente en el Capítulo 8 con
scripts bash. En términos simples, una variable es un nombre asociado con un valor particular
de modo que siempre que use ese nombre en su programa, invocará el valor asociado.
¡GUAU! Libro Conceptos básicos de secuencias de comandos Python para piratas informáticos 187
electrónico www.wowebook.org
Machine Translated by Google
#! /usr/bin/python3
nombre="OcuparLaWeb"
" "
imprimir ("Saludos a + nombre + de HackersArise. ¡El mejor lugar para aprender a hackear!")
La primera línea simplemente le dice a su sistema que desea que use Python.
intérprete para ejecutar este programa, en lugar de cualquier otro lenguaje. La segunda
línea define una variable llamada nombre y le asigna un valor (en este caso,
"OccupyTheWeb"). Debe cambiar este valor a su propio nombre. El valor de esta variable
está en el formato de datos de caracteres de cadena , lo que significa que el contenido
está entre comillas y se trata como texto. También puedes poner números en cadenas y
serán tratados como texto, en el sentido de que no podrás usarlos en cálculos numéricos.
Tal como lo hizo en el Capítulo 8 con los scripts bash, para ejecutar su script,
preceda el nombre del script con un punto y una barra diagonal. Su directorio actual
no está en la variable $PATH por razones de seguridad, por lo que debemos anteponer
el nombre del script con ./ para indicarle al sistema que busque el nombre del archivo
en el directorio actual y lo ejecute.
Para ejecutar este script en particular, ingrese lo siguiente:
kali >./hackersarise_greetings.py
Saludos a OccupyTheWeb de parte de HackersArise. ¡El mejor lugar para aprender a hackear!
En Python, cada tipo de variable se trata como una clase. Una clase es una
especie de plantilla para crear objetos. Consulte ""Programación orientada a objetos
(OOP)" en la página 192 para obtener más información. En el siguiente script, intenté
demostrar algunos de los tipos de variables. Las variables pueden contener más que
solo cadenas. El Listado 172 muestra algunas variables que contienen diferentes tipos de datos.
#! /usr/bin/python3
HackersAriseIntegerVariable = 12
HackersAriseFloatingPointVariable = 3.1415
ListaHackersArise = [1,2,3,4,5,6]
imprimir (HackersAriseStringVariable)
imprimir (HackersAriseIntegerVariable)
imprimir (HackersAriseFloatingPointVariable)
Esto crea cinco variables que contienen diferentes tipos de datos: una cadena,
tratada como texto; un número entero, que es un tipo de número sin decimales que se
puede utilizar en operaciones numéricas; un flotante, que es un tipo de número con
decimales que también se puede utilizar en operaciones numéricas; una lista, que es una
serie de valores almacenados juntos; y un diccionario, que es un conjunto desordenado de
datos donde cada valor está emparejado con una clave, lo que significa que cada valor
en el diccionario tiene una clave de identificación única. Esto es útil cuando desea hacer
referencia o cambiar un valor haciendo referencia al nombre de una clave. Por ejemplo,
digamos que tiene un diccionario llamado color_fruta configurado de la siguiente manera:
imprimir (color_fruta['uva'])
También puede cambiar los valores de claves particulares; por ejemplo, aquí
cambiamos el color de la manzana:
color_fruta['manzana'] : 'verde'
Analizaremos listas y diccionarios con más detalle más adelante en este capítulo.
Crea este script en cualquier editor de texto, guárdalo como secondpythonscript.py
y luego date permiso para ejecutarlo, así:
kali >./segundopythonscript.py
HackersArise es el mejor lugar para aprender a piratear
12
3.1415
N ota En Python, no es necesario declarar una variable antes de asignarle un valor, como
en otros lenguajes de programación.
Comentarios
Como cualquier otro lenguaje de programación y scripting, Python tiene la capacidad de agregar
comentarios. Los comentarios son simplemente partes de su código (palabras, oraciones e
incluso párrafos) que explican lo que el código debe hacer.
Python reconocerá los comentarios en su código y los ignorará. Aunque los comentarios no
son necesarios, son increíblemente útiles cuando regresa a su código dos años después y no
recuerda qué debe hacer.
Los programadores suelen utilizar comentarios para explicar qué hace un determinado bloque
de código o para explicar la lógica detrás de la elección de un método de codificación particular.
El intérprete ignora los comentarios. Esto significa que cualquier línea
designados como comentarios son omitidos por el intérprete, que simplemente continúa
hasta que encuentra una línea de código legítima. Python usa el #
símbolo para designar el inicio de un comentario de una sola línea. Si desea escribir
comentarios de varias líneas, puede utilizar tres comillas dobles (""") al principio y al final de la
sección de comentarios.
Como puede ver en el siguiente script, agregué un breve mensaje de varias líneas
comente nuestro sencillo script hackersarise_greetings.py .
#! /usr/bin/python3
"""
Este es mi primer script de Python con comentarios. Los comentarios se utilizan para ayudarnos a explicar el
código a nosotros mismos y a otros programadores. En este caso, este sencillo script crea un saludo para el
usuario.
"""
nombre = "OcuparLaWeb"
print ("Saludos a "+nombre+" de HackersArise. ¡El mejor lugar para aprender a hackear!")
Cuando volvemos a ejecutar el script, nada cambia respecto a la última vez que se
ejecutó, como puedes ver aquí:
kali >./hackersarise_greetings.py
Saludos a OccupyTheWeb de parte de HackersArise. ¡El mejor lugar para aprender a hackear!
Funciona exactamente igual que en el Listado 171, pero ahora tenemos algunas
información sobre nuestro script cuando volvamos al código más adelante.
Funciones
Las funciones en Python son fragmentos de código que realizan una acción particular. La
instrucción print() que usó anteriormente, por ejemplo, es una función que muestra cualquier
valor que le pase. Python tiene una serie de funciones integradas que puedes importar y
usar inmediatamente. La mayoría de ellos están disponibles en su instalación predeterminada
de Python en Kali Linux, aunque muchos más están disponibles.
También puede crear sus propias funciones para realizar tareas personalizadas. Dado
que ya hay tantas funciones integradas en el lenguaje, siempre vale la pena comprobar si una
función ya existe antes de realizar el esfuerzo de crearla usted mismo. Hay muchas maneras
de hacer esta verificación. Una es consultar la documentación oficial de Python disponible
en https://docs.python.org. Elija la versión con la que está trabajando y luego seleccione
Referencia de biblioteca.
Liza
Muchos lenguajes de programación utilizan matrices como una forma de almacenar múltiples
objetos separados. Una matriz es una lista de valores que se pueden recuperar, eliminar,
reemplazar o trabajar de varias maneras haciendo referencia a un valor particular en la
matriz por su posición en la lista, conocida como su índice. Es importante tener en cuenta
que Python, como muchos otros entornos de programación, comienza a contar índices en 0,
por lo que el primer elemento de una lista es el índice 0, el segundo es el índice 1, el tercero
es el índice 3, y así sucesivamente. Entonces, por ejemplo, si quisiéramos acceder al tercer
valor de la matriz, podríamos hacerlo con la matriz [2]. En Python, existen algunas
implementaciones de matrices, pero probablemente la implementación más común se conoce
como listas.
Las listas en Python son iterables, lo que significa que la lista puede proporcionar
elementos sucesivos cuando la recorre por completo (consulte “"Bucles" en la página 208).
Esto es útil porque muy a menudo cuando usamos listas, las buscamos para encontrar
un valor determinado, imprimir valores uno por uno o tomar valores de una lista y colocarlos
en otra lista.
Entonces, imaginemos que necesitamos mostrar el cuarto elemento de nuestra
lista HackersAriseList del Listado 172. Podemos acceder a ese elemento e imprimirlo
llamando al nombre de la lista, HackersAriseList, seguido del índice del elemento al que
queremos acceder entre corchetes.
191
¡GUAU! Libro
Conceptos básicos de secuencias de comandos Python para piratas informáticos
electrónico www.wowebook.org
Machine Translated by Google
Para probar esto, agregue la siguiente línea al final de su segundo script de Python
Script .py para imprimir el elemento en el índice 3 en HackersAriseList:
recorte
imprimir (HackersAriseStringVariable)
imprimir (HackersAriseIntegerVariable)
imprimir (HackersAriseFloatingPointVariable)
imprimir (HackersAriseList[3])
Cuando ejecutamos este script nuevamente, podemos ver que la nueva declaración de impresión
imprime 4 junto con la otra salida:
kali >./segundopythonscript.py
HackersArise es el mejor lugar para aprender a piratear
12
3.1415
4
Módulos
Un módulo es simplemente una sección de código guardada en un archivo separado para que
puedas usarlo tantas veces como necesites en tu programa sin tener que escribirlo todo nuevamente.
Si desea utilizar un módulo o cualquier código de un módulo, debe importarlo . Como se mencionó
anteriormente, el uso de módulos estándar y de terceros es una de las características clave que hace
que Python sea tan poderoso para el hacker. Si quisiéramos utilizar el módulo nmap que instalamos
anteriormente, agregaríamos la siguiente línea a nuestro script:
importar mapa nm
Más adelante en este capítulo, usaremos dos módulos muy útiles: socket y ftplib.
Objeto
Propiedad Método
Atributo o estado Función o procedimiento
La idea detrás de los lenguajes de programación basados en POO es crear objetos que actúen
como cosas del mundo real. Por ejemplo, un automóvil es un objeto que tiene propiedades, como sus
ruedas, color, tamaño y tipo de motor; también tiene métodos, que son las acciones que realiza el auto,
como acelerar y bloquear las puertas. Desde la perspectiva del lenguaje humano natural, un objeto es un
sustantivo, una propiedad es un adjetivo y un método es generalmente un verbo.
Los objetos son miembros de una clase, que es básicamente una plantilla para crear objetos con
variables, propiedades y métodos iniciales compartidos. Por ejemplo, digamos que tenemos una clase
llamada autos; nuestro coche (un BMW) pertenecería a la clase de coches. Esta clase también incluiría
otros objetos/automóviles, como Mercedes y Audi, como se muestra en la Figura 173.
Clase Objetos
mercedes
Auto
BMW
Audi
Las clases también pueden tener subclases. Nuestra clase de automóviles tiene una subclase BMW, y
un objeto de esa subclase podría ser el modelo 320i.
Cada objeto tendría propiedades (marca, modelo, año y color) y métodos (arranque, conducción y
estacionamiento), como se muestra en la Figura 174.
Auto
Propiedades Métodos
BMW
hacer comenzar
modelo conducir
año parque
color
320i
electrónico www.wowebook.org
Machine Translated by Google
En los lenguajes POO, los objetos heredan las características de su clase, por lo que el
El BMW 320i heredaría los métodos de arranque, conducción y aparcamiento del coche de su clase.
Estos conceptos de programación orientada a objetos son cruciales para comprender cómo Python y otros
Los lenguajes OOP funcionan, como verá en los scripts de las siguientes secciones.
Crearemos una conexión de red en Python usando el módulo socket . Ya mencioné que Python viene con
una biblioteca de módulos para una multitud de tareas. En este caso, necesitaremos el módulo de socket para
crear una conexión TCP. Veámoslo en acción.
#! /usr/bin/python3
u importar socket
vs = socket.socket()
w s.conectar(("192.168.1.101", 22))
x respuesta = s.recv(1024)
y imprimir (respuesta)
s.cerrar
Primero, importamos el módulo de socket u para que podamos usar sus funciones y herramientas.
Aquí, usaremos las herramientas de red del módulo de socket para encargarnos de interconectar una conexión
a través de la red por nosotros. Un socket proporciona una forma para que dos nodos de computadora se
comuniquen entre sí.
Por lo general, uno es un servidor y el otro es un cliente.
Luego creamos una nueva variable, s, y la asociamos con la clase de socket .
del módulo de socket v. De esta manera, no tenemos que hacer referencia a la sintaxis completa de
socket.socket() cada vez que queramos usar la clase de socket ; simplemente podemos usar el nombre de
la variable s .
Luego usamos el método connect() del módulo de socket w para realizar una conexión de red a una IP
y un puerto en particular. Recuerde que los métodos
electrónico www.wowebook.org
Machine Translated by Google
son funciones que están disponibles para un objeto en particular. La sintaxis es objeto.
.método (por ejemplo, socket.connect). En este caso, me estoy conectando a la
dirección IP 192.168.1.101, que es la dirección IP de una máquina en mi red, y al puerto
22, que es el puerto SSH predeterminado. Puedes probar esto en otra instancia de
Linux o Kali. La mayoría tiene el puerto 22 abierto de forma predeterminada.
Una vez que establezca la conexión, hay varias cosas que puede hacer. Aquí,
utilizamos el método de recepción recv para leer 1024 bytes de datos del socket x y
almacenarlos en una variable denominada respuesta; Estos 1024 bytes contendrán la
información del banner. Luego imprimimos el contenido de esa variable en la pantalla
con la función print() y para ver qué datos se han pasado por ese socket, ¡permitiéndonos
espiarlo! En la línea final, cerramos la conexión.
kali >./HackersAriseSSHBannerGrab.py
SSH2.0OpenSSH_7.3p1 Debian1
#! /usr/bin/python3
conector de importación
TCP_IP = "192.168.181.190"
TCP_PORT = 6996
TAMAÑO_BUFFER = 100
vs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
w s.bind((TCP_IP, TCP_PORT))
x s.escuchar (1)
mientras 1:
datos=conn.recv(BUFFER_SIZE)
si no son datos: romper
imprimir ("Datos recibidos: ", datos)
conexión.enviar(datos) #echo
con.cerrar
Kali >./tcp_server.py
Dirección de conexión: ('192.168.181.190', 45368)
Datos recibidos: Obtener /HTTP/1.1
Anfitrión: 192.168.181.190:6996
Usuario Agente:Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gec
recorte
Esta es información crítica que un hacker debe recopilar antes de decidirse por una
explotar. Los exploits (o hacks) son muy específicos del sistema operativo, la aplicación e
incluso el idioma utilizado, por lo que el hacker necesita conocer la mayor cantidad de
información posible sobre el objetivo antes de proceder. Este acto de
Diccionarios
Los diccionarios contienen información como pares desordenados, donde cada par contiene una
clave y un valor asociado. Podemos usar un diccionario para almacenar una lista de elementos y
darle a cada elemento una etiqueta para que podamos usarlo y referirnos a ese elemento individualmente.
Podríamos usar un diccionario para almacenar, por ejemplo, ID de usuario y sus nombres
asociados, o para almacenar vulnerabilidades conocidas asociadas con un host específico.
Los diccionarios en Python actúan como matrices asociativas en otros idiomas.
Al igual que las listas, los diccionarios son iterables, lo que significa que usamos una estructura
de control como una declaración for para recorrer todo el diccionario, asignando cada elemento del
diccionario a una variable hasta llegar al final del diccionario.
Entre otras cosas, puede utilizar esta estructura para crear un descifrador de contraseñas
que repita cada contraseña almacenada en un diccionario hasta que funcione o hasta que el
descifrador llegue al final del diccionario.
La sintaxis para crear un diccionario es la siguiente:
Tenga en cuenta que para los diccionarios se utilizan llaves y elementos separados.
con una coma. Puede incluir tantos pares clavevalor como desee.
Declaraciones de control
Las declaraciones de control permiten que su código tome decisiones basadas en alguna condición.
Hay varias formas en Python de controlar el flujo del script.
Veamos algunas de estas estructuras en Python.
La declaración si
si expresión condicional
ejecuta este código si la expresión es verdadera
La declaración if contiene una condición que podría ser algo así como si la variable
<10, por ejemplo. Si se cumple la condición, la expresión se evalúa
si... si no
si expresión condicional
*** # ejecutar este código cuando se cumpla la condición
demás
*** # ejecuta este código cuando no se cumple la condición
si ID de usuario == 0
print ("Usted es el usuario root")
demás
Bucles
Los bucles son otra estructura muy útil en Python. Los bucles permiten al programador
repetir un bloque de código varias veces, dependiendo de un valor o una condición. Los
dos más utilizados son while y for.
El bucle while
El bucle while evalúa una expresión booleana (una expresión que sólo puede evaluarse
como verdadera o falsa) y continúa la ejecución mientras la expresión se evalúa como
verdadera. Por ejemplo, podríamos crear un fragmento de código que imprima cada
número del 1 al 10 y luego salga del bucle, así:
contar = 1
mientras (cuenta <= 10):
imprimir (contar)
contar += 1
198 Capítulo 17
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
El bucle for
El bucle for puede asignar valores de una lista, cadena, diccionario u otra estructura iterable
a una variable de índice cada vez que pasa por el bucle, lo que nos permite usar cada elemento
de la estructura uno tras otro. Por ejemplo, podemos usar un bucle for para intentar
contraseñas hasta que encontremos una coincidencia, así:
si intento == "230"
"
imprimir ("Contraseña encontrada: + contraseña)
En este fragmento de código, creamos una declaración for que continúa a través de una
lista de contraseñas que hemos proporcionado e intenta conectarse con un nombre de
usuario y contraseña. Si el intento de conexión recibe un código 230, que es el código para
una conexión exitosa, el programa imprime "Contraseña encontrada:"
y luego la contraseña. Luego sale. Si no obtiene un 230, continuará con cada una de las
contraseñas restantes hasta que reciba un 230 o hasta que agote la lista de contraseñas.
#! /usr/bin/python3
conector de importación
u Puertos = [21,22,25,3306]
s = socket.socket()
w Puertos = Puerto[i]
imprimir (Puertos)
imprimir (respuesta)
s.cerrar ()
Creamos una lista llamada Puertos u y agregamos cuatro elementos, cada uno de los cuales representa
un puerto. Luego creamos una declaración for que recorre esa lista cuatro veces, ya que tiene
cuatro elementos v.
Recuerde que cuando utiliza un bucle for , el código asociado con el bucle debe tener
sangría debajo de la declaración for .
Necesitamos modificar el programa para reflejar el uso de una variable de la lista en cada
iteración. Para hacerlo, creamos una variable llamada Puerto
y asígnelo al valor de la lista en cada iteración w. Luego usamos esa variable en nuestra conexión
x.
Cuando el intérprete llegue a esa declaración, intentará conectar
a cualquier puerto asignado a la variable en la dirección IP.
Ahora, si ejecuta este script en un sistema con todos los puertos listados abiertos y
habilitados, debería ver algo como el Listado 176.
kali >./HackersArisePortBannerGrab.py
Este es el estandarte del puerto.
21
220 (frente a FTPd 2.3.4)
Tenga en cuenta que el script encontró el puerto 21 abierto con vsFTPd 2.3.4 ejecutándose
en él, el puerto 22 se abre con OpenSSH 4.7 ejecutándose, el puerto 25 con Postfix y el puerto
3306 con MySQL 5.0.51a.
#! /usr/bin/python3
importar ftplib
x intentar:
intenta:
ftp = ftplib.FTP(servidor)
ftp.login(usuario, palabra)
'
{ imprimir (¡Éxito! La contraseña es + palabra)
| excepto:
print('todavía lo intento...')
excepto:
Usaremos herramientas del módulo ftplib para el protocolo FTP, así que primero lo
importamos. A continuación, creamos una variable llamada servidor y otra variable llamada usuario,
que almacenará algunos comandos para la entrada del usuario. Su secuencia de comandos le
pedirá al usuario que ingrese la dirección IP del servidor FTP u y el nombre de usuario de la
cuenta v que el usuario está intentando ingresar.
Luego le preguntamos al usuario la ruta a la lista de contraseñas w. Puedes encontrar
numerosas listas de contraseñas en Kali Linux ingresando localizar la lista de palabras en
una terminal.
Luego comenzamos el bloque de código de prueba que utilizará la lista de contraseñas
proporcionada por el usuario para intentar descifrar la contraseña del nombre de usuario
proporcionado por el usuario.
Tenga en cuenta que utilizamos una nueva función de Python llamada strip() y. Esta
función elimina el primer y último carácter de una cadena (en este caso, la lista de contraseñas).
Esto es necesario si las contraseñas de esta lista tienen un espacio en blanco o una coma
delante. La función strip() los elimina y deja solo la cadena de caracteres de la posible contraseña.
Si no eliminamos los espacios en blanco, podríamos obtener un falso negativo.
Luego, usamos un segundo bloque try z. Aquí, usamos el módulo ftplib para conectarnos
primero al servidor usando la dirección IP que proporcionó el usuario y luego probamos la
siguiente contraseña de la lista de contraseñas de esa cuenta.
Si la combinación del nombre de usuario y la contraseña resulta en un error, el bloque
sale y va a la cláusula excepto |, donde se imprime aún intentándolo.
y luego regresa a la parte superior de la cláusula for y toma la siguiente contraseña de la lista
de contraseñas para probar.
Si la combinación tiene éxito, la contraseña exitosa se imprime en la pantalla {. La última
línea recoge cualquier otra situación que de otro modo daría lugar a errores. Un ejemplo sería si
el usuario ingresa algo que el programa no puede procesar, como una ruta incorrecta a la lista
de palabras o una lista de palabras faltante.
Ahora, ejecutemos este script en el servidor FTP en 192.168.1.101 y veamos si podemos
descifrar la contraseña del usuario root. Estoy usando una lista de contraseñas llamada
bigpasswordlist.txt en mi directorio de trabajo. Es posible que necesite proporcionar la ruta
completa a cualquier lista de contraseñas que esté utilizando si no está en su directorio de
trabajo (por ejemplo, /usr/share/bigpasswordlist.txt).
kali >./ftpcracker.py
Servidor FTP: 192.168.1.101
nombre de usuario: raíz
aún intentando...
aún intentando...
aún intentando...
recorte
Como puede ver, ftpcracker.py encontró con éxito la contraseña para el usuario root y la
presentó en pantalla.
Resumen
Para superar el estatus de scriptkiddie, un hacker debe dominar un lenguaje de scripting,
y Python generalmente es una buena primera opción por su versatilidad y curva de
aprendizaje relativamente pequeña. La mayoría de las herramientas de piratería están
escritas en Python, incluidas sqlmap, scapy y muchas otras. Aquí, ha aprendido algunos
conceptos básicos de Python que puede utilizar para crear algunas herramientas de
piratería útiles pero sencillas, incluido un capturador de pancartas y un descifrador de
contraseñas de FTP. Para obtener más información sobre Python, recomiendo
encarecidamente el excelente libro de No Starch Press Automate the Boring Stuff with Python (2015) de Al Sw
Ejercicios
Pruebe las habilidades que aprendió en este capítulo completando los siguientes ejercicios:
1. Construya la herramienta de captura de banners SSH del Listado 175 y luego edítela para hacer
un estandarte en el puerto 21.
4. Construya el FTPcracker en el Listado 177 y luego edítelo para usar una lista de palabras para
variable de usuario (similar a lo que hicimos con la contraseña) en lugar de solicitar entrada al
usuario.
5. Agregue una cláusula de excepción a la herramienta de captura de pancartas que imprima "sin respuesta"
si el puerto está cerrado.
¡GUAU! Libro Conceptos básicos de secuencias de comandos Python para piratas informáticos 203
electrónico www.wowebook.org
Machine Translated by Google
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Índice
Símbolos y números B
cambiar, 32
Seguimiento de direcciones IP, 140– información, 30 opción
141 con servidores proxy, 143–148 de comando de transmisión , 32
con red Tor, 141–143 con VPN, 148– BSSID (identificador de conjunto de servicios
149 básicos), 154,
Servicio de servidor web Apache, 122–125 apt 158–159 comando bunzip2 , 97
(herramienta de empaquetado avanzada), 40– Mayordomo, Max “Max Vision”, 86–87
44 comando bzip2 , 97
comando aptcache , 40
comando aptget , 40–43
C
archivado, 94–96, 115
Arquitectura ARM, matrices xxvi, distinción entre
191 en mayúsculas y minúsculas, 2 comando cat
demonio, 69 montaje
automático, 106 (concatenación), 13–14, 22, 167 comando cd (cambiar directorio), 7
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
canales (CH), WiFi, 154, 158, 158–159 directorios. Véase también cambio de
sistemas de
dispositivos de caracteres, archivos, 7
105 comando chgrp (cambiar grupo), 51 creación, 15 sistema
comando chmod (cambiar modo), 52–55, 56, 58 de archivos Linux, 5 listado de
contenido,
comando chown (cambiar propietario), 50 7–8, 51–52 nombres, 2 y
clases y subclases, 193–194 directorios variable PATH , 76–77
de comandos, 76–77 interfaz de permisos, 51–52 trabajo
línea de comandos (CLI), 2 caracteres de actual, 6
comentario, 83, 190 comando de eliminación, 16
compresión , 97 compresión, búsqueda, 11–12 espacio en
93–94, 96–97 concatenación, 13– disco, xxix, 107–108
14, 22, 67 archivos de configuración, comando dmesg , 171 DNS (Sistema de
5 método de conexión , nombres de dominio), 33–35
194–195 comando de cambiar servidores, 34–35 información, 33–34
continuación , 90
declaraciones de control, 197–199 mi
comandos de copia
bit a bit, 98–99 escuchas ilegales, 150, 166
archivo, comando de eco , 35, 83, 90
15 comando cp (copiar archivo), 15 servicios de cifrado de correo
Tipos de CPU, xxv electrónico,
comando createuser , 137 150 correo
demonio cron , 174 electrónico cifrado,
tabla cron , 174–178 150 con VPN, 149 seguridad
comando crond , 69, 174 inalámbrica (ENC), 158 comando env
comando crontab , 175–176 (entorno), 72 variables de entorno. Ver también concha
variables
D
cambiar valores, 73–74
directorios de comandos, 76–77
demonios, 32, 69 conceptos, 71–72
web oscura, 142 símbolo del shell, 75–76
bases de datos. Véase también Hackeo de definido por el usuario,
bases de datos 77–78 visualización,
MySQL, 87, 130 comando 72–73 espionaje, xxiii, 141, 148, 149
db_status , 137 comando ESSID (identificador de conjunto de servicios
dd , 98–99 Distribución Debian, extendido ),
xxv copia de archivo eliminado, 154, 158–159 archivo /etc/apt/
98–99 ataques de denegación de servicio sources.list , 43 archivo /etc/
(DoS), 31 comando describe , crontab , 174–176
134 directorio /dev , 102 – directorio /etc, 5
106 controladores de dispositivos, como archivo /etc/fstab ,
objetivo de piratería, 171 comando df 107 archivo /etc/hosts ,
(disco libre), 107–108 36 /etc/init Archivo .d/rc , 179 Archivo /
comando dhclient , etc/logrotate.conf , 115–117
33 demonio dhcp , 32 solicitud Archivo /etc/proxychains.conf ,
DHCPDISCOVER , 33 144 Archivo /etc/resolv.conf , 34–
solicitud DHCPOFFER , 33 35 Archivo /etc/
servidores DHSCP, 32– rsyslog.conf , 112–115 / archivo
33, 35 declaraciones etc/shadow , 57
dict, 197 diccionarios, 197 comando de excavación , 33–34
archivo /etc/sysctl.conf , 167, 168 interfaz eth0 , 30 piratería ética,
206 índice
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
dispositivos de almacenamiento en, 102– 30, 31–32, 154–155 declaración if...else , 198
declaración
106, 107 filtrado con palabras clave, 12–13, 22– 23,
63–64, 73 de importación , 192 archivo
comando de búsqueda , 11–12, 59 index.html , 124–125 demonio
unidades flash, 104–105, 106 para de inicio , 179 suite insmod
Índice 207
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
k
METRO
Dirección MAC
Escritorio Kali, 3–5
visualización, 30, 156
descargas, instalación xxv–
suplantación de
xxvi, inicio de sesión xxix–xxxi,
identidad, 32 ataques de intermediario (MITM), 166,
descripción general de
168
xxxv–xxxvi, 2
comando man ( manual), 9, 23 modo
configuraciones, kernel
administrado, 31 páginas
xxxi–xxxv, 62, 165–166, 167–169 módulos
de manual, 9 información
del kernel. Ver también kernel cargable
de máscara , 30 modo
módulos, 166, 169–171
maestro, 155 /media
Declaraciones CLAVE , 72
directorio, 5, 106–107 registro de
comando de eliminación , 67–68
mensajes. Consulte los sistemas de registro
señales de eliminación,
Metasploit, 63, 136–137 métodos,
67 comando de eliminación total , 67–68
193–194, 195 piratería militar,
xxiii ataques MITM (hombre en
l el medio), 166, 168 comando mkdir (crear directorio),
15
Comando l2ping , 163–164
directorio / mnt , 5 , 106 dispositivos móviles, xxiv–
herramientas LAMP,
xxv, xxvi comando modinfo ,
123 comandos menos , 25–26
170 comando modprobe , 169, 170–171
directorio /lib , 5
modo monitor, 155, 157–158
bibliotecas, 5
comando más , 25 puntos de montaje, 106
ventajas
dispositivos de montaje/desmontaje, 106–
de Linux, xxiv distinción
107
entre mayúsculas y
minúsculas, 2
distribuciones, xxv
niveles de ejecución, 179 LKM. Consulte la
Comando de archivo mv (mover/renombrar), 16
información
Bases de datos MySQL, 130–135
sobre los módulos del kernel cargables (LKM) lo
acceso, 132–133 conexión,
(dirección de bucle invertido), 30 módulos del kernel
133–134 información, 131–132
cargables (LKM). Consulte también
tablas, 134–135
módulos del kernel, 166,
169–171, 171–
Script del escáner MySQL
172 localhost, 30 comando
ejemplo de código, 87–90
de localización , 10
programación, 177–178
archivos de registro, 115–
servicio mysql , 130–135
118 rotación, 115–117
destrucción, 117–118
conceptos de norte
208 índice
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
Índice 209
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
servicios
R
definido, 121
Arquitectura de
programación al inicio, 179–181 inicio,
Raspberry Pi, xxvi
detención, reinicio, 122 establecer comando,
Proyecto de espionaje, 125129
72–73, 91 bit SGID , 58–59
Sistema operativo Raspbian, 126, 129 aplicación
extensión de
raspistill , 129 scripts rc , 178–180
archivo .sh, 85 shebang
herramienta rcconf, 180–
(#!), 82 indicador de
181 comando de lectura ,
shell, 75–76 variables de
85, 91 comando de solo
shell, 71–72 shells, 2, 82
lectura , 91 reconocimiento,
comando shift ,
160–164, 197 comando renice , 65, 66
91 comando show , 134
repositorios, 40, 43–44, 185 uso
comando shred , 117–118
de recursos, 64 comando rm (eliminar),
Snort, 19–20, 20 módulo de
16 comando rmdir
socket , 194–196
(eliminar directorio), 16 comando
administradores e instaladores
rmmod (eliminar módulo), 169 / directorio raíz, 5
de software, 40, 45–46
paquetes de software
usuario root
definidos, 39
definido, 2
instalación, 40–41
contraseñas, xxxii–xxxiii, 130–
eliminación, 41–42
131, 132
actualización y mejora, 42–43 archivo
privilegios, 5, 6, 50, 65, 66 rootkits,
fuentes.list , 43–44 proyecto
166, 171 demonio
de cámara espía, 125–129 comandos
rsyslog, 112, 119 niveles de
SQL (lenguaje de consulta estructurado), 131
ejecución, 179
SSH (Secure Shell ),
125–126 SSID (identificador de conjunto
S de servicios), 154 bit de permiso de bit
adhesivo, 58 dispositivos de
Directorios /sbin , 76
almacenamiento, 102–109
programación
monitoreo y verificación, 107–109 montaje y
con at, 69 con
desmontaje, 106–107
crond, 174–178 al inicio,
178–181 variables de
representación de, 102–106 función
script, 84–85, 89 conceptos de
strip() , 202 comando su
scripts,
(cambiar de usuario), 136 bit SUID , 57–59
2, 81 ejemplos, 86–
preocupaciones de
90 ejecutando
vigilancia, 142–143, 148, 149 Administrador
(ejecutando), 83–84 programación ,
de
174–178 escritura, 82–85
paquetes Synaptic, 45–46 comando sysctl ,
SDP (Protocolo de
167–169 syslogd demonio, 112
descubrimiento de servicios), 163 comando sdptool ,
administrador del sistema.
163 seguridad. Ver también
Ver usuario root
permisos
y módulos de kernel cargables, 171–172
y vigilancia, t
142–143, 148, 149
Comando tail (ver archivo), 21–22, 23 Comando
Protocolo WiFi, 154
tar (archivar), 94–96 Extensión de
comando sed (editor de secuencias), 23–24
archivo .tar , 95 archivos
Comando SELECCIONAR ,
tarballs/tar, 94–96 Script de
135 comando de servicio , 119, 122
cliente TCP, 194–195
Protocolo de descubrimiento de servicios (SDP), 163
210 índice
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
V
variables. Ver también variables de entorno
Python, 187–190
script, 84–85, 89
shell, 71–72
máquinas virtuales, conceptos e
instalación, xxvi–xxvii redes
privadas virtuales (VPN), 148–149
Instalación y
configuración de VirtualBox, xxvi–xxix
instalación de Kali, xxix–xxxi
software de virtualización, xxxi
VPN (redes privadas virtuales), 148–149
Índice 211
¡GUAU! Libro
electrónico www.wowebook.org
Machine Translated by Google
COMPUTADORAS/
AMBICIOSO CUBIERTAS
¿HACKER? LINUX
EMPIEZA AQUI. Y PITÓN 3
Si está comenzando en el apasionante camino de la piratería, la • Mantenga su actividad en Internet en secreto usando Tor, proxy
ciberseguridad y el pentesting, Linux Basics for Hackers es un excelente Servidores, VPN y correo electrónico cifrado
SEGURIDAD
operativo Linux y adquirirá las herramientas y técnicas que necesitará
para tomar el control de un entorno Linux. • Usar y abusar de servicios como MySQL, el servidor web Apache y
OpenSSH
Primero, aprenderá cómo instalar Kali en una máquina virtual y obtendrá una • Cree sus propias herramientas de piratería, como una cámara de vídeo
introducción a los conceptos básicos de Linux. A continuación, abordará espía remota y un descifrador de contraseñas.
GUARDAR
Los tutoriales prácticos y los ejercicios reforzarán y pondrán a prueba tus investigador forense y formador con más de 20 años en la industria.
EN:
LO MEJOR EN GE EKE NTERTA INME NT™
www.nostarch.com
¡GUAU! Libro
electrónico www.wowebook.org