Как выудить пароль авторизации из Zyxel

Discussion in 'Беспроводные технологии/Wi-Fi/Wardriving' started by C0D3BR34K3R, 2 Jun 2015.

  1. C0D3BR34K3R

    C0D3BR34K3R Well-Known Member

    Joined:
    1 Jun 2015
    Messages:
    88
    Likes Received:
    468
    Reputations:
    3
    Как выудить пароль авторизации из роутеров Zyxel с прошивками V2?
    В веб-морде, понятное дело, его не видно.
    В конфиге он в зашифрованном виде:
    authentication password ns3 BiEjZE6GOPmOmTtDIO0Gtcw+
    Как его можно расшифровать?
     
    #1 C0D3BR34K3R, 2 Jun 2015
    Last edited: 1 Mar 2017
  2. atlas28

    atlas28 Active Member

    Joined:
    23 May 2015
    Messages:
    224
    Likes Received:
    173
    Reputations:
    1
    Столкнулся с такой же проблемой, поэтому апну тему. Пароль шифруется каким-то алгоритмом, но роутер должен его знать для установки соединения, поэтому это не хэш, и его можно как-то расшифровать. В моем случае дело выглядит так:
    Code:
    authentication password ns3 vqF6abt3B+LJFy5gvGL4yqwz
    Вдобавок напишу, что есть известный пароль, зашифрованный таким же образом:
    Code:
    authentication wpa-psk ns3 ddAt+Dg8+NDEtPBiduuQJYRz
    пароль Do4WcR5w
     
  3. VasiliyP

    VasiliyP Elder - Старейшина

    Joined:
    30 Aug 2011
    Messages:
    365
    Likes Received:
    676
    Reputations:
    11
    Code:
    NQ17+cTHh4NPC5DnuGzQSKh5:DEN1122336699
    vqF6abt3B+LJFy5gvGL4yqwz:a1c610f3
     
  4. atlas28

    atlas28 Active Member

    Joined:
    23 May 2015
    Messages:
    224
    Likes Received:
    173
    Reputations:
    1
    Круто) А что за алгоритм тут?
     
  5. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    Полагаю, тот же.

    Какой-нибудь Base64(AES128(...)), в общем прошивку реверсить надо.
     
  6. VasiliyP

    VasiliyP Elder - Старейшина

    Joined:
    30 Aug 2011
    Messages:
    365
    Likes Received:
    676
    Reputations:
    11
    Да, что-то похожее по сути.
     
  7. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    616
    Likes Received:
    3,833
    Reputations:
    171
    Code:
    #!/usr/bin/env python3
    #
    # zyxel_scramble.py
    #
    # author: Felis-Sapiens
    #
    # Decode password from ZyXEL config (NDMS V2)
    
    import sys
    from base64 import b64decode, b64encode
    from hashlib import md5
    
    def first_step(password, x1, x2):
        x1 &= 0xff
        x2 &= 0xff
        for i in range(len(password)):
            password[i] = (password[i] ^ x2) & 0xff
            x2, x1 = x1 + x2, x2
        return password
    
    def second_step(password):
        x = 0
        for b in password:
            x ^= b
        for i in range(1,8):
            a = ((x >> i) ^ (~x << i)) & 0xff
            x = ((a << i) ^ (~a ^ x)) & 0xff
        for i in range(len(password)):
            password[i] ^= x
        return password
    
    
    def scramble_decode(password):
        if len(password) % 4 != 0:
            password += '=' * (4 - len(password) % 4)
     
        password = list(b64decode(password))
        length = len(password)
        if length not in [0x12, 0x24, 0x48]:
            print('ERROR: invalid input length')
            return
     
        a2 = length // 7
        x2 = password[a2]
        del password[a2]
     
        a1 = x2 % (length - 1)
        x1 = password[a1]
        del password[a1]
     
        password = second_step(password)
        password = first_step(password, x1, x2)
     
        zero_pos = password.index(0)
        if zero_pos != -1:
            length = zero_pos
        return bytes(password[:length]).decode()
    
    def scramble_encode(password):
        old_length = len(password)
        length = len(password) + 3
        if length < 0x13:
            length = 0x12
        elif length < 0x25:
            length = 0x24
        elif length < 0x49:
            length = 0x48
        else:
            print('ERROR: password is too long')
            return
     
        password = password.encode()
        md5_digest = md5(password).digest()
     
        password = list(password)
        if length != old_length:
            password.append(0)
            for i in range(old_length+1, length-2):
                password.append((password[i-old_length-1] * 2 + md5_digest[2 + i%14]) & 0xff)
     
        x1 = md5_digest[0]
        x2 = md5_digest[1]
        password = first_step(password, x1, x2)
        password = second_step(password)
        password.insert(x2 % (length - 1), x1)
        password.insert(length // 7, x2)
        return b64encode(bytes(password))
    
    def main():
        if len(sys.argv) < 3:
            print('Usage: zyxel_scramble.py decode|encode password')
            return
     
        if sys.argv[1] == 'decode':
            password = scramble_decode(sys.argv[2])
        elif sys.argv[1] == 'encode':
            password = scramble_encode(sys.argv[2])
        else:
            print('ERROR: unknown command', sys.argv[1])
            return
        if password is not None:
            print(password)
    
    if __name__ == '__main__':
        main()
     
    #7 Felis-Sapiens, 3 Nov 2016
    Last edited: 19 Jun 2017
    vyache, USER_X, ZodiaX and 24 others like this.
  8. Anton91x

    Anton91x Member

    Joined:
    15 May 2015
    Messages:
    18
    Likes Received:
    8
    Reputations:
    0
    Можно и так:
    пароль WPA2 и PPPoE/PPTP/L2TP шифруются одинаково
    просто сохраняет startup-config, открывает его блокнотом и копируем пароль провайдера вместо Wi-Fi пароля, скармливаем startup-config роутеру и смотрим пароль в разделе беспроводной сети
    :)
     
    #8 Anton91x, 19 Nov 2016
    Last edited: 19 Nov 2016
    Kolhozan likes this.
  9. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    А потом роутер внезапно пропадает (меняет IP, выключается, etc.) и хозяин остаётся без вафли. И у вас, как правило, меньше суток, чтобы вновь его найти и исправить. Ибо после зачастую роутер подвергается ресету, либо перенастройке с лучшей защитой.

    Этот способ удобен только для первого раза.
     
    USER_X, X-ReY-X, Payer and 1 other person like this.
  10. dokker

    dokker Member

    Joined:
    19 Nov 2016
    Messages:
    10
    Likes Received:
    14
    Reputations:
    0
    Если модем поддерживается то по идеи RouterPassView должен вытащить.
     
  11. Anton91x

    Anton91x Member

    Joined:
    15 May 2015
    Messages:
    18
    Likes Received:
    8
    Reputations:
    0
    Просто предложил как вариант, способ удобен тем, что не надо разбираться в коде и использовать стороннее ПО
    Если работать в видимости роутера, то все можно легко вернуть назад
    Интернет пропадет у хозяина на 2 минуты, он этого просто не заметит, и делать это надо когда список клиентов пуст
    Через Router Scan да, способ непригоден, одноко можно найти другой ZyxEL и выполнить восстановление на нем, алгоритм одинаковый у всех моделей
    Не всегда требуется украсть чужой пароль, иногда есть необходимость восстановить свой забытый
     
  12. VasiliyP

    VasiliyP Elder - Старейшина

    Joined:
    30 Aug 2011
    Messages:
    365
    Likes Received:
    676
    Reputations:
    11
    Можно гостевую wi-fi сеть поднять, скрытую, и через неё смотреть. Основную не трогать. И нет нужды полностью конфиг заливать - нужные несколько команд можно в консоль ввести (NDMS V2).
    Может еще придумаете способ получения конфига, без пароля к вэб-морде, или как пароль к вэб-морде достать (кроме брута, конечно)?
     
  13. atlas28

    atlas28 Active Member

    Joined:
    23 May 2015
    Messages:
    224
    Likes Received:
    173
    Reputations:
    1
    Это уже надо искать уязвимости, если они есть. Думаю, если бы был эксплоит, его бы уже давно добавили в RouterScan.
     
    binarymaster likes this.
  14. Roxy2008

    Roxy2008 New Member

    Joined:
    21 Jan 2017
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    помогие расшифровать пароль authentication wpa-psk ns3 u4LA0MYDP0iDy5KU0m+4iMLK

    authentication password ns3 siU1bFP1zgin2TgYAiF3K/Ax
     
    #14 Roxy2008, 21 Jan 2017
    Last edited: 21 Jan 2017
  15. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    616
    Likes Received:
    3,833
    Reputations:
    171
    qwerty123
    12345z
     
  16. Roxy2008

    Roxy2008 New Member

    Joined:
    21 Jan 2017
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    большое спасибо! а как это расшифровывается? через что? самому попробовать
     
  17. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    616
    Likes Received:
    3,833
    Reputations:
    171
    Пролистайте вверх до 7 поста.
     
    cakemake likes this.
  18. Roxy2008

    Roxy2008 New Member

    Joined:
    21 Jan 2017
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    а как скриптом пользоваться? подскажите плз
     
  19. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    616
    Likes Received:
    3,833
    Reputations:
    171
    В командной строке
    Code:
    python3 zyxel_scramble.py decode u4LA0MYDP0iDy5KU0m+4iMLK
    Нужен python 3. Если у вас Linux, то с большой вероятностью он уже есть.
     
    cakemake, hydra, Kolhozan and 4 others like this.
  20. Axsis

    Axsis New Member

    Joined:
    25 Jan 2017
    Messages:
    2
    Likes Received:
    1
    Reputations:
    0
    На коротких паролях всё ок, а на длинных не работает.
    Например такой пароль не расшифровывается: Nm46BLtTNsU/0CLvwM+2wv6ILjpQapQ2O4Y5t4CHZlJFW59Q
     
    Roxy2008 likes this.
Loading...