Найти в Дзене
НПО Эшелон

Мастер-класс "Сканер-ВС": чеклист перечисления SMB

Каждый аудитор обладает своими любимыми техниками при работе в консоли. Поделитесь в комментариях своим опытом. Мы же расскажем про основные приемы перечисления SMB. Утилиты Подробности Перечисление имен хостов nmblookup nmblookup -A [IP] Пример: root@scaner-vs:~# nmblookup -A [ip]
Looking up status of [ip]
[hostname] <00> - M <ACTIVE>
[hostname] <20> - M <ACTIVE>
WORKGROUP <00> - <GROUP> M <ACTIVE>
WORKGROUP <1e> - <GROUP> M <ACTIVE>
<03> - M <ACTIVE>
INet~Services <1c> - <GROUP> M <ACTIVE>
IS~[hostname] <00> - M <ACTIVE>
MAC Address = 00-50-56-XX-XX-XX
Получить список общих папок smbmap smbmap -H [ip/hostname] Данная команда покажет Вам расшаренные ресурсы на хосте, а также уровень доступа к ним. Пример: root@scaner-vs:/# smbmap -H [ip]
[+] Finding open SMB ports....
[+] User SMB session establishd on [ip]...
[+] IP: [ip]:445 Name: [ip]
Оглавление

Каждый аудитор обладает своими любимыми техниками при работе в консоли. Поделитесь в комментариях своим опытом. Мы же расскажем про основные приемы перечисления SMB.

Утилиты

  • nmblookup - собирает NetBIOS над TCP/IP клиентом, используется для поиска имен NetBIOS.
  • smbclient - клиент в стиле "ftp" для доступа к общим папкам SMB
  • nmap - общий сканер, с возможностью применять скрипты
  • rpcclient - инструмент для выполнения функций MS-RPC на стороне клиента
  • enum4linux - перечисляет различные функции smb
  • wireshark - инструмент для захвата и анализа сетевого трафика

Подробности

Перечисление имен хостов

nmblookup

nmblookup -A [IP]

  • -A - посмотреть по IP адресу

Пример:

root@scaner-vs:~# nmblookup -A [ip]
Looking up status of [ip]
[hostname] <00> - M <ACTIVE>
[hostname] <20> - M <ACTIVE>
WORKGROUP <00> - <GROUP> M <ACTIVE>
WORKGROUP <1e> - <GROUP> M <ACTIVE>
<03> - M <ACTIVE>
INet~Services <1c> - <GROUP> M <ACTIVE>
IS~[hostname] <00> - M <ACTIVE>

MAC Address = 00-50-56-XX-XX-XX

Получить список общих папок

smbmap

smbmap -H [ip/hostname]

Данная команда покажет Вам расшаренные ресурсы на хосте, а также уровень доступа к ним.

Пример:

root@scaner-vs:/# smbmap -H [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
Replication READ ONLY
SYSVOL NO ACCESS

Если Вы обладаете учетными данными, можете перезапустить для отображения с новым уровнем доступа:

root@scaner-vs:/# smbmap -H [ip] -d [domain] -u [user] -p [password]
[+] 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 READ ONLY
Replication READ ONLY
SYSVOL READ ONLY

smbclient

echo exit | smbclient -L \\\\[ip]

  • команда exit нужна для обработки запроса пароля, который может всплыть при обращении с пустым логином
  • -L - получить список "шар" для заданного хоста

Пример:

root@scaner-vs:~# smbclient -L \\[ip]
Enter WORKGROUP\root's password:

Sharename Type Comment
--------- ---- -------
IPC$ IPC Remote IPC
share Disk
wwwroot Disk
ADMIN$ Disk Remote Admin
C$ Disk Default share
Reconnecting with SMB1 for workgroup listing.

Server Comment
--------- -------

Workgroup Master
--------- -------

nmap

nmap --script smb-enum-shares -p 139,445 [ip]

  • --script smb-enum-shares - характерный скрипт перечисления smb
  • -p 139,445 - указание портов smb

Пример:

root@scaner-vs:~# nmap --script smb-enum-shares -p 139,445 [ip]
Starting Nmap 7.70 (
https://nmap.org ) at 2018-09-27 16:25 EDT
Nmap scan report for [ip]
Host is up (0.037s latency).

PORT STATE SERVICE
139/tcp open netbios-ssn
445/tcp open microsoft-ds
MAC Address: 00:50:56:XX:XX:XX (VMware)

Host script results:
| smb-enum-shares:
| account_used: guest
| \\[ip]\ADMIN$:
| Type: STYPE_DISKTREE_HIDDEN
| Comment: Remote Admin
| Anonymous access: <none>
| Current user access: <none>
| \\[ip]\C$:
| Type: STYPE_DISKTREE_HIDDEN
| Comment: Default share
| Anonymous access: <none>
| Current user access: <none>
| \\[ip]\IPC$:
| Type: STYPE_IPC_HIDDEN
| Comment: Remote IPC
| Anonymous access: READ
| Current user access: READ/WRITE
| \\[ip]\share:
| Type: STYPE_DISKTREE
| Comment:
| Anonymous access: <none>
| Current user access: READ/WRITE
| \\[ip]\wwwroot:
| Type: STYPE_DISKTREE
| Comment:
| Anonymous access: <none>
|_ Current user access: READ

Nmap done: 1 IP address (1 host up) scanned in 10.93 seconds

Проверка Нулевых Сессий

smbmap

smbmap -H [ip/hostname] покажет, что Вы сможете сделать с заданными учетными данными (или null session если без авторизации). Примеры есть выше.

rpcclient

rpcclient -U "" -N [ip]

  • -U "" - null session
  • -N - без пароля

Пример:

root@scaner-vs:~# rpcclient -U "" -N [ip]
rpcclient $
>

Отсюда уже можно запускать команды rpc.

smbclient

smbclient \\\\[ip]\\[share name]

Предпринять попытку подсоединиться к "шаре". На удачу можно попробовать и без пароля, вдруг повезёт :)

Пример:

root@scanner-vs:~/pwk/lab/public# smbclient \\\\[ip]\\share
Enter WORKGROUP\root's password:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Thu Sep 27 16:26:00 2018
.. D 0 Thu Sep 27 16:26:00 2018
New Folder (9) D 0 Sun Dec 13 05:26:59 2015
New Folder - 6 D 0 Sun Dec 13 06:55:42 2015
Shortcut to New Folder (2).lnk A 420 Sun Dec 13 05:24:51 2015

1690825 blocks of size 2048. 794699 blocks available

Проверка на уязвимости

nmap

nmap --script smb-vuln* -p 139,445 [ip]

  • --script smb-vuln* - запустит весь набор скриптов сканирования на уязвимости smb
  • -p 139,445 - smb порты

Пример:

root@scaner-vs:~# nmap --script smb-vuln* -p 139,445 [ip]
Starting Nmap 7.70 (
https://nmap.org ) at 2018-09-27 16:37 EDT
Nmap scan report for [ip]
Host is up (0.030s latency).

PORT STATE SERVICE
139/tcp open netbios-ssn
445/tcp open microsoft-ds
MAC Address: 00:50:56:XX:XX:XX (VMware)

Host script results:
| smb-vuln-ms06-025:
| VULNERABLE:
| RRAS Memory Corruption vulnerability (MS06-025)
| State: VULNERABLE
| IDs: CVE:CVE-2006-2370
| A buffer overflow vulnerability in the Routing and Remote Access service (RRAS) in Microsoft Windows 2000 SP4, XP SP1
| and SP2, and Server 2003 SP1 and earlier allows remote unauthenticated or authenticated attackers to
| execute arbitrary code via certain crafted "RPC related requests" aka the "RRAS Memory Corruption Vulnerability."
|
| Disclosure date: 2006-6-27
| References:
|
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-2370
|_
https://technet.microsoft.com/en-us/library/security/ms06-025.aspx
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: false
| smb-vuln-ms17-010:
| VULNERABLE:
| Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
| State: VULNERABLE
| IDs: CVE:CVE-2017-0143
| Risk factor: HIGH
| A critical remote code execution vulnerability exists in Microsoft SMBv1
| servers (ms17-010).
|
| Disclosure date: 2017-03-14
| References:
|
https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
|
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
|_
https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
|_smb-vuln-regsvc-dos: ERROR: Script execution failed (use -d to debug)

Nmap done: 1 IP address (1 host up) scanned in 5.58 seconds

Всеохватывающее Сканирование

enum4linux

enum4linux -a [ip]

  • -a - весь перечень

Пример вывода команды довольно длинный, однако стоит обратить внимание на следующее:

  • вывод схож с nmblookup
  • проверяются нулевые сессии
  • выводится список общих папок ("шар")
  • информация от домене
  • парольная политика
  • RID cycling output

Ручная Инспекция

Samba

ngrep это аккуратная утилита для "grepa" в сетевых данных. Запуск, наподобие ngrep -i -d tap0 's.?a.?m.?b.?a.*[[:digit:]]' port 139 в одном окне терминала и затем echo exit | smbclient -L [IP] - в другом, сдампит пачку информации, включая версию.

как получить версии самба ? смотрите скрипт с просторов Инета ! :)

#!/bin/sh
#Author: rewardone
#Description:
# Requires root or enough permissions to use tcpdump
# Will listen for the first 7 packets of a null login
# and grab the SMB Version
#Notes:
# Will sometimes not capture or will print multiple
# lines. May need to run a second time for success.
if [ -z $1 ]; then echo "Usage: ./smbver.sh RHOST {RPORT}" && exit; else rhost=$1; fi
if
[ ! -z $2 ]; then rport=$2; else rport=139; fi
tcpdump -s0 -n -i tap0 src $rhost and port $rport -A -c 7 2>/dev/null | grep -i "samba\|s.a.m" | tr -d '.' | grep -oP 'UnixSamba.*[0-9a-z]' | tr -d '\n' & echo -n "$rhost: " &
echo "exit" | smbclient -L $rhost 1>/dev/null 2>/dev/null
sleep 0.5
&& echo ""

Когды вы запустите его на машине с включенной службой Samba, вы получите следующие результаты:

root@scaner-vs:~/pwk/lab/public# ./smbver.sh [IP]
[IP]: UnixSamba 227a

Если сомневаемся, то  сможем проверить версию smb в дампе PCAP. В примере у нас  Unix Samba 2.2.3a:
Если сомневаемся, то сможем проверить версию smb в дампе PCAP. В примере у нас Unix Samba 2.2.3a:

Windows

Windows SMB гораздо сложнее, чем просто версия, но просматривая в wireshark мы получим набор информации о соединении. Например, мы сможем отфильтровать по ntlmssp.ntlmv2_response, чтобы увидеть траффик NTLMv2.