SMB attacks for dummies
¿Qué es SMB o Samba?
El bloque de mensajes de servidor (SMB, por sus iniciales en inglés) es un protocolo de intercambio de archivos cuyas raíces se remontan a mediados de 1980; se construye fuera de los servicios NetBIOS y NetBEUI, que dominaron la red de Windows antes de la llegada del protocolo TCP/IP en la década de 1990 y todavía tiene un lugar en la pequeña oficina y arquitecturas de planificación de redes empresariales. Este protocolo también se llama CIFS, aunque el nombre SMB tiene un uso más amplio. Los servidores SMB se utilizan para administrar y mantener los servicios de pequeñas y medianas empresas a través de una red o servicio de Active Directory en un entorno de red de Windows.
Hay dos versiones utilizadas del protocolo SMB distribuidas por Microsoft, la aplicación 1.0, que venía con Windows NT y se actualizó exhaustivamente con Windows 2000, y la implementación SMB2 que salió con Windows Vista. La aplicación 2.0 es compatible con la ejecución 1.0, pero ofrece incrementos significativos de rendimiento cuando todos los clientes de la red tienen la versión más reciente. Windows 7 introduce SMB 2.1 como un protocolo, que sigue siendo compatible en el nivel SMB-servidor con SMB 2.0.
¿Por qué SMB es uno de los ataques más comunes en windows?
Samba al ser un servicio de transmisión de archivos nos permite ver y descargar archivos, con ello del lado de la seguridad es una gran oportunidad, solo faltaría ejecución para lo cual se puede aprovechar de servicios ya sean web o una vulnerabilidad, como EternalBule o BlueGhost.
Herramientas
- nmblookup – Recolecta información de NetBIOS sobre el cliente TCP/IP usado para buscar nombres de NetBIOS.
- smbclient – Herramienta que permite acceder a archivos compartidos por SMB.
- nmap – Herramienta para realizar escaneos a puertos con soporte de scripts.
- rpcclient – Herramienta para ejecutar funciones de MS-RPC.
- enum4linux – Enumera varias funciones de smb.
Enumerar Hostname
La enumeración de hostname nos permite saber si es un servidor SMB y obtener grupos, usuarios, carpetas compartidas, y permisos.
nmblookup
nmblookup es utilizada para consultar nombres de NetBios y mapear las direcciones ip dentro de la red de trabajo que usan NetBios sobre consultas TCP/IP.
nmblookup -A [IP]
-A – look up by IP address
nmblookup -A [IP] [+] Finding open SMB ports.... [+] User SMB session establishd on [ip]... [+] IP: [ip]:445 Name: [ip] Disk Permissions ---- ----------- ADMIN$ NO ACCESS C$ NO ACCESS IPC$ NO ACCESS NETLOGON NO ACCESS Replicacion READ ONLY SYSVOL NO ACCESS
enum4linux
enum4linux es una herramienta de enumeración de windows y sistemas samba. Esta intenta ofrecer una funcionabilidad similar a enum.exe antes disponible en www.bindview.com.
Esta escrito en Perl y es básicamente incorpora todas las herramientas de smbclient, rpclient, net y nmblookup.
enum4linux -n Starting enum4linux v0.8.9 ( http://labs.portcullis.co.uk/application/enum4linux/ ) on Sun Aug 17 12:17:32 2014 ========================== | Target Information | ========================== Target ........... RID Range ........ 500-550,1000-1050 Username ......... '' Password ......... '' Known Usernames .. administrator, guest, krbtgt, domain admins, root, bin, none ====================================================== | Enumerating Workgroup/Domain on 192.168.1.200 | ====================================================== [+] Got domain/workgroup name: Tishca
nmap
Nmap (“Network Mapper”) es una herramienta libre y de código abierto que es utilizada para descubrir redes y realizar auditorias de seguridad. Nmap usa los paquetes ip en crudo de una forma novedosa para detectar dispositivos en la red, los servicios que esos dispositivos ofrecen, que sistema operativo esta corriendo, que tipo de filtros o firewalls contiene. Está desitnado para escaneos rápidos de redes grandes, pero funciona para un solo objetivo.
root@kali#nmap --script=smb-enum* --script-args=unsafe=1 -T5 Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-15 13:20 EDT Nmap scan report for 192.168.100.43 Host is up (0.00021s latency). Not shown: 996 closed ports PORT STATE SERVICE 80/tcp open http 139/tcp open netbios-ssn 445/tcp open microsoft-ds 2525/tcp open ms-v-worlds MAC Address: 08:00:27:7F:19:DE (Oracle VirtualBox virtual NIC) Host script results: |_smb-enum-domains: ERROR: Script execution failed (use -d to debug) |_smb-enum-groups: ERROR: Script execution failed (use -d to debug) | smb-enum-sessions: |_ | smb-enum-shares: | account_used: guest | \\192.168.100.43\IPC$: | Type: STYPE_IPC_HIDDEN | Comment: IPC Service (nitin server (Samba, Ubuntu)) | Users: 3 | Max Users: | Path: C:\tmp | Anonymous access: READ/WRITE | Current user access: READ/WRITE | \\192.168.100.43\print$: | Type: STYPE_DISKTREE | Comment: Printer Drivers | Users: 0 | Max Users: | Path: C:\var\lib\samba\printers | Anonymous access: |_ Current user access: |_smb-enum-users: ERROR: Script execution failed (use -d to debug) Nmap done: 1 IP address (1 host up) scanned in 311.49 seconds
Conseguir versión del servicio
Al saber la versión del servicio nos da la opción de buscar alguna vulnerabilidad para esa versión en especifico.
Metasploit
Metasploit es un framework que nos permite automatizar la explotación de equipos, así tanto como escaneos y enumeración de servicios.
root@kali# msfconsole %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% %%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% % %%%%%%%% %%%%%%%%%%% https://metasploit.com %%%%%%%%%%%%%%%%%%%%%%%% %% %% %%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% %% %%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% %%%%% %%%% %% %% % %% %% %%%%% % %%%% %% %%%%%% %% %%%% %% %% % %%% %%%% %%%% %% %%%% %%%% %% %% %% %%% %% %%% %%%%% %%%% %%%%%% %% %%%%%% %%%% %%% %%%% %% %% %%% %%% %% %% %%%%% %%%%%%%%%%%% %%%% %%%%% %% %% % %% %%%% %%%% %%% %%% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%% %%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% =[ metasploit v5.0.76-dev ] + -- --=[ 1971 exploits - 1088 auxiliary - 339 post ] + -- --=[ 558 payloads - 45 encoders - 10 nops ] + -- --=[ 7 evasion ] msf5 > use scanner/smb/smb_version msf5 auxiliary(scanner/smb/smb_version) > set rhosts 192.168.100.43 rhosts => 192.168.100.43 msf5 auxiliary(scanner/smb/smb_version) > exploit [*] 192.168.100.43:445 - Host could not be identified: Windows 6.1 (Samba 4.3.11-Ubuntu) [*] 192.168.100.43:445 - Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed
Accediendo a archivos compartidos
Mediante esta decnica podremos navegar, subir, bajar o leer archivos de el servidor SMB.
SMBCLIENT
Esta herramienta permite establecer una conexin con el servidor mediante la linea de comandos, permite navegar como si fuera un servicio ftp.
root@kali# smbclient -L host Server time is Sat Aug 10 15:58:27 1996 Timezone is UTC+10.0 Password: Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51] Server=[ZIMMERMAN] User=[] Workgroup=[WORKGROUP] Domain=[] Sharename Type Comment --------- ---- ------- ADMIN$ Disk Remote Admin public Disk Public C$ Disk Default share IPC$ IPC Remote IPC OReilly Printer OReilly print$ Disk Printer Drivers This machine has a browse list: Server Comment --------- ------- HOPPER Samba 1.9.15p8 KERNIGAN Samba 1.9.15p8 LOVELACE Samba 1.9.15p8 RITCHIE Samba 1.9.15p8 ZIMMERMAN