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
Instalación y configuración del software de servidor web. IFCT0509 Calificación: 0 de 5 estrellas0 calificacionesOperaciones auxiliares con Tecnologías de la Información y la Comunicación. IFCT0108 Calificación: 0 de 5 estrellas0 calificacionesProgramación con Qt y Arduino. Calificación: 0 de 5 estrellas0 calificacionesAsterisk El Inicio De Un Gran Emprendimiento Calificación: 0 de 5 estrellas0 calificacionesProgramación y desarrollo de algoritmos con C++ Calificación: 0 de 5 estrellas0 calificacionesPerl Para Geocientíficos Calificación: 0 de 5 estrellas0 calificacionesUF1469 - SGBD e instalación Calificación: 0 de 5 estrellas0 calificacionesComputadores para bases de datos. IFCT0310 Calificación: 0 de 5 estrellas0 calificacionesApps HTML5 para móviles: Desarrollo de aplicaciones para smartphones y tablets Calificación: 0 de 5 estrellas0 calificacionesIniciar con Lazarus y Free Pascal Calificación: 5 de 5 estrellas5/5Aprende a programar en Python: de cero al infinito Calificación: 0 de 5 estrellas0 calificacionesIntroducción a la programación con Python Calificación: 0 de 5 estrellas0 calificacionesInstalación y parametrización del software. IFCT0510 Calificación: 0 de 5 estrellas0 calificacionesDesarrollo y reutilización de componentes software y multimedia mediante lenguajes de guión. IFCD0210 Calificación: 0 de 5 estrellas0 calificacionesDomine Microsoft Windows Server 2012: Servidores Calificación: 0 de 5 estrellas0 calificacionesDesarrollo de Aplicaciones Metro Style Calificación: 0 de 5 estrellas0 calificacionesDesarrollo de software con netbeans 7.1: Programe para scritorio, web y dispositivos móviles Calificación: 0 de 5 estrellas0 calificacionesBackbone JS. JavaScript Framework. 2ª Edición Calificación: 0 de 5 estrellas0 calificacionesPHP Calificación: 0 de 5 estrellas0 calificacionesAprende programación de computadoras Calificación: 5 de 5 estrellas5/5Raspberry Pi Fundamentos y Aplicaciones: HARDWARE (O SOPORTE FÍSICO DEL ORDENADOR) Calificación: 5 de 5 estrellas5/5Sistema operativo GNU Linux: Un enfoque práctico Calificación: 0 de 5 estrellas0 calificacionesConstruya su propio supercomputador con Raspberry Pi Calificación: 5 de 5 estrellas5/5AJAX en J2EE. 2ª Edición actualizada Calificación: 0 de 5 estrellas0 calificacionesServicios en Red (GRADO MEDIO): Internet: obras generales Calificación: 0 de 5 estrellas0 calificacionesAdministración Hardware de un Sistema Informático (MF0484_3) Calificación: 0 de 5 estrellas0 calificacionesUtilización de las bases de datos relacionales en el sistema de gestión y almacenamiento de datos. ADGG0308 Calificación: 0 de 5 estrellas0 calificacionesUF1271 - Instalación y configuración del software de servidor web Calificación: 0 de 5 estrellas0 calificacionesUF2177 - Desarrollo de programas en el entorno de la base de datos Calificación: 0 de 5 estrellas0 calificacionesCreación de páginas web con el lenguaje de marcas. IFCD0110 Calificación: 0 de 5 estrellas0 calificaciones
Seguridad para usted
BackTrack 5. Hacking de redes inalámbricas: Fraude informático y hacking Calificación: 5 de 5 estrellas5/5Guía De Hacking De Computadora Para Principiantes: Cómo Hackear Una Red Inalámbrica Seguridad Básica Y Pruebas De Penetración Kali Linux Su Primer Hack Calificación: 0 de 5 estrellas0 calificacionesHackeado: 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/5GuíaBurros: Ciberseguridad: Consejos para tener vidas digitales más seguras Calificación: 5 de 5 estrellas5/5Lo esencial del hackeo Calificación: 5 de 5 estrellas5/5Las Estafas Digitales Calificación: 5 de 5 estrellas5/57 Pasos Para Ser Un Pentester: Cómo hackear, #0 Calificación: 5 de 5 estrellas5/5Auditoría de Tecnologías y Sistemas de Información.: SEGURIDAD INFORMÁTICA Calificación: 4 de 5 estrellas4/5Hacking ético con herramientas Python: SEGURIDAD INFORMÁTICA Calificación: 4 de 5 estrellas4/5Kali Linux Calificación: 3 de 5 estrellas3/5Protección de Datos y Seguridad de la Información: SEGURIDAD INFORMÁTICA Calificación: 4 de 5 estrellas4/5Interconexión de Redes Privadas y Redes Publicas. (MF0956_2): Gestión de redes Calificación: 5 de 5 estrellas5/5ISO27001/ISO27002: Una guía de bolsillo Calificación: 4 de 5 estrellas4/5Auditoría de seguridad informática: Curso práctico Calificación: 5 de 5 estrellas5/5Enciclopedia de la Seguridad Informática. 2ª Edición: SEGURIDAD INFORMÁTICA Calificación: 4 de 5 estrellas4/5La seguridad informática es como el sexo seguro Calificación: 5 de 5 estrellas5/5El metaverso para principiantes: La guía definitiva para entender e invertir en la web 3.0, los NFT, los criptojuegos y la realidad virtual Calificación: 0 de 5 estrellas0 calificacionesUna guía de seguridad cibernética Calificación: 5 de 5 estrellas5/5Bitcoin para principiantes y a prueba de tontos: Criptomonedas y Blockchain Calificación: 2 de 5 estrellas2/5Seguridad en Bases de Datos y Aplicaciones Web 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/5Hacking y Seguridad en Internet.: Fraude informático y hacking Calificación: 4 de 5 estrellas4/5Seguridad en aplicaciones Web Java: SEGURIDAD INFORMÁTICA Calificación: 5 de 5 estrellas5/5Ciberseguridad para directivos: Riesgos, control y eficiencia de las tecnologías de la Información Calificación: 0 de 5 estrellas0 calificacionesCiberseguridad Calificación: 1 de 5 estrellas1/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/5
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