All language subtitles for 9. Bypassing HSTS

af Afrikaans
sq Albanian
am Amharic
ar Arabic Download
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 1 00:00:00,400 --> 00:00:01,990 In the previous lecture 2 2 00:00:01,990 --> 00:00:06,567 we seen how to downgrade HTTPS websites to HTTP 3 3 00:00:07,470 --> 00:00:12,060 and this allowed us to basically see anything a user does 4 4 00:00:12,060 --> 00:00:14,930 on these websites because data in HTTP 5 5 00:00:14,930 --> 00:00:16,940 is sent in plain text. 6 6 00:00:16,940 --> 00:00:20,040 Therefore we were able to see the user names, the passwords, 7 7 00:00:20,040 --> 00:00:24,993 the URLs, and anything they do on HTTPS websites. 8 8 00:00:26,110 --> 00:00:27,200 At the end of the lecture, 9 9 00:00:27,200 --> 00:00:29,400 I also showed you that the method 10 10 00:00:29,400 --> 00:00:32,530 will not work against Facebook, Twitter, 11 11 00:00:32,530 --> 00:00:36,393 and other websites that use HSTS. 12 12 00:00:37,340 --> 00:00:40,610 The reason why it won't work against these websites, 13 13 00:00:40,610 --> 00:00:45,610 because modern web browsers come with a list of websites 14 14 00:00:45,960 --> 00:00:50,463 that they should only load over HTTPS. 15 15 00:00:51,490 --> 00:00:54,330 See what we were doing in the previous lecture, 16 16 00:00:54,330 --> 00:00:58,050 whenever a browser requests a website, 17 17 00:00:58,050 --> 00:01:01,557 we load that website even if it uses HTTPS, 18 18 00:01:01,557 --> 00:01:05,700 but we always give him back the HTTP version. 19 19 00:01:05,700 --> 00:01:10,520 In HSTS, the browser knows that this website, for example, 20 20 00:01:10,520 --> 00:01:15,500 facebook.com should always be loaded over HTTPS. 21 21 00:01:15,500 --> 00:01:18,660 So even before sending this request to us, 22 22 00:01:18,660 --> 00:01:21,640 it will always send it in HTTPS 23 23 00:01:21,640 --> 00:01:24,240 and it'll always only accept it 24 24 00:01:24,240 --> 00:01:26,123 if it comes back as HTTPS. 25 25 00:01:27,050 --> 00:01:31,230 So there is nothing we can do really once we become the man 26 26 00:01:31,230 --> 00:01:33,490 in the middle because the browser 27 27 00:01:33,490 --> 00:01:35,630 is doing this check locally, 28 28 00:01:35,630 --> 00:01:37,760 it's checking this against a list 29 29 00:01:37,760 --> 00:01:41,063 that is stored on the computer itself. 30 30 00:01:42,160 --> 00:01:45,050 Therefore, the only practical solution 31 31 00:01:45,050 --> 00:01:50,050 at the moment to bypass HSTS is to make the browser think 32 32 00:01:51,450 --> 00:01:54,253 that it is loading another website. 33 33 00:01:55,620 --> 00:01:59,540 To do this, we're gonna replace all HSTS links 34 34 00:01:59,540 --> 00:02:02,370 in loaded pages to similar links, 35 35 00:02:02,370 --> 00:02:04,890 but they're not the same links. 36 36 00:02:04,890 --> 00:02:09,890 For example, we can replace facebook.com with facebook.corn. 37 37 00:02:10,350 --> 00:02:13,710 Now I know this seems very suspicious, 38 38 00:02:13,710 --> 00:02:17,070 but trust me, when it goes into the URL bar, 39 39 00:02:17,070 --> 00:02:19,210 the RN here at the middle, 40 40 00:02:19,210 --> 00:02:22,103 it'll seem very similar to the M letter. 41 41 00:02:23,020 --> 00:02:24,240 Another way of doing this, 42 42 00:02:24,240 --> 00:02:28,000 you can replace twitter.com with twiter.com 43 43 00:02:28,000 --> 00:02:31,323 but with a single T here instead of a double T, 44 44 00:02:32,530 --> 00:02:35,340 I know this sounds a little bit confusing right now, 45 45 00:02:35,340 --> 00:02:37,920 but let me go and do it practically 46 46 00:02:37,920 --> 00:02:40,493 and you will see how this is gonna work. 47 47 00:02:41,470 --> 00:02:44,090 So right here I have my Cali machine 48 48 00:02:45,250 --> 00:02:49,400 and we're actually gonna use the HSTS caplets 49 49 00:02:49,400 --> 00:02:51,610 that we used in the previous lecture. 50 50 00:02:51,610 --> 00:02:53,900 So I've already showed you where to download it 51 51 00:02:53,900 --> 00:02:55,320 and where to place it, 52 52 00:02:55,320 --> 00:02:58,180 please make sure you use the caplet that I gave you 53 53 00:02:58,180 --> 00:03:00,030 in the resources of this lecture, 54 54 00:03:00,030 --> 00:03:02,540 not the one that comes with BetterCAP 55 55 00:03:02,540 --> 00:03:05,050 because the one that I gave you in the resources 56 56 00:03:05,050 --> 00:03:08,940 of this lecture is modified and it contains code 57 57 00:03:08,940 --> 00:03:10,710 that will actually replace 58 58 00:03:10,710 --> 00:03:13,370 the domain names as shown in here. 59 59 00:03:13,370 --> 00:03:15,920 The original one does not contain that code 60 60 00:03:15,920 --> 00:03:18,893 so it won't work as I'm gonna show you right now. 61 61 00:03:20,630 --> 00:03:22,700 So as shown in the previous lecture, 62 62 00:03:22,700 --> 00:03:24,750 I already have my caplet in here 63 63 00:03:24,750 --> 00:03:28,047 in user share BetterCAP caplets 64 64 00:03:28,047 --> 00:03:30,010 and this is the name of the caplet. 65 65 00:03:30,010 --> 00:03:35,010 If we go inside it, we have a file called hstshijack.cap. 66 66 00:03:35,700 --> 00:03:39,570 This is the configuration file of the caplet, 67 67 00:03:39,570 --> 00:03:41,350 so I'm gonna right-click it, 68 68 00:03:41,350 --> 00:03:44,200 I'm gonna open it with other application. 69 69 00:03:44,200 --> 00:03:47,030 I'm gonna click on view all applications 70 70 00:03:47,030 --> 00:03:50,550 and you wanna pick any text editor that you have. 71 71 00:03:50,550 --> 00:03:53,190 So I'm gonna keep this at Leafpad you might have 72 72 00:03:53,190 --> 00:03:56,400 to scroll down to find it, but I have it here. 73 73 00:03:56,400 --> 00:03:57,450 I'm gonna select 74 74 00:03:58,480 --> 00:04:01,160 and as you can see we have a normal text file 75 75 00:04:01,160 --> 00:04:04,070 with all the configurations that we can set 76 76 00:04:04,070 --> 00:04:07,030 and I've already pre-configured this for you. 77 77 00:04:07,030 --> 00:04:09,690 The main things that you wanna understand 78 78 00:04:09,690 --> 00:04:14,550 and maybe change is the targets and the replacements. 79 79 00:04:14,550 --> 00:04:18,440 So the targets are the domains that use HSTS 80 80 00:04:18,440 --> 00:04:20,240 that you want to replace. 81 81 00:04:20,240 --> 00:04:22,787 For example, I have twitter.com in here 82 82 00:04:22,787 --> 00:04:26,360 and I also have *.twitter.com 83 83 00:04:26,360 --> 00:04:28,060 basically when you use a star, 84 84 00:04:28,060 --> 00:04:30,510 this is a wild card and it basically means 85 85 00:04:30,510 --> 00:04:35,193 any subdomain .twitter.com is a target as well. 86 86 00:04:36,310 --> 00:04:37,410 Enter replacement, 87 87 00:04:37,410 --> 00:04:41,780 you wanna tell the program what to replace this target with. 88 88 00:04:41,780 --> 00:04:44,320 For example, whenever we see twitter.com 89 89 00:04:44,320 --> 00:04:47,160 we're gonna replace it with twitter.corn. 90 90 00:04:47,160 --> 00:04:50,070 Similar goes for Facebook and Apple 91 91 00:04:50,070 --> 00:04:52,267 and a few other domains that I set. 92 92 00:04:53,300 --> 00:04:55,880 You can also play around with the obfuscate 93 93 00:04:55,880 --> 00:04:57,780 and encode options. 94 94 00:04:57,780 --> 00:05:01,130 I've set both of these to false because basically 95 95 00:05:01,130 --> 00:05:02,050 what these will do, 96 96 00:05:02,050 --> 00:05:05,410 they'll obfuscate the code and encode it, 97 97 00:05:05,410 --> 00:05:08,490 but I noticed some browsers like Firefox 98 98 00:05:08,490 --> 00:05:11,690 will block obfuscated or encoded code. 99 99 00:05:11,690 --> 00:05:14,080 That's why I set both of these to false 100 100 00:05:14,080 --> 00:05:16,363 so that the code is left as is. 101 101 00:05:18,000 --> 00:05:19,370 Here in the payloads 102 102 00:05:19,370 --> 00:05:21,410 you can set any other JavaScript code 103 103 00:05:21,410 --> 00:05:23,710 that you want to inject leave this the same, 104 104 00:05:23,710 --> 00:05:27,740 we'll talk about JavaScript injection in a future lecture. 105 105 00:05:27,740 --> 00:05:31,440 Finally, you wanna make sure that the DNS spoof domains 106 106 00:05:31,440 --> 00:05:36,070 are set exactly the same as the replacements in here. 107 107 00:05:36,070 --> 00:05:39,303 So I literally copy this line and paste it here. 108 108 00:05:40,230 --> 00:05:42,310 Now I'm actually gonna keep all of this the same. 109 109 00:05:42,310 --> 00:05:44,830 I don't need to modify any of it, but like I said, 110 110 00:05:44,830 --> 00:05:46,950 if you are targeting different websites 111 111 00:05:46,950 --> 00:05:49,430 or if you want to use different replacements. 112 112 00:05:49,430 --> 00:05:52,710 For example, if you wanted to use a Twitter with a single T 113 113 00:05:52,710 --> 00:05:55,230 and keep this .com you can do that here. 114 114 00:05:55,230 --> 00:05:58,360 If you wanted to use a Facebook with a single O 115 115 00:05:58,360 --> 00:06:01,430 and keep this .com again instead of .corn, 116 116 00:06:01,430 --> 00:06:02,970 you can do it here. 117 117 00:06:02,970 --> 00:06:05,900 Once done, make sure you save and quit this file 118 118 00:06:06,948 --> 00:06:08,910 and we're ready to run the attack. 119 119 00:06:08,910 --> 00:06:12,110 So running this attack is actually gonna be identical 120 120 00:06:12,110 --> 00:06:14,230 to what we did in the previous lecture. 121 121 00:06:14,230 --> 00:06:18,460 You just wanna make sure you modify this file properly. 122 122 00:06:18,460 --> 00:06:21,980 So going back to BetterCAP, I'm gonna clear the screen, 123 123 00:06:21,980 --> 00:06:24,170 run BetterCAP with the same command, 124 124 00:06:24,170 --> 00:06:27,160 loading the spoof caplet so we can do 125 125 00:06:27,160 --> 00:06:29,440 all of the ARP spoofing commands 126 126 00:06:29,440 --> 00:06:33,000 and run the sniffer all automatically. 127 127 00:06:33,000 --> 00:06:33,833 And perfect. 128 128 00:06:33,833 --> 00:06:35,570 As you can see, everything is running 129 129 00:06:35,570 --> 00:06:37,770 as expected with no errors. 130 130 00:06:37,770 --> 00:06:39,820 If you run this and you get an error, 131 131 00:06:39,820 --> 00:06:42,693 just do exit and run BetterCAP again. 132 132 00:06:43,700 --> 00:06:45,620 Next we wanna run the caplet, 133 133 00:06:45,620 --> 00:06:49,020 the HSTS hijack caplet exactly as shown 134 134 00:06:49,020 --> 00:06:50,100 in the previous lecture. 135 135 00:06:50,100 --> 00:06:52,720 All we have to do is type HS tab, 136 136 00:06:52,720 --> 00:06:56,343 it'll auto complete for us and hit enter to run it. 137 137 00:06:57,250 --> 00:06:59,210 Again as you can see, no errors, 138 138 00:06:59,210 --> 00:07:01,493 so everything is working as expected. 139 139 00:07:02,410 --> 00:07:04,110 Let's go to the target machine 140 140 00:07:04,110 --> 00:07:06,563 and see how this is going to work. 141 141 00:07:07,890 --> 00:07:10,310 So I have my Windows machine right here. 142 142 00:07:10,310 --> 00:07:14,840 This is Chrome, the latest version in April, 2019 143 143 00:07:14,840 --> 00:07:16,710 and before I do anything, like I said, 144 144 00:07:16,710 --> 00:07:19,870 it's a good idea to always just remove the browsing data 145 145 00:07:21,840 --> 00:07:24,530 and before I actually load any websites, 146 146 00:07:24,530 --> 00:07:28,100 it is very important to understand that even 147 147 00:07:28,100 --> 00:07:30,560 with everything that we're doing right now, 148 148 00:07:30,560 --> 00:07:35,510 if you try to go to Facebook and type .com at the end here, 149 149 00:07:35,510 --> 00:07:36,580 it will not work. 150 150 00:07:36,580 --> 00:07:39,460 What we're doing right now will not work 151 151 00:07:39,460 --> 00:07:43,730 because Chrome right here has a list that is stored 152 152 00:07:43,730 --> 00:07:48,300 on this computer that says do not load facebook.com 153 153 00:07:48,300 --> 00:07:50,633 unless it is loaded over HTTPS. 154 154 00:07:51,630 --> 00:07:54,740 So if you type Facebook right here like this, 155 155 00:07:54,740 --> 00:07:56,370 it will not work. 156 156 00:07:56,370 --> 00:07:58,310 The only way we can do this 157 157 00:07:58,310 --> 00:08:02,920 is if the user first goes to a search engine. 158 158 00:08:02,920 --> 00:08:07,920 For example, google.ie for Ireland and then in Google, 159 159 00:08:08,280 --> 00:08:10,980 as you can see, Google doesn't use HSTS, 160 160 00:08:10,980 --> 00:08:15,340 so we bypass this using the normal HTTPS bypass 161 161 00:08:15,340 --> 00:08:18,130 and then if the user in here searches 162 162 00:08:18,130 --> 00:08:21,763 for their target website, for example, Facebook, 163 163 00:08:24,340 --> 00:08:28,020 then our script is gonna run in the background 164 164 00:08:28,020 --> 00:08:30,350 and it's going to replace all links 165 165 00:08:30,350 --> 00:08:35,350 in this page for facebook.com with facebook.corn. 166 166 00:08:35,850 --> 00:08:38,680 So if I actually hover over this, 167 167 00:08:38,680 --> 00:08:40,940 you'll see in the status bar, 168 168 00:08:40,940 --> 00:08:44,740 the website that will be loaded is facebook.corn, 169 169 00:08:44,740 --> 00:08:46,840 not facebook.com. 170 170 00:08:46,840 --> 00:08:49,840 This is fine here, it still says facebook.com 171 171 00:08:49,840 --> 00:08:53,320 but only in the code of the HTML page, 172 172 00:08:53,320 --> 00:08:57,910 facebook.com got replaced with facebook.corn. 173 173 00:08:57,910 --> 00:08:59,653 So if I click on this link, 174 174 00:09:01,070 --> 00:09:05,100 again, as you can see we get a normal Facebook page, 175 175 00:09:05,100 --> 00:09:10,050 but if you look here on top, you'll see there is no HTTPS. 176 176 00:09:10,050 --> 00:09:12,370 And if you look at the domain name, 177 177 00:09:12,370 --> 00:09:15,723 you'll see it says .corn, not .com. 178 178 00:09:16,600 --> 00:09:19,500 Again, like I said, you can actually keep this .com 179 179 00:09:19,500 --> 00:09:23,450 and use Facebook with one O or you can add an extra O, 180 180 00:09:23,450 --> 00:09:26,740 you can be as creative as you want with this. 181 181 00:09:26,740 --> 00:09:29,003 This is just an example that I'm giving you. 182 182 00:09:30,060 --> 00:09:31,510 Now, once we're here, 183 183 00:09:31,510 --> 00:09:34,300 we can login normally with my username, 184 184 00:09:34,300 --> 00:09:38,900 so zaid@zsecurity.org and put my password, 185 185 00:09:38,900 --> 00:09:41,850 one, two three four five six seven eight nine zero 186 186 00:09:42,770 --> 00:09:44,230 hit enter. 187 187 00:09:44,230 --> 00:09:48,113 And if we go back, scroll up. 188 188 00:09:50,370 --> 00:09:51,203 Perfect. 189 189 00:09:51,203 --> 00:09:52,036 As you can see, 190 190 00:09:52,036 --> 00:09:54,950 we have the username zaid@zsecurity.org 191 191 00:09:54,950 --> 00:09:58,023 and the password all the way up to nine zero. 192 192 00:09:59,550 --> 00:10:03,240 Now, like I said, the only way for this to work 193 193 00:10:03,240 --> 00:10:07,680 is if the user gets to Facebook through another website 194 194 00:10:07,680 --> 00:10:10,430 that does not use HSTS. 195 195 00:10:10,430 --> 00:10:15,430 If they go on the URL bar and type facebook.com themselves, 196 196 00:10:15,450 --> 00:10:17,880 we will not be able to do this. 197 197 00:10:17,880 --> 00:10:21,730 That's why this is considered as a partial solution 198 198 00:10:21,730 --> 00:10:23,353 and not a full solution. 17343

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.