Curso de programación Bash Shell
()
Información de este libro electrónico
_x000D_
Esta obra está dirigida a estudiantes y profesionales de la informática, está redactada con un lenguaje claro y didáctico y en ella se describen los fundamentos lógicos, desde el punto de vista de un hacker ético, del análisis de la seguridad de redes informáticas. De forma secuencial se guía al lector para que consiga resolver problemas rutinarios y logre diseñar sus propios scripts, independientemente del lenguaje que elija. _x000D_
_x000D_
Los temas aquí tratados son indispensables para comprender el análisis de seguridad de las redes informáticas, mediante el uso de los comandos a _x000D_
través de una terminal, en un entorno GNU/Linux. _x000D_
_x000D_
Otra cualidad de este libro es que se muestran implementaciones en Bash Shell, algunos con base en códigos en lenguaje LUA, por medio de intérpretes de la herramienta NMAP. Por ello, aunque un lector que no esté familiarizado con estos lenguajes, podrá igualmente entender su sintaxis._x000D_
_x000D_
El libro contiene material adicional que podrá descargar _x000D_
accediendo a la ficha del libro en www.ra-ma.es.
Relacionado con Curso de programación Bash Shell
Libros electrónicos relacionados
UML. Arquitectura de aplicaciones en Java, C++ y Python (2ª Edición) Calificación: 0 de 5 estrellas0 calificacionesAJAX en J2EE. 2ª Edición actualizada Calificación: 0 de 5 estrellas0 calificacionesIniciar con Lazarus y Free Pascal Calificación: 5 de 5 estrellas5/5Domine JavaScript (4ª Edición) Calificación: 0 de 5 estrellas0 calificacionesAprende a Programar con Ruby on Rails Calificación: 0 de 5 estrellas0 calificacionesSistema operativo GNU Linux: Un enfoque práctico Calificación: 0 de 5 estrellas0 calificacionesReversing. Ingeniería Inversa Calificación: 0 de 5 estrellas0 calificacionesAprende a Programar ASP .NET y C# - Segunda Edición Calificación: 0 de 5 estrellas0 calificacionesIntroducción a la programación en C. Un enfoque práctico. Calificación: 0 de 5 estrellas0 calificacionesAprende a Programar en ASP .NET y C# Calificación: 0 de 5 estrellas0 calificacionesProgramación Paginas Web JavaScript y PHP Calificación: 0 de 5 estrellas0 calificacionesImplantación de aplicaciones web (GRADO SUP.): Internet: obras generales Calificación: 0 de 5 estrellas0 calificacionesServicios en Red (GRADO MEDIO): Internet: obras generales Calificación: 0 de 5 estrellas0 calificacionesProgramación en Lenguajes Estructurados. (MF0494_3) Calificación: 0 de 5 estrellas0 calificacionesLa Era del Código Calificación: 5 de 5 estrellas5/5UF1271 - Instalación y configuración del software de servidor web Calificación: 0 de 5 estrellas0 calificacionesJava Curso Práctico Calificación: 0 de 5 estrellas0 calificacionesHacking ético de redes y comunicaciones Calificación: 0 de 5 estrellas0 calificacionesProgramación shell. Aprende a programar con más de 200 ejercicios resueltos: PROGRAMACIÓN INFORMÁTICA/DESARROLLO DE SOFTWARE Calificación: 5 de 5 estrellas5/5Domine PHP y MySQL. 2ª edición: Gráficos y diseño web Calificación: 5 de 5 estrellas5/5Java 2: Manual de Usuario y Tutorial. 5ª Edición Calificación: 0 de 5 estrellas0 calificacionesAprenda a Programar con Lazarus: PROGRAMACIÓN INFORMÁTICA/DESARROLLO DE SOFTWARE Calificación: 5 de 5 estrellas5/5Curso de Programación con Java - 2ª Edición Calificación: 5 de 5 estrellas5/5Hacking ético con herramientas Python Calificación: 0 de 5 estrellas0 calificacionesKali Linux Calificación: 0 de 5 estrellas0 calificacionesDimensionar, instalar y optimizar el hardware. IFCT0510 Calificación: 0 de 5 estrellas0 calificacionesJava 17 Calificación: 0 de 5 estrellas0 calificacionesConexión SQL SERVER & C# (Manual para principiantes) Calificación: 1 de 5 estrellas1/5Proxmox. Curso Práctico Calificación: 0 de 5 estrellas0 calificacionesDomine Microsoft Windows Server 2012: Servidores Calificación: 0 de 5 estrellas0 calificaciones
Seguridad para usted
Hackeado: Guía Definitiva De Kali Linux Y Hacking Inalámbrico Con Herramientas De Seguridad Y Pruebas Calificación: 5 de 5 estrellas5/5Hackers. Aprende a atacar y defenderte. 2ª Adición Actualizada: Fraude informático y hacking Calificación: 4 de 5 estrellas4/5Las Estafas Digitales Calificación: 5 de 5 estrellas5/5Hacking ético con herramientas Python: SEGURIDAD INFORMÁTICA Calificación: 4 de 5 estrellas4/5Hacking Ético 101 - Cómo hackear profesionalmente en 21 días o menos! 2da Edición: Cómo hackear, #1 Calificación: 4 de 5 estrellas4/5Auditoría de seguridad informática: Curso práctico Calificación: 5 de 5 estrellas5/5Interconexión de Redes Privadas y Redes Publicas. (MF0956_2): Gestión de redes Calificación: 5 de 5 estrellas5/5Hacking ético de redes y comunicaciones: Curso práctico Calificación: 1 de 5 estrellas1/57 Pasos Para Ser Un Pentester: Cómo hackear, #0 Calificación: 5 de 5 estrellas5/5Ciberseguridad para directivos: Riesgos, control y eficiencia de las tecnologías de la Información Calificación: 5 de 5 estrellas5/5Un fantasma en el sistema: Las aventuras del hacker más buscado del mundo Calificación: 5 de 5 estrellas5/5Lo esencial del hackeo Calificación: 5 de 5 estrellas5/5El libro blanco del HACKER Calificación: 0 de 5 estrellas0 calificacionesIngeniería inversa. Curso práctico Calificación: 0 de 5 estrellas0 calificacionesKali Linux para Hackers Calificación: 0 de 5 estrellas0 calificacionesHacking Ético (3ª Edición) Calificación: 0 de 5 estrellas0 calificacionesProtección de Datos y Seguridad de la Información: SEGURIDAD INFORMÁTICA Calificación: 4 de 5 estrellas4/5Hackeo Ético: Guia complete para principiantes para aprender y comprender el concepto de hacking ético Calificación: 0 de 5 estrellas0 calificacionesGuíaBurros: Ciberseguridad: Consejos para tener vidas digitales más seguras Calificación: 5 de 5 estrellas5/5Introducción a la Informática Forense: SEGURIDAD INFORMÁTICA Calificación: 0 de 5 estrellas0 calificacionesHacking ético de redes y comunicaciones Calificación: 0 de 5 estrellas0 calificacionesKali Linux Calificación: 3 de 5 estrellas3/5Privacidad y Ocultación de Información Digital Esteganografía: SEGURIDAD INFORMÁTICA Calificación: 5 de 5 estrellas5/5Seguridad en Bases de Datos y Aplicaciones Web Calificación: 5 de 5 estrellas5/5Una guía de seguridad cibernética Calificación: 5 de 5 estrellas5/5La seguridad informática es como el sexo seguro Calificación: 5 de 5 estrellas5/5Kali Linux Calificación: 0 de 5 estrellas0 calificacionesCiberseguridad industrial e infraestructuras críticas Calificación: 0 de 5 estrellas0 calificaciones
Comentarios para Curso de programación Bash Shell
0 clasificaciones0 comentarios
Vista previa del libro
Curso de programación Bash Shell - Arturo Enrique Mata
Agradecimientos
A Dios Todopoderoso, mi familia, amigos más cercanos, colegas y, por encima de todo, a la comunidad de investigación de seguridad informática, verdaderos hackers de la tecnología de información que, han aportado sus conocimientos a través del uso del Open Source y el Free Software, con fines de formación técnica en ciberseguridad.
Arturo E. Mata.
Acerca del autor
Arturo Mata es Analista de Protección Lógica en Petróleos de Venezuela, donde durante más de dos décadas ha desarrollado casi toda su carrera trabajando en protección industrial de instalaciones petroleras, proyectos de automatizados control de acceso y video vigilancia IP, gestión de incidentes de ciberseguridad, mantenimiento de plataformas de seguridad en tecnologías de información, monitoreo de redes informáticas, evaluación de riesgos y amenazas persistentes avanzadas.
Máster en Marketing Digital y Analítica Web, titulado en la Especialidad de Seguridad de Redes, con diplomaturas en Seguridad Informática y en Sistemas Informáticos, programador Backend en PHP y Python, investigador de la seguridad de la información, centrado en la privacidad de los usuarios, quien cree firmemente en un mundo donde la ciberseguridad juegue un papel central.
Fue cofundador y Director de TuDiscoWeb, una aplicación web para el almacenar, sincronizar y gestionar archivos en la nube de forma segura para usuarios empresariales y hogareños (2012-2017).
Arturo ha publicado varios artículos, principalmente en su blog personal sobre ciberseguridad arturomata.xyz
. Además de esta labor, también fue articulista de tendencias tecnológicas de la revista técnica Computer World Venezuela
(2013-2016).
Prefacio
El propósito general de este libro, es el de introducir al lector en el reconocimiento y escaneo de vulnerabilidades utilizando lenguaje <Bash Shell>, así como en el diseño de scripts para evaluar la configuración de seguridad de equipos conectados a una red LAN.
Si bien se presentan algoritmos, el objetivo no es saturar el conocimiento del lector con una gran cantidad de códigos con sintaxis incomprensibles, sino enseñar sus fundamentos lógicos desde el punto de vista de un Hacker Ético o Pentester, mostrar también maneras inteligentes de usarlos para resolver problemas rutinarios, y, sobre todo, lograr que el lector sea capaz de diseñar sus propios scripts, independientemente del lenguaje que elijan.
Esta obra está dirigida a estudiantes y profesionales en pruebas de penetración de redes informáticas con gusto de programar o resolver problemas a través de ejercicios prácticos, pero que no requieren bases matemáticas avanzadas, sí, de mucha lógica y atención a los detalles; por lo que se pretende, no solamente explicar las rutinas, salvo también darle al lector las herramientas necesarias para entender, analizar y diseñar.
Los temas tratados aquí son indispensables para comprender el gran campo de estudio y análisis de la seguridad de redes informáticas, mediante el uso de los comandos a través de una terminal, en un ambiente GNU/Linux. Los fundamentos de una cantidad interminable de conocimientos desde los inicios de UNIX y técnicas que están en constante desarrollo por la investigación en las ciencias de la computación de parte de una comunidad técnica, muy activa a nivel global.
Otra peculiaridad es que a lo largo del escrito se muestran implementaciones en Bash Shell, algunos con base en códigos en lenguaje LUA, por medio de intérpretes de la herramienta NMAP. Por ello, es posible que un lector que no esté familiarizado con estos lenguajes, por lo menos a fondo, pueda igualmente entender su sintaxis.
1
Introducción al lenguaje Bash
El nombre Bash es un juego de palabras con el nombre de la Shell de Bourne (sh), uno de los primeros e importante Shell de Unix escrito por Stephen Bourne
.
Gattol Markus.
Lenguaje Bash
El shell estándar distribuido con los sistemas Unix y Linux se deriva de AT&T, que a su vez evolucionó a partir de la versión original escrita por Stephen Bourne de Bell Labs.
Desde entonces, IEEE ha desarrollado estándares basados en Bourne Shell y otros shells más nuevos. La versión actual del estándar es "IEEE Std 1003.1-2001 Shell and Utilities Volumes", también conocido como el estándar POSIX (Portable Operating System Unix).
Debido a que el shell proporciona un lenguaje interpretado o de secuencias de comandos, los programas se pueden escribir, modificar y verificar rápida y fácilmente. En pocas palabras, <shell> es un macroprocesador que le permite ejecutar comandos de forma interactiva o no interactiva.
¿Qué es Bash Shell?
<Bash> es una herramienta de secuencias de comandos popular en Unix. Son las siglas de Bourne Again Shell. Es una herramienta poderosa para cualquier usuario de Linux o administrador de sistemas.
<Bash> interpreta los comandos que se ejecutan instrucciones ingresadas por el usuario o contenidas en scripts y devuelve los resultados.
<Bash> interpreta los comandos ejecutados por la entrada del usuario o scripts y devuelve los resultados. "GNU Bash, o simplemente Bash, es una interfaz de usuario de línea de comandos popular, especialmente para el shell de Unix; y el lenguaje de secuencias de comandos Bash fue escrito originalmente por Brian Fox para el sistema operativo GNU y se define como Bourne Shell Free Software Wikipedia.
En otras palabras, actúa como una interfaz entre el kernel de Linux y un usuario o programa en modo texto. Además, incluye muchas herramientas de desarrollo y mejoras sobre su predecesor <sh>. Al ser una utilidad desarrollada por GNU, se suele utilizar por defecto en las distribuciones actuales.
Nombres de archivo y permisos en bash
A continuación, analicemos brevemente los nombres de archivo y los permisos. Es posible que haya notado que para ejecutar un script de shell, el archivo debe ser ejecutable con <chmod + x NOMBRE DE ARCHIVO>. De forma predeterminada, los documentos recién creados no son ejecutables, independientemente del sufijo de la extensión del archivo.
En los sistemas GNU/Linux, la extensión del archivo casi no tiene significado, excepto que cuando ejecuta el comando <ls> para listar todos los documentos y directorios, es inmediatamente evidente que los registros con la extensión <.sh>. Lo más probable es que se trate de un script de shell, y el archivo <.jpge> probablemente sea una imagen comprimida con pérdida.
En los sistemas GNU/Linux, tenga en cuenta que puede usar comandos para especificar tipos de documentos. Como puedes ver en el ejemplo anterior, la extensión del registro no tiene valor y el intérprete <bash> tiene más peso en este caso.
NOTA
En Linux, quien crea un fichero o un directorio es el propietario de esa información y por lo tanto, puede restringirle el acceso a ella a cualquier otro usuario salvo al root. (El root siempre tendrá acceso a ese dato).
Cada archivo o carpeta tiene propiedades que afectan la seguridad de la información que contiene:
El usuario propietario.
El grupo de usuarios al que pertenece el propietario.
Los permisos de acceso que tienen ambos, (por separado) y los que tiene cualquier otro usuario que no pertenezca a ese grupo.
Para explicar esto mejor, pongamos un ejemplo:
Digamos que trabajas como operador en una empresa y eres el usuario operador-dor1
en tu sistema. El administrador del sistema definitivamente creará un grupo de clientes llamado cajero
y agregará su ID a este grupo.
El administrador definirá ciertos permisos para el grupo de usuarios Moderadores
. Estos permisos son comunes a todos los miembros de este grupo, por lo que su ID operador1
contiene todos los permisos asignados al grupo operador
.
Cuando alguien crea un archivo o una carpeta en Linux, se convierte automáticamente en el propietario de esos datos, por lo que puede redefinir los permisos que otorgan a otros usuarios de su grupo sobre la información y puede restringir el consentimiento para el uso de esa información. Todos los demás usuarios que no están en su grupo.
NOTA
De forma predeterminada, los miembros del mismo grupo no pueden modificar su información, pero puede permitirles que lo hagan. Por supuesto, el sistema
Para cambiar el propietario y el grupo de propietarios de un archivo o directorio, use el comando <chown>.
Sintaxis
sudo [chown] [usuario:grupo] nombre_archivo
La palabra sudo se usa para obtener privilegios de root para ejecutar los comandos requeridos. Solo los usuarios que son miembros del grupo de administración pueden usar <sudo> para obtener permisos de <raíz>.
Puede tener tres permisos sobre un archivo o carpeta, que son:
De lectura (se representa con la letra r por read).
De escritura (se representa con la letra w por write).
De ejecución (se representa con la letra x por execute).
Al realizar la consulta ls -l
veremos que por cada archivo y directorio contenido en el directorio en el que nos encontramos, aparecerá una línea similar a la siguiente:
-rwxr-xr-x 1 user1 grupo1 128931 Ene 29 2020gpl.txt
La información sobre este flujo se organiza de la siguiente manera:
Caracter 1:
Nos dice si es un archivo o un directorio.
Aparece -
para un archivo y d
para un directorio.
También puede ser un enlace (acceso directo). En este caso, aparece l
.
Caracteres 2, 3 y 4:
Representan los permisos del propietario del archivo para leer, escribir y ejecutar.
Según se permita leer (read), escribir (write) o ejecutar (start) sin activar el permiso correspondiente.
Caracteres 5, 6 y 7:
Representan lo mismo que los tres primeros, pero representan a los miembros del grupo de usuarios al que pertenece el propietario.
En el séptimo carácter también podemos encontrar S
, lo que significa que el archivo es de tipo SetU-serId, lo que significa que cuando se ejecute, obtendrá el permiso del propietario del archivo.
Caracteres 8, 9 y 10:
Representan lo mismo que los tres primeros, pero se aplican a cualquier usuario que no sea miembro del grupo propietario.
En el décimo carácter también podemos encontrar una S
.
NOTAS
El hecho de que tenga permiso de ejecución en un archivo no significa que tenga permiso para hacer lo que el código está escrito en ese archivo.
Por ejemplo, un archivo puede necesitar acceso a una unidad de memoria durante la ejecución y solo el propietario del script tiene acceso a él.
Si esta secuencia de comandos tiene el permiso de ejecución establecido en x
para todos los usuarios del sistema, solo el propietario puede ejecutar la secuencia de comandos porque solo él tiene acceso a la unidad de memoria a la que desea acceder. Al código en un archivo por lotes.
Volvamos al ejemplo
-rwxr-xr-x 1 user1 grupo1 128931 Ene 29 2020gpl.txt
Después del décimo carácter, aparecerá un número indicando el número de enlaces fuertes que tiene el archivo (lo veremos más adelante).
Para directorios, este número indica cuántas entradas hay (si no hay, la cifra es 2).
El propietario del archivo y el grupo al que pertenece se muestran después de un enlace fijo.
Luego el tamaño del archivo en bytes.
Luego la última fecha de modificación. (La fecha de creación, el último acceso y la fecha de modificación se almacenan en todos los archivos y podemos manipularlos con el comando <touch>).
El nombre del archivo o carpeta se muestra al final.
Modificar los permisos de archivos y directorios
Para cambiar los permisos de un archivo o directorio, use el comando chmod. Se puede utilizar de dos maneras.
El enfoque simple para la concesión de licencias de grabación de audio se resume a continuación:
r = read (lectura).
w = write (escritura).
x = execute (ejecución).
Para indicar a quién le asignamos estos permisos, debemos utilizar los siguientes