notes - b0ySie7e
GithubPortafolioWrite-ups
  • 👋Bienvenido a mi blog
  • Introducción a la ciberseguridad
    • 📓¿Como inicio en la ciberseguridad?
  • Teoria y Conceptos
    • 📓Redes
      • Identificación de Dispositivos
      • Local Area Network (LAN)
      • Sub redes
      • Procolo ARP
      • Protocolo DHCP
    • 📓Pentesting
      • OSSTMM
      • OWASP
      • NCSC CAF
  • Sistemas Operativos
    • Linux
      • Comandos
    • Windows
      • Comandos
  • Enumeración
    • Enumeracion de red
      • Enumeracion de Hosts
      • Enumeracion de Puertos y servicios
    • FootPrinting
      • Domain Information
      • FTP
      • SMB
      • NFS
      • DNS
      • SMTP
      • IMAP-POP3
      • SNMP
      • MySQL
      • MSSQL
      • Oracle TNS
      • IPMI
      • Linux Remote Management Protocols
      • Windows Remote Management Protocols
    • Enumeración web
      • Uso de google dorks
      • Whois
      • Dig
      • Enumeraciónde subdominios
      • Enumeración automatizada
  • Hacking Web
    • Ataques Comunes
      • Fuzzing
      • Sub dominios
      • SQL Injection
      • Cross-Site Scripting
      • Local File Inclusion
      • Remote File Inclusion
      • File Upload Attacks
      • Command Injections
    • Otras explotaciones
  • Escalada de Privilegios
    • 📕Linux
      • Enumeración automatizada - Tools
      • Kernel Exploit
      • Sudo
      • SUID
      • Capabilities
      • Cron Jobs
      • Path
      • NFS
    • 📕Windows
      • Enumeración automatizada - Tools
      • Harvesting Passwords from Usual Spots
      • Other Quick Wins
      • Abusing Service Misconfigurations
      • Abusing dangerous privileges
      • Abusing vulnerable software
  • Guias y Herramientas
    • Git
    • Buffer Over Flow
    • MetaSploit
      • Introducción
      • Modules
      • Targets
      • Payloads
      • Encoders
      • Sessions
    • Nmap
    • Pivoting Tunneling Port Forwarning
      • Port Forwarding SSH
      • Pivoting Metasploit
      • Socat Redirection with a Reverse Shell
      • Socat Redirection with a Bind Shell
      • Others tools for pivoting
    • Transferencias de Archivos
      • Evading Detection
      • Linux File Transfer Methods
      • Miscellaneous File Transfer Methods
      • Transferring Files with Code
      • Windows File Transfer Methods
      • Otros
        • Usando ICMP
        • Usando ncat y tar
    • Shell y Payloads
      • Spawning shell interactiva
      • Conexión de RDP
    • Password Attacks
      • Cracking
      • Windows Local Password Attacks
      • Linux Local Password Attacks
      • Windows Lateral Movement
    • Fortinet
      • Configuración estática de Firewall
      • Licencia
      • Configuración de interfaces
      • Primera política
      • Rutas estaticas
  • Red Team Path - THM
    • Enumeración
      • Linux
      • Windows
    • Movimiento lateral
      • Movimiento Lateral
    • Pivoting
      • PortForwarining y pivoting
    • Host Evasion
      • Windows Internal
      • Introduccion a Windows
      • Abusing Windows Internal
      • Introducción a Antivirus
      • AV Evasion ShellCode
      • Principios de Ofuscación
      • Evasión de Firmas
      • Bypass UAC
      • Runtime Detection Evasion
      • Evading Logging and Monitoring
      • Living Off the Land
    • Networking Security Evasión
      • Network Security Solutions
      • Firewalls
      • Sandbox Evasion
    • Comprometiendo un directorio activo
      • Active Directory Basics
      • Breaching Active Directory
      • Enumerating Active Directory
      • Exploiting Active Directory
      • Persisting Active Directory
      • Credentials Harvesting
Con tecnología de GitBook
En esta página
  • Sistema
  • Usuarios
  • Redes
  • Servicios en uso
  1. Red Team Path - THM
  2. Enumeración

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 -releaseen /etc/. Correr ls /etc/*-releasenos ayuda a encontrar dichos archivos. Veamos cómo se ven las cosas en CentOS Linux.

user@TryHackMe$ ls /etc/*-release
/etc/centos-release  /etc/os-release  /etc/redhat-release  /etc/system-release
$ cat /etc/os-release 
NAME="CentOS Linux"
VERSION="7 (Core)"
[...]

Probemos en un sistema Fedora.

user@TryHackMe$ ls /etc/*-release
/etc/fedora-release@  /etc/os-release@  /etc/redhat-release@  /etc/system-release@
$ cat /etc/os-release
NAME="Fedora Linux"
VERSION="36 (Workstation Edition)"
[...]

Podemos encontrar el nombre del sistema usando el comando hostname.

user@TryHackMe$ hostname
rpm-red-enum.thm

Varios archivos en un sistema pueden proporcionar mucha información útil. En particular, considere lo siguiente /etc/passwd, /etc/groupy /etc/shadow. Cualquier usuario puede leer los archivos passwdy group. Sin embargo, el shadowarchivo 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.

user@TryHackMe$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
[...]
michael:x:1001:1001::/home/michael:/bin/bash
peter:x:1002:1002::/home/peter:/bin/bash
jane:x:1003:1003::/home/jane:/bin/bash
randa:x:1004:1004::/home/randa:/bin/bash

$ cat /etc/group
root:x:0:
[...]
michael:x:1001:
peter:x:1002:
jane:x:1003:
randa:x:1004:

$ sudo cat /etc/shadow
root:$6$pZlRFi09$qqgNBS.00qtcUF9x0yHetjJbXsw0PAwQabpCilmAB47ye3OzmmJVfV6DxBYyUoWBHtTXPU0kQEVUQfPtZPO3C.:19131:0:99999:7:::
[...]
michael:$6$GADCGz6m$g.ROJGcSX/910DEipiPjU6clo6Z6/uBZ9Fvg3IaqsVnMA.UZtebTgGHpRU4NZFXTffjKPvOAgPKbtb2nQrVU70:19130:0:99999:7:::
peter:$6$RN4fdNxf$wvgzdlrIVYBJjKe3s2eqlIQhvMrtwAWBsjuxL5xMVaIw4nL9pCshJlrMu2iyj/NAryBmItFbhYAVznqRcFWIz1:19130:0:99999:7:::
jane:$6$Ees6f7QM$TL8D8yFXVXtIOY9sKjMqJ7BoHK1EHEeqM5dojTaqO52V6CPiGq2W6XjljOGx/08rSo4QXsBtLUC3PmewpeZ/Q0:19130:0:99999:7:::
randa:$6$dYsVoPyy$WR43vaETwoWooZvR03AZGPPKxjrGQ4jTb0uAHDy2GqGEOZyXvrQNH10tGlLIHac7EZGV8hSIfuXP0SnwVmnZn0:19130:0:99999:7:::

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/.

user@TryHackMe$ ls -lh /var/mail/
total 4.0K
-rw-rw----. 1 jane      mail   0 May 18 14:15 jane
-rw-rw----. 1 michael   mail   0 May 18 14:13 michael
-rw-rw----. 1 peter     mail   0 May 18 14:14 peter
-rw-rw----. 1 randa     mail   0 May 18 14:15 randa
-rw-------. 1 root      mail 639 May 19 07:37 root

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 -qaque 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.

user@TryHackMe$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                  Version                            Architecture Description
+++-=====================================-==================================-============-===============================================================================
ii  accountsservice                       0.6.55-0ubuntu12~20.04.5           amd64        query and manipulate user account information
ii  adduser                               3.118ubuntu2                       all          add and remove users and groups
ii  alsa-topology-conf                    1.2.2-1                            all          ALSA topology configuration files
ii  alsa-ucm-conf                         1.2.2-1ubuntu0.13                  all          ALSA Use Case Manager configuration files
ii  amd64-microcode                       3.20191218.1ubuntu1                amd64        Processor microcode firmware for AMD CPUs
[...   ]
ii  zlib1g-dev:amd64                      1:1.2.11.dfsg-2ubuntu1.3           amd64        compression library - development

Usuarios

Archivos como /etc/passwdrevelar 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.

user@TryHackMe$ who
root     tty1         2022-05-18 13:24
jane     pts/0        2022-05-19 07:17 (10.20.30.105)
peter    pts/1        2022-05-19 07:13 (10.20.30.113)

Podemos ver que el usuario rootha iniciado sesión en el sistema directamente, mientras que los usuarios janeestán peterconectados a través de la red, y podemos ver sus direcciones IP.

Tenga en cuenta que whono debe confundirse con whoamiel que imprime su identificación de usuario efectiva.

user@TryHackMe$ whoami
jane

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, peterse está editando notes.txty janees el que se ejecuta wen este ejemplo.

user@TryHackMe$ w
 07:18:43 up 18:05,  3 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      Wed13   17:52m  0.00s  0.00s less -s
jane     pts/0    10.20.30.105     07:17    3.00s  0.01s  0.00s w
peter    pts/1    10.20.30.113     07:13    5:23   0.00s  0.00s vi notes.txt

Para imprimir el ID de usuario y grupo real y efectivo, puede emitir el comando id(para ID).

user@TryHackMe$ id
uid=1003(jane) gid=1003(jane) groups=1003(jane) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

¿Quieres saber quién ha estado usando el sistema recientemente? lastmuestra 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 randapermaneció conectado durante casi 17 horas, mientras que el usuario michaelcerró la sesión después de cuatro minutos.

user@TryHackMe$ last
jane     pts/0        10.20.30.105     Thu May 19 07:17   still logged in   
peter    pts/1        10.20.30.113     Thu May 19 07:13   still logged in   
michael  pts/0        10.20.30.1       Thu May 19 05:12 - 05:17  (00:04)    
randa    pts/1        10.20.30.107     Wed May 18 14:18 - 07:08  (16:49)    
root     tty1                          Wed May 18 13:24   still logged in
[...]

Finalmente, cabe mencionar que sudo -lenumera 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 ens33con la dirección IP 10.20.30.129y la máscara de subred 255.255.255.0tal como están 24.

user@TryHackMe$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:a2:0e:7e brd ff:ff:ff:ff:ff:ff
    inet 10.20.30.129/24 brd 10.20.30.255 scope global noprefixroute dynamic ens33
       valid_lft 1580sec preferred_lft 1580sec
    inet6 fe80::761a:b360:78:26cd/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

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.

user@TryHackMe$ cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain thm
nameserver 10.20.30.2

netstates 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.

Opción
Descripción

-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 -pltdevolverá programas que escuchan en sockets TCP. Como podemos ver en el resultado del terminal a continuación, sshdestá escuchando en el puerto SSH, mientras que masterestá 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 netstatcomo root o utilizar sudo netstat.

user@TryHackMe$ sudo netstat -plt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN      978/sshd            
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN      1141/master         
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      978/sshd            
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN      1141/master

netstat -atupnMostrará todas las conexiones TCP y UDP escuchadas y establecidas y los nombres de los programas con direcciones y puertos en formato numérico .

user@TryHackMe$ sudo netstat -atupn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      978/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1141/master         
tcp        0      0 10.20.30.129:22         10.20.30.113:38822        ESTABLISHED 5665/sshd: peter [p 
tcp        0      0 10.20.30.129:22         10.20.30.105:38826        ESTABLISHED 5723/sshd: jane [pr 
tcp6       0      0 :::22                   :::*                    LISTEN      978/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1141/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           640/chronyd         
udp        0      0 0.0.0.0:68              0.0.0.0:*                           5638/dhclient       
udp6       0      0 ::1:323                 :::*                                640/chronyd

Se podría pensar que usarlo nmapantes 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.

lsofsignifica 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 peterestá conectado al servidor rpm-red-enum.thmen el sshpuerto. Tenga en cuenta que para obtener la lista completa de programas coincidentes, debe ejecutarlo lsofcomo root o utilizar sudo lsof.

user@TryHackMe$ sudo lsof -i
COMMAND   PID      USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
chronyd   640    chrony    5u  IPv4  16945      0t0  UDP localhost:323 
chronyd   640    chrony    6u  IPv6  16946      0t0  UDP localhost:323 
sshd      978      root    3u  IPv4  20035      0t0  TCP *:ssh (LISTEN)
sshd      978      root    4u  IPv6  20058      0t0  TCP *:ssh (LISTEN)
master   1141      root   13u  IPv4  20665      0t0  TCP localhost:smtp (LISTEN)
master   1141      root   14u  IPv6  20666      0t0  TCP localhost:smtp (LISTEN)
dhclient 5638      root    6u  IPv4  47458      0t0  UDP *:bootpc 
sshd     5693     peter    3u  IPv4  47594      0t0  TCP rpm-red-enum.thm:ssh->10.20.30.113:38822 (ESTABLISHED)
[...]

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 :25a 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.

user@TryHackMe$ sudo lsof -i :25
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
master  1141 root   13u  IPv4  20665      0t0  TCP localhost:smtp (LISTEN)
master  1141 root   14u  IPv6  20666      0t0  TCP localhost:smtp (LISTEN)

Servicios en uso

Obtener una instantánea de los procesos en ejecución puede proporcionar muchas ideas. psle permite descubrir los procesos en ejecución y mucha información sobre ellos.

Puede enumerar todos los procesos del sistema usando ps -e, donde -eselecciona todos los procesos. Para obtener más información sobre el proceso, puede agregar -fpara formato completo y -lpara formato largo. Experimente con ps -e, ps -efy ps -el.

Puede obtener resultados comparables y ver todos los procesos usando la sintaxis BSD: ps axo ps aux. Tenga en cuenta que ay xson 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 ues para detalles sobre el usuario que tiene el proceso.

Opción
Descripción

-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 axjfun á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

user@TryHackMe$ ps axf
   PID TTY      STAT   TIME COMMAND
     2 ?        S      0:00 [kthreadd]
     4 ?        S<     0:00  \_ [kworker/0:0H]
     5 ?        S      0:01  \_ [kworker/u256:0]
[...]
   978 ?        Ss     0:00 /usr/sbin/sshd -D
  5665 ?        Ss     0:00  \_ sshd: peter [priv]
  5693 ?        S      0:00  |   \_ sshd: peter@pts/1
  5694 pts/1    Ss     0:00  |       \_ -bash
  5713 pts/1    S+     0:00  |           \_ vi notes.txt
  5723 ?        Ss     0:00  \_ sshd: jane [priv]
  5727 ?        S      0:00      \_ sshd: jane@pts/0
  5728 pts/0    Ss     0:00          \_ -bash
  7080 pts/0    R+     0:00              \_ ps axf
   979 ?        Ssl    0:12 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
   981 ?        Ssl    0:07 /usr/sbin/rsyslogd -n
  1141 ?        Ss     0:00 /usr/libexec/postfix/master -w
  1147 ?        S      0:00  \_ qmgr -l -t unix -u
  6991 ?        S      0:00  \_ pickup -l -t unix -u
  1371 ?        Ss     0:00 login -- root
  1376 tty1     Ss     0:00  \_ -bash
  1411 tty1     S+     0:00      \_ man man
  1420 tty1     S+     0:00          \_ less -s
[...]

Para resumir, recuerde utilizar ps -efu ps auxobtener una lista de todos los procesos en ejecución. Considere canalizar la salida greppara mostrar líneas de salida con ciertas palabras. La salida del terminal a continuación muestra las líneas que petercontienen.

user@TryHackMe$ ps -ef | grep peter
root       5665    978  0 07:11 ?        00:00:00 sshd: peter [priv]
peter      5693   5665  0 07:13 ?        00:00:00 sshd: peter@pts/1
peter      5694   5693  0 07:13 pts/1    00:00:00 -bash
peter      5713   5694  0 07:13 pts/1    00:00:00 vi notes.txt
AnteriorEnumeraciónSiguienteWindows

Última actualización hace 10 meses