Черная археология датамайнинга: что может быть эффективнее атаки по словарю?

    Для тех, кому лениво читать дальше, сразу скажу ответ: атака «логин равен паролю». По статистике, логин равный паролю встречается чаще, чем самый распространенный пароль из словаря. Далее в статье будут некоторые статистические исследования на эту тему, и история, с которой всё началось.





    Начать такое исследование меня побудила одна история, произошедшая в далёком 2000 году с неким молодым человеком. Не будучи хакером, он захотел взломать почтовый ящик одной особы. Её логин заканчивался на две цифры, примерно так: masha86@mail.com. После тривиальных паролей, которые не подошли, парень предположил, что пароль может выглядеть следующим образом: mashaDD, где DD – это две произвольные цифры. Сложность этой атаки всего 100 попыток, и примерно на двадцатой попытке пароль подошел, ящик был взломан. Чего только не сделаешь в молодости из-за ревности и ради любви...


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

    Для начала, кроме 6 млн. паролей от почтовых записей, я подключил к исследованию базу паролей с одного не-почтового сайта на 3.5 млн. записей. Это свежие записи (май 2015 года), содержащие достаточно мало невалидных паролей. Статистику по паролям с этого сайта я строил отдельно.

    Пароль равен логину
    Количество записей, где пароль равен логину: примерно 87 тысяч для почтовых паролей, 50 тысяч для паролей с сайта. Это много или мало? Для сравнения привожу два наиболее часто встречающиеся пароля (1 и 2 место в распределении). Также для удобства привожу значения в тысячных долях (‰) от общего количества паролей.

    Почтовые пароли     Пароли с сайта
    Количество Количество
    Пароль равен логину 86908 14.3 Пароль равен логину 49327 14.0
    Топ-1 «123456» 82830 13.6 Топ-1 «qwerty» 33322 9.5
    Топ-2 «qwerty» 53144 8.7 Топ-2 «123456» 21775 6.2


    Частичное совпадение
    Далее посмотрим, насколько часто встречаются случаи, где пароль – это небольшая модификация логина. Такие случаи не столь часты, зато это компенсируется небольшой сложностью атаки.

    Почтовые пароли Пароли с сайта
    Вид атаки Сложность Количество Количество
    Пароль и логин отличаются
    на один последний символ
    ~70 1835 0.30 20869  (!) 5.93
    Отличаются на два символа,
    причем на числа:
    100 1702 0.28 1226 0.35
    Для пароля добавили один символ ~100 5508 0.90 1930 0.55
    Или два ~10000 5087 0.84 3269 0.93
    Добавили 4, но только цифры от 100
    до 10000
    7267 1.19 3252 0.92


    По частоте, все эти случаи попадают в топ-50 наиболее распространенных паролей:

    Топ-50 почтовых паролей
    123456 82830
    qwerty 53144
    123456789 23286
    111111 13831
    qwertyuiop 12399
    qwe123 9021
    1234567890 8364
    1234567 7452
    12345 6420
    password 6410
    12345678 6374
    123321 6170
    7777777 5861
    123123 5533
    0 4977
    666666 4197
    1qaz2wsx 4181
    qazwsx 4143
    1q2w3e4r 3982
    654321 3760
    555555 3539
    123qwe 2973
    1q2w3e4r5t 2967
    zxcvbnm 2832
    qweqwe 2816
    gfhjkm 2806
    1q2w3e 2748
    klaster 2695
    112233 2565
    121212 2445
    987654321 2371
    159753 2338
    777777 2204
    qwer1234 2015
    1234qwer 1999
    qwerty123 1846
    1234 1801
    asdfgh 1779
    abc123 1722
    123654 1568
    222222 1557
    iloveyou 1508
    987654321 1432
    samsung 1427
    zxcvbn 1422
    ghbdtn 1313
    88888888 1311
    marina 1284
    131313 1268
    asdfghjkl 1243


    Топ-50 паролей с сайта
    qwerty 33322
    123456 21775
    (пустой пароль) 20002
    UsdopaA (боты) 16016
    123456789 8298
    1234567890 4117
    qwertyuiop 2247
    123321 2235
    1234567 2214
    1q2w3e4r5t 2142
    111111 2004
    1q2w3e4r 1682
    123qwe 1554
    123123 1364
    qazwsx 1319
    1q2w3e 1256
    qazwsxedc 1196
    qwe123 1186
    qweasdzxc 1126
    9379992 1020
    0 1018
    4815162342 1015
    iloveyou 991
    12345678 979
    666666 977
    zxcvbnm 957
    asdfgh 930
    Jskasgfdfjg 923
    gfhjkm 914
    qwertyuiop[] 904
    1234qwer 899
    1q2w3e4r5t6y 890
    qwerty123 839
    nastya 799
    555555 770
    987654321 755
    ghbdtn 746
    12345qwert 740
    159753 737
    loveyou 735
    1234554321 716
    7777777 711
    1qaz2wsx 708
    123123123 679
    samsung 670
    123qweasdzxc 662
    adidas 642
    asdfghjkl 641
    789456123 636




    Вывод
    Сейчас на многих почтовых порталах (но очень редко на обычных сайтах и форумах) нельзя задать пароль, равный логину. Однако, за всё время мне встретился только один сайт, в котором нельзя было задать пароль, прибавив один символ к логину. Сайт так и писал: «ваш пароль очень похож на логин». Однако такая ситуация в современном интернете скорее исключение.

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

    Конечно, если сравнивать интегральную сложность – атака по словарю несколько выгоднее. Зато, атаки модификацией логина не учитываются в системах безопасности даже на крупных порталах.

    R-код, если кому-то интересно
    ################################################
    
    DATA <- readRDS( file = "ClearData.rds" )
    
    ################################################
    ################################################
    
    # Всего записей: 3520000
    
    nrow(DATA)
    
    # Логин совпадает с паролем: 49327
    
    length( which( DATA$login == DATA$passwd) )
    
    ################################################
    
    # Для пароля добавили один символ: 1930
    
    length( 
      which( 
        substr( DATA$login ,0, nchar(DATA$login) ) ==
          substr( DATA$passwd ,0, nchar(DATA$passwd)-1 ) 
      )
    )
    
    # Или два: 3269
    
    length( 
      which( 
        substr( DATA$login ,0, nchar(DATA$login) ) ==
          substr( DATA$passwd ,0, nchar(DATA$passwd)-2 ) 
      )
    )
    
    ################################################
    
    # На четыре (но только на цифры): 3252
    
    length( 
      which( 
        (
          substr( DATA$login ,0, nchar(DATA$login) ) ==
            substr( DATA$passwd ,0, nchar(DATA$passwd)-4 ) 
        ) & 
          (
            grepl(
              "\\d\\d\\d\\d",    
              substr( DATA$passwd ,nchar(DATA$passwd)-3,nchar(DATA$passwd) )
            )
          )
      )
    )
    
    ################################################
    
    # Пароль и логин отличаются на один последний символ: 20869
    
    length( 
      which( 
              (
                substr( DATA$login ,0, nchar(DATA$login)-1 ) ==
                substr( DATA$passwd ,0, nchar(DATA$passwd)-1 ) 
              ) & ( DATA$login != DATA$passwd )
                
            )
    )
    
    ################################################
    
    # Отличаются на два символа (1477), причем на числа: 1226
    
    length( 
      which( 
        (
          substr( DATA$login ,0, nchar(DATA$login)-2 ) ==
            substr( DATA$passwd ,0, nchar(DATA$passwd)-2 ) 
        ) & ( DATA$login != DATA$passwd ) &
          (
              substr( DATA$login ,0, nchar(DATA$login)-1 ) !=
              substr( DATA$passwd ,0, nchar(DATA$passwd)-1 ) 
          ) &
          (
            grepl(
              "\\d\\d",    
              substr( DATA$passwd ,nchar(DATA$passwd)-1,nchar(DATA$passwd) )
            )
          )
      )
    )
    
    ################################################
    ################################################
    
    ### Строим топ паролей
    
    library(dplyr)
    
    tmpD <- DATA[,c(3,4)]
    
    PASS_SUM <- summarise(group_by(tmpD,passwd), count = sum(count) )
    
    PASS_SUM <- arrange(PASS_SUM,desc(count))
    
    # Количество уникальных паролей: 2132935
    nrow(subset(PASS_SUM, PASS_SUM$count==1))
    
    # Количество невалидных паролей: 887
    nrow(subset(PASS_SUM, PASS_SUM$count>64))
    
    PASS_100 <- PASS_SUM[1:100,]
    
    write.csv(PASS_100,file = "SpPassSum100.csv", row.names = F)
    
    ###########################################
    



    Предыдущий выпуск: Черная археология дата майнинга

    В следующем номере: сравнение базы почтовых паролей с базой паролей не-почтового сайта. Насколько полезны оказались утекшие в 2014 году почтовые пароли?

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 6

      +1
      Это все из за низкой культуры работы в интернет, человек не понимает и не проводит связь, что например увод пароля от почтовика, может заблокировать его телефон, выполнить перевод денег и прочее прочее
        +6
        В популярных паролях нет моего секретного 123jkl! Я защищён!!!
          +2
          «Оставьте пожалуйста Ваш электронный адрес, чтобы мы могли связаться» ;)
            +4
            123jkl@mail.ru
          0
          «9379992» заставил задуматься о влиянии СМИ…
            0
            >>атака «логин равен паролю»

            не даёт сломать конкретный аккаунт

            Only users with full accounts can post comments. Log in, please.