{"id":364,"date":"2017-06-26T20:41:15","date_gmt":"2017-06-26T19:41:15","guid":{"rendered":"https:\/\/www.attackdebris.com\/?p=364"},"modified":"2018-01-18T19:35:33","modified_gmt":"2018-01-18T19:35:33","slug":"kerberos-username-enumeration-username-wordlists","status":"publish","type":"post","link":"https:\/\/www.attackdebris.com\/?p=364","title":{"rendered":"Kerberos Username Enumeration &#8211; Top 500 Common Usernames"},"content":{"rendered":"<p><span style=\"text-decoration: underline;\"><strong>Kerberos Username Enumeration &#8211; Username Wordlists<\/strong><\/span><\/p>\n<p>I&#8217;ve been having a fair bit of joy with the<b>\u00a0<a href=\"https:\/\/www.attackdebris.com\/?p=311\">auxiliary\/gather\/kerberos_enumusers<\/a><\/b> metasploit\u00a0module on internal engagements, however you do need to provide the module with a good quality username wordlist or wordlists.<\/p>\n<p>On a recent engagement, using only the top 50 male and female userlists, I was able to guess 70 domain accounts from a possible 400, and of course several of them were found to be configured with the obligatory easily guessed password.<\/p>\n<p>Most domains I see tend to leverage some form of firstname, surname combination for domain user usernames. For example:<\/p>\n<p><strong>[Firstname].[surname]<\/strong> e.g: <strong>JACK.SMITH<\/strong><\/p>\n<p><strong>[Firstname, First Letter].[Surname]<\/strong> e.g.<strong> J.SMITH<br \/>\n<\/strong><\/p>\n<p>To that end I have created some username lists that are likely to identify valid usernames\u00a0when targeting large Windows domains. The lists are compiled from the top 500 most common firstname and surname as per the <strong>United Kingdom&#8217;s Office for National Statistics (ONS)<\/strong>.<\/p>\n<p>Initially, you will want to run a tool such as <a href=\"https:\/\/github.com\/lgandx\/Responder\">Responder<\/a> which will help you determine the format for usernames within the target environment e.g. L.FOWLER or LIAM.FOWLER. Indeed, I typically conduct this username enumeration exercise whilst Responder is running in the background.<\/p>\n<p><a href=\"https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/responder_username_format.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-397\" src=\"https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/responder_username_format.jpg\" alt=\"\" width=\"801\" height=\"184\" srcset=\"https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/responder_username_format.jpg 801w, https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/responder_username_format-300x69.jpg 300w, https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/responder_username_format-768x176.jpg 768w\" sizes=\"auto, (max-width: 801px) 100vw, 801px\" \/><\/a><\/p>\n<p>Once the format has been identified and assuming the format is used universally throughout the domain, Kerberos username enumeration can begin.<\/p>\n<p>The username lists I have created can be seen in the table below. I have also included the raw firstnames and surnames lists should you need to create a custom format:<\/p>\n\n<table id=\"tablepress-1\" class=\"tablepress tablepress-id-1\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Username List<\/th><th class=\"column-2\">Word Count<\/th><th class=\"column-3\">File Size<\/th><th class=\"column-4\">Example<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\"><a href=\"https:\/\/github.com\/attackdebris\/kerberos_enum_userlists\/blob\/master\/Female_First_Names_Top_500.txt\">Top 500 Female Firstnames<\/a><\/td><td class=\"column-2\">500<\/td><td class=\"column-3\">4K<\/td><td class=\"column-4\">AMELIA<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\"><a href=\"https:\/\/github.com\/attackdebris\/kerberos_enum_userlists\/blob\/master\/Male_First_Names_Top_500.txt\" target=\"_blank\">Top 500 Male First Names<\/a><\/td><td class=\"column-2\">500<\/td><td class=\"column-3\">4K<\/td><td class=\"column-4\">JACK<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\"><a href=\"https:\/\/github.com\/attackdebris\/kerberos_enum_userlists\/blob\/master\/Surnames_Top_500.txt\" target=\"_blank\">Top 500 Surnames<\/a><\/td><td class=\"column-2\">500<\/td><td class=\"column-3\">4K<\/td><td class=\"column-4\">SMITH<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\"><a href=\"https:\/\/github.com\/attackdebris\/kerberos_enum_userlists\/blob\/master\/Top_50_Female_Firstnames.Surname.txt\" target=\"_blank\">Top 50 Female Firstnames.Surnames<\/a><\/td><td class=\"column-2\">25000<\/td><td class=\"column-3\">330K<\/td><td class=\"column-4\">AMELIA.SMITH<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\"><a href=\"https:\/\/github.com\/attackdebris\/kerberos_enum_userlists\/blob\/master\/Top_50_Male_Firstnames.Surname.txt\" target=\"_blank\">Top 50 Male Firstnames.Surnames<\/a><\/td><td class=\"column-2\">31000<\/td><td class=\"column-3\">400K<\/td><td class=\"column-4\">JACK.SMITH <\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\"><a href=\"https:\/\/github.com\/attackdebris\/kerberos_enum_userlists\/blob\/master\/A-Z.Surnames.txt\" target=\"_blank\">A-Z.Surnames<\/a><\/td><td class=\"column-2\">13000<\/td><td class=\"column-3\">116K<\/td><td class=\"column-4\">A.SMITH to Z.LEONARD<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\"><a href=\"https:\/\/github.com\/attackdebris\/kerberos_enum_userlists\/blob\/master\/A.Surnames_Top_500.txt\" target=\"_blank\">A.Surnames<\/a><\/td><td class=\"column-2\">500<\/td><td class=\"column-3\">5K<\/td><td class=\"column-4\">A.SMITH<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\"><a href=\"https:\/\/github.com\/attackdebris\/kerberos_enum_userlists\/blob\/master\/B.Surnames_Top_500.txt\" target=\"_blank\">B.Surnames<\/a><\/td><td class=\"column-2\">500<\/td><td class=\"column-3\">5K<\/td><td class=\"column-4\">B.SMITH<\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td class=\"column-1\"><a href=\"https:\/\/github.com\/attackdebris\/kerberos_enum_userlists\/blob\/master\/C.Surnames_Top_500.txt\" target=\"_blank\">C.Surnames<\/a> etc.<\/td><td class=\"column-2\">500<\/td><td class=\"column-3\">5K<\/td><td class=\"column-4\">C.SMITH<\/td>\n<\/tr>\n<tr class=\"row-11\">\n\t<td class=\"column-1\"><a href=\"https:\/\/github.com\/attackdebris\/kerberos_enum_userlists\/blob\/master\/Z.Surnames_Top_500.txt\" target=\"_blank\">Z.Surnames<\/a><\/td><td class=\"column-2\">500<\/td><td class=\"column-3\">5K<\/td><td class=\"column-4\">Z.WYATT<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-1 from cache -->\n<p>Note: All of the username wordlists (A.Surname through to Z.Surname) can be downloaded from: <a href=\"https:\/\/github.com\/attackdebris\/kerberos_enum_userlists\">https:\/\/github.com\/attackdebris\/kerberos_enum_userlists<\/a><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Attack Walkthrough<\/strong><\/span><\/p>\n<p>I&#8217;ll now walk through the complete attack process:<\/p>\n<p>Initially we configure msf module <b>auxiliary\/gather\/kerberos_enumusers<\/b> with our wordlist:<\/p>\n<p><a href=\"https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/kerberos_enumusers_options.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-398\" src=\"https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/kerberos_enumusers_options.jpg\" alt=\"\" width=\"1028\" height=\"212\" srcset=\"https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/kerberos_enumusers_options.jpg 1028w, https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/kerberos_enumusers_options-300x62.jpg 300w, https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/kerberos_enumusers_options-768x158.jpg 768w, https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/kerberos_enumusers_options-1024x211.jpg 1024w\" sizes=\"auto, (max-width: 1028px) 100vw, 1028px\" \/><\/a><\/p>\n<p>We subsequently run the module. We&#8217;re obviously going to have a lot of failures but with no account lockout to worry about it doesn&#8217;t matter:<\/p>\n<p><a href=\"https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/kerberos_enumusers_running.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-399\" src=\"https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/kerberos_enumusers_running.jpg\" alt=\"\" width=\"806\" height=\"200\" srcset=\"https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/kerberos_enumusers_running.jpg 806w, https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/kerberos_enumusers_running-300x74.jpg 300w, https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/kerberos_enumusers_running-768x191.jpg 768w\" sizes=\"auto, (max-width: 806px) 100vw, 806px\" \/><\/a><\/p>\n<p>Running &#8220;creds&#8221; displays all of the successfully enumerated usernames:<\/p>\n<p><a href=\"https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/kerberos_enumusers_final.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-400\" src=\"https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/kerberos_enumusers_final.jpg\" alt=\"\" width=\"566\" height=\"387\" srcset=\"https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/kerberos_enumusers_final.jpg 566w, https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/kerberos_enumusers_final-300x205.jpg 300w\" sizes=\"auto, (max-width: 566px) 100vw, 566px\" \/><\/a><\/p>\n<p>The final stage is to leverage the <b>auxiliary<\/b><strong>\/scanner\/smb\/smb_login<\/strong> msf module to determine if any of our identified accounts are configured with weak passwords:<\/p>\n<p><a href=\"https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/smb_login1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-401\" src=\"https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/smb_login1.jpg\" alt=\"\" width=\"824\" height=\"398\" srcset=\"https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/smb_login1.jpg 824w, https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/smb_login1-300x145.jpg 300w, https:\/\/www.attackdebris.com\/wp-content\/uploads\/2017\/06\/smb_login1-768x371.jpg 768w\" sizes=\"auto, (max-width: 824px) 100vw, 824px\" \/><\/a><\/p>\n<p>Obviously, the domain&#8217;s account lockout policy should be taken into consideration when attempting to guess passwords. A sensible approach is to attempt a single password at a time, restricting yourself to 2 guesses (system set to lockout after 3 invalid attempts) or 4 guesses (system set to lockout after 5 invalid attempts) against a single account every 30-minutes. 30 minutes is a typical &#8220;<a href=\"https:\/\/technet.microsoft.com\/en-us\/library\/ee617251.aspx\">lockout observation window<\/a>&#8220;.<\/p>\n<p>Handily the <b>auxiliary<\/b><strong>\/scanner\/smb\/smb_login<\/strong> msf module&#8217;s &#8220;ABORT_ON_LOCKOUT&#8221; option will prevent too much damage being done, as long as it is enabled.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kerberos Username Enumeration &#8211; Username Wordlists I&#8217;ve been having a fair bit of joy with the\u00a0auxiliary\/gather\/kerberos_enumusers metasploit\u00a0module on internal engagements, however you do need to provide the module with a good quality username wordlist or wordlists. On a recent engagement, using only the top 50 male and female userlists, I was able to guess 70 &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/www.attackdebris.com\/?p=364\">Continue reading<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[13],"tags":[],"class_list":["post-364","post","type-post","status-publish","format-standard","hentry","category-passwords","item-wrap"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p3MDvd-5S","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.attackdebris.com\/index.php?rest_route=\/wp\/v2\/posts\/364","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.attackdebris.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.attackdebris.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.attackdebris.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.attackdebris.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=364"}],"version-history":[{"count":37,"href":"https:\/\/www.attackdebris.com\/index.php?rest_route=\/wp\/v2\/posts\/364\/revisions"}],"predecessor-version":[{"id":415,"href":"https:\/\/www.attackdebris.com\/index.php?rest_route=\/wp\/v2\/posts\/364\/revisions\/415"}],"wp:attachment":[{"href":"https:\/\/www.attackdebris.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.attackdebris.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.attackdebris.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}