Linux
Esta tarea se centra en enumerar una máquina Linux después de acceder a un shell, como bash
. Aunque algunos comandos brindan información sobre más de un área, intentamos agrupar los comandos en cuatro categorías según la información que esperamos adquirir.
Sistema
Usuarios
Redes
Servicios en uso
Le recomendamos que haga clic en " Iniciar AttackBox " y " Iniciar máquina " para que pueda experimentar y responder las preguntas al final de esta tarea.
Sistema
En un sistema Linux, podemos obtener más información sobre la distribución de Linux y la versión de lanzamiento buscando archivos o enlaces que terminen -release
en /etc/
. Correr ls /etc/*-release
nos ayuda a encontrar dichos archivos. Veamos cómo se ven las cosas en CentOS Linux.
Probemos en un sistema Fedora.
Podemos encontrar el nombre del sistema usando el comando hostname
.
Varios archivos en un sistema pueden proporcionar mucha información útil. En particular, considere lo siguiente /etc/passwd
, /etc/group
y /etc/shadow
. Cualquier usuario puede leer los archivos passwd
y group
. Sin embargo, el shadow
archivo de contraseñas requiere privilegios de root ya que contiene las contraseñas hash. Si logras romper los hashes, sabrás la contraseña original del usuario.
De manera similar, varios directorios pueden revelar información sobre los usuarios y pueden contener archivos confidenciales; Uno son los directorios de correo que se encuentran en /var/mail/
.
Para encontrar las aplicaciones instaladas, puede considerar enumerar los archivos en /usr/bin/
y /sbin/
:
ls -lh /usr/bin/
ls -lh /sbin/
En un sistema Linux basado en RPM, puede obtener una lista de todos los paquetes instalados usando rpm -qa
. Indica -qa
que queremos consultar todos los paquetes.
En un sistema Linux basado en Debian, puede obtener la lista de paquetes instalados usando dpkg -l
. El siguiente resultado se obtiene de un servidor Ubuntu.
Usuarios
Archivos como /etc/passwd
revelar los nombres de usuario; sin embargo, varios comandos pueden proporcionar más información y conocimientos sobre otros usuarios del sistema y su paradero.
Puedes mostrar quién ha iniciado sesión usando who
.
Podemos ver que el usuario root
ha iniciado sesión en el sistema directamente, mientras que los usuarios jane
están peter
conectados a través de la red, y podemos ver sus direcciones IP.
Tenga en cuenta que who
no debe confundirse con whoami
el que imprime su identificación de usuario efectiva.
Para llevar las cosas al siguiente nivel, puede utilizar w
, que muestra quién ha iniciado sesión y qué está haciendo. Según el resultado del terminal a continuación, peter
se está editando notes.txt
y jane
es el que se ejecuta w
en este ejemplo.
Para imprimir el ID de usuario y grupo real y efectivo, puede emitir el comando id
(para ID).
¿Quieres saber quién ha estado usando el sistema recientemente? last
muestra una lista de los últimos usuarios que iniciaron sesión; además, podemos ver quién cerró sesión y cuánto tiempo permanecieron conectados. En el resultado siguiente, el usuario randa
permaneció conectado durante casi 17 horas, mientras que el usuario michael
cerró la sesión después de cuatro minutos.
Finalmente, cabe mencionar que sudo -l
enumera los comandos permitidos para el usuario que invoca en el sistema actual.
Redes
Las direcciones IP se pueden mostrar usando ip address show
(que se puede acortar a ip a s
) o con el comando anterior ifconfig -a
(su paquete ya no se mantiene). La salida del terminal a continuación muestra la interfaz de red ens33
con la dirección IP 10.20.30.129
y la máscara de subred 255.255.255.0
tal como están 24
.
Los servidores DNS se pueden encontrar en el archivo /etc/resolv.conf
. Considere la siguiente salida de terminal para un sistema que utiliza DHCP para sus configuraciones de red. El DNS, es decir, el servidor de nombres, está configurado en 10.20.30.2
.
netstat
es un comando útil para aprender sobre conexiones de red, tablas de enrutamiento y estadísticas de interfaz. Te explicamos algunas de sus muchas opciones en la siguiente tabla.
-a
mostrar enchufes tanto de escucha como de no escucha
-l
mostrar solo tomas de escucha
-n
mostrar salida numérica en lugar de resolver la dirección IP y el número de puerto
-t
tcp
-u
UDP
-x
UNIX
-p
Muestra el PID y el nombre del programa al que pertenece el socket
Puedes utilizar cualquier combinación que se adapte a tus necesidades. Por ejemplo, netstat -plt
devolverá programas que escuchan en sockets TCP. Como podemos ver en el resultado del terminal a continuación, sshd
está escuchando en el puerto SSH, mientras que master
está escuchando en el puerto SMTP en direcciones IPv4 e IPv6. Tenga en cuenta que para obtener todos los PID (ID de proceso) y nombres de programas, debe ejecutarlos netstat
como root o utilizar sudo netstat
.
netstat -atupn
Mostrará todas las conexiones TCP y UDP escuchadas y establecidas y los nombres de los programas con direcciones y puertos en formato numérico .
Se podría pensar que usarlo nmap
antes de acceder a la máquina de destino habría proporcionado un resultado comparable. Sin embargo, esto no es del todo cierto. Nmap necesita generar una cantidad relativamente grande de paquetes para verificar si hay puertos abiertos, lo que puede activar sistemas de detección y prevención de intrusiones. Además, los firewalls a lo largo de la ruta pueden descartar ciertos paquetes y obstaculizar el escaneo, lo que resulta en resultados de Nmap incompletos.
lsof
significa Lista de archivos abiertos. Si queremos mostrar solo conexiones de red e Internet, podemos usar lsof -i
. El resultado del terminal a continuación muestra los servicios de escucha IPv4 e IPv6 y las conexiones en curso. El usuario peter
está conectado al servidor rpm-red-enum.thm
en el ssh
puerto. Tenga en cuenta que para obtener la lista completa de programas coincidentes, debe ejecutarlo lsof
como root o utilizar sudo lsof
.
Debido a que la lista puede ser bastante larga, puede filtrar aún más la salida especificando los puertos que le interesan, como el puerto SMTP 25. Al ejecutar, limitamos la salida lsof -i :25
a aquellos relacionados con el puerto 25, como se muestra en la salida del terminal a continuación. . El servidor escucha en el puerto 25 en direcciones IPv4 e IPv6.
Servicios en uso
Obtener una instantánea de los procesos en ejecución puede proporcionar muchas ideas. ps
le permite descubrir los procesos en ejecución y mucha información sobre ellos.
Puede enumerar todos los procesos del sistema usando ps -e
, donde -e
selecciona todos los procesos. Para obtener más información sobre el proceso, puede agregar -f
para formato completo y -l
para formato largo. Experimente con ps -e
, ps -ef
y ps -el
.
Puede obtener resultados comparables y ver todos los procesos usando la sintaxis BSD: ps ax
o ps aux
. Tenga en cuenta que a
y x
son necesarios cuando se utiliza la sintaxis BSD, ya que eliminan las restricciones de "solo usted mismo" y "debe tener un tty"; en otras palabras, es posible visualizar todos los procesos. El u
es para detalles sobre el usuario que tiene el proceso.
-e
todos los procesos
-f
listado de formato completo
-j
formato de trabajos
-l
formato largo
-u
formato orientado al usuario
Para obtener resultados más “visuales”, puede imprimir ps axjf
un árbol de procesos. Significa f
"bosque" y crea una jerarquía de procesos artísticos ASCII como se muestra en el resultado del terminal a continuación.
Terminal
Para resumir, recuerde utilizar ps -ef
u ps aux
obtener una lista de todos los procesos en ejecución. Considere canalizar la salida grep
para mostrar líneas de salida con ciertas palabras. La salida del terminal a continuación muestra las líneas que peter
contienen.
Última actualización