Contents

Säkerhetspodcasten #118 - Tools & Toolchains

Lyssna

mp3

Innehåll

I dagens avsnitt går panelen igenom de verktyg som används för att göra livet som säkerhetskonsult enklare.

Inspelat: 2018-02-07. Längd: 01:12:39.

AI transkribering

AI försöker förstå oss… Ha överseende med galna feltranskriberingar.

1 00:00:00,160 --> 00:00:04,080 Hej och välkommen till Säkerhetspodcasten. Jag som pratar heter Johan Rydberg Möller.

2 00:00:04,220 --> 00:00:10,720 Med mig idag har jag Jesper Larsson, Rickard Bordfors och Peter Magnusson.

3 00:00:11,000 --> 00:00:11,740 Det är en enda rätte.

4 00:00:12,160 --> 00:00:13,840 Mattias är på uppdrag.

5 00:00:14,460 --> 00:00:14,840 Nej det är han.

6 00:00:14,960 --> 00:00:16,640 Åker skidor i Trusil.

7 00:00:16,840 --> 00:00:17,360 Det är himla gött.

8 00:00:17,480 --> 00:00:21,780 Jag ska nämna idag att vi är sponsrade av Ashore. Läs mer om dem på ashore.se

9 00:00:21,780 --> 00:00:25,960 och Bordfors Consulting som ni läser mer om på bordfors.se.

10 00:00:25,960 --> 00:00:33,940 Det ska väl också nämnas lite snabbt att vi får väldigt mycket fina brev från våra lyssnare

11 00:00:33,940 --> 00:00:37,980 med begäran om stickers.

12 00:00:38,840 --> 00:00:41,680 Det vill vi självklart att ni ska fortsätta göra för det är supertrevligt att få.

13 00:00:42,740 --> 00:00:48,880 Så fortsätt göra det. Skicka dem till ashore.se, Norra Lergatan, 7 413 01, Göteborg.

14 00:00:49,440 --> 00:00:52,000 Så svarar vi om ni skickar med ett frankerat kuvert.

15 00:00:52,000 --> 00:00:54,980 Och så skriv säkerhetspodcasten också någonstans på mig.

16 00:00:55,180 --> 00:00:55,680 Ja, precis.

17 00:00:55,960 --> 00:01:01,360 Det var väl det. Jag ska nämna att säkerhetspodcasten finns på säkerhetspodcasten.se

18 00:01:01,360 --> 00:01:03,100 och på Twitter är det SAK-podcasten.

19 00:01:03,940 --> 00:01:05,900 Idag ska vi spela in ett temaavsnitt.

20 00:01:06,160 --> 00:01:06,540 Precis.

21 00:01:06,860 --> 00:01:08,060 På temat tools.

22 00:01:08,880 --> 00:01:10,980 Ja, och toolchains tänkte vi.

23 00:01:11,500 --> 00:01:14,680 Då får du jättegärna börja berätta vad är toolchains?

24 00:01:14,680 --> 00:01:20,740 Ja, precis. Vi tänkte att vi skulle sprida lite kunskap kring vilka verktyg

25 00:01:20,740 --> 00:01:24,680 och hur vi använder verktyg i kombination med varandra för att göra tråkiga

26 00:01:24,680 --> 00:01:30,860 och kanske manuella uppgifter mer automatiserade och enklare i olika faser

27 00:01:30,860 --> 00:01:33,720 utav till exempel ett penetrationstest.

28 00:01:34,640 --> 00:01:41,340 Och de faserna vi typiskt ser då det är rekonfas, alltså reconnaissance, alltså vi rekar.

29 00:01:42,000 --> 00:01:42,640 Rekar?

30 00:01:42,780 --> 00:01:44,540 Ja, vi letar efter information.

31 00:01:45,940 --> 00:01:53,080 Och det vi letar efter är väl det som ska ligga till grund för att sedan kunna komma vidare på något sätt

32 00:01:53,080 --> 00:01:54,080 om det är att…

33 00:01:54,680 --> 00:02:02,080 Vi nyttjar kända sårbarheter eller att vi letar efter specifika konfigurationsproblem eller features

34 00:02:02,080 --> 00:02:03,100 beroende på hur man ser det.

35 00:02:03,600 --> 00:02:07,800 Och sen när vi har hittat vårt första fotfäste som gör att vi kommer kanske igenom en perimeter.

36 00:02:08,560 --> 00:02:11,260 Vad gör vi då i en post-exploitation-fas?

37 00:02:11,360 --> 00:02:12,900 Alltså efter det att vi har ett fotfäste.

38 00:02:12,900 --> 00:02:13,600 Vad gör vi då?

39 00:02:14,500 --> 00:02:19,900 Och sedan tänkte jag även att vi skulle vara bra att kanske titta lite på forensikdelen.

40 00:02:20,580 --> 00:02:23,900 Vad använder vi för verktyg när vi kör forensik-gig?

41 00:02:24,680 --> 00:02:29,000 Det finns ju en uppsjö, väldigt dyra applikationer man kan använda för forensikarbete.

42 00:02:29,100 --> 00:02:35,440 Men det finns också en väldans massa bra open source-tools för att göra ungefär samma sak.

43 00:02:36,380 --> 00:02:39,340 Så jag tänker att vi kan väl börja med…

44 00:02:39,340 --> 00:02:41,380 Alltså vi får ett scope.

45 00:02:41,880 --> 00:02:44,380 Det här är vad vi ska titta på.

46 00:02:44,660 --> 00:02:45,160 Vad gör vi?

47 00:02:45,500 --> 00:02:49,300 Kan vi börja med att säga också att allt det här handlar ju om…

48 00:02:49,300 --> 00:02:54,660 Alltså verktygsval handlar ju väldigt mycket om vad är det kunden är ute efter att få reda på.

49 00:02:54,660 --> 00:02:56,200 Vad vill de ha svar på?

50 00:02:57,700 --> 00:03:07,200 Men du tänker det scenariet utifrån att vi ska göra ett penetrationstest på en svart låda.

51 00:03:07,500 --> 00:03:08,820 Ja, på X egentligen.

52 00:03:09,380 --> 00:03:10,720 Och där finns det ju många discipliner.

53 00:03:11,800 --> 00:03:15,660 Det är ju väldigt sällan så att ni får göra vad ni vill.

54 00:03:15,800 --> 00:03:18,980 Utan det är ju ganska tydligt scope i alla fall för de grejerna jag gör.

55 00:03:19,760 --> 00:03:22,520 Men jag vet att jag och Johan, vi gör ju mycket penetrationstester.

56 00:03:22,520 --> 00:03:24,600 Och våra arbetsmetoder.

57 00:03:24,660 --> 00:03:25,600 Och det skiljer sig jättemycket.

58 00:03:25,940 --> 00:03:29,460 Och det är ju för att verktygen och metoderna anpassas ju efter målsystem.

59 00:03:29,780 --> 00:03:31,180 Ja, och områden framförallt.

60 00:03:31,960 --> 00:03:36,880 Och där är det kul att prata lite om metodologin och hur vi gör våra liv enklare, tänker jag.

61 00:03:37,840 --> 00:03:43,240 Så att de som lyssnar kanske får med sig lite tools som vi använder.

62 00:03:43,400 --> 00:03:45,140 Eller kombinationer av verktyg som vi tycker är bra.

63 00:03:46,220 --> 00:03:47,760 Som vi använder ofta.

64 00:03:48,060 --> 00:03:48,320 Just det.

65 00:03:48,840 --> 00:03:53,360 Kan inte du börja lite med att snacka om vad det är du har i din verktygslåda?

66 00:03:53,360 --> 00:03:55,660 Jag har ju en uppsjö med prylar.

67 00:03:55,740 --> 00:03:57,260 Jag provar ganska mycket saker.

68 00:03:57,380 --> 00:03:58,980 Jag är ju mycket för automatisering.

69 00:03:59,060 --> 00:04:03,280 Jag tycker det är ganska tråkigt att sitta och inventera stora scope.

70 00:04:03,420 --> 00:04:04,640 Och det är ju oftast det jag får göra.

71 00:04:04,700 --> 00:04:09,360 Jag jobbar ju mycket med infrastruktur och saker och ting som…

72 00:04:10,400 --> 00:04:12,260 Ja, mycket publicerade tjänster.

73 00:04:12,980 --> 00:04:14,440 Och det finns ju…

74 00:04:14,440 --> 00:04:18,480 Ja, men som ni alla vet som har scannat något på internet så finns det ju allt möjligt.

75 00:04:18,960 --> 00:04:21,620 Och jag försöker bygga en…

76 00:04:21,620 --> 00:04:22,480 Ja, men en så automatiserad…

77 00:04:23,360 --> 00:04:26,600 En så automatiserad nummereringsapparat som det bara går.

78 00:04:27,060 --> 00:04:29,260 Baserat lite på vad det är vi letar efter.

79 00:04:31,500 --> 00:04:33,760 Och där finns ju allt möjligt.

80 00:04:33,840 --> 00:04:44,300 Jag har specifika skandlar för specifik infrastruktur som jag kanske inte vill köra med en gång.

81 00:04:44,440 --> 00:04:48,860 För att det tar lång tid att till exempel fingerprinta en specifik host och en specifik sårbarhet.

82 00:04:49,100 --> 00:04:52,740 Och en specifik publiceringsmetod för den här sårbarheten.

83 00:04:53,360 --> 00:04:56,020 Så jag börjar oftast jobba med kartläggning.

84 00:04:56,120 --> 00:05:05,520 Och då använder jag ju kanske Mascan eller Nmap för att bilda mig i någon form av grundläggande sonarbild.

85 00:05:05,760 --> 00:05:06,340 Kan man säga så.

86 00:05:06,660 --> 00:05:08,960 Det är lite att kolla på perimetern.

87 00:05:09,100 --> 00:05:10,000 Vad finns det för host där?

88 00:05:10,080 --> 00:05:11,400 Vad kör de för saker?

89 00:05:12,120 --> 00:05:15,080 Titta lite också på hur mognadsgraden ser ut när man börjar scanna.

90 00:05:16,440 --> 00:05:20,340 Vissa perimetrar är ju ganska duktiga på att skicka tillbaka…

91 00:05:20,340 --> 00:05:20,780 Dynga?

92 00:05:21,100 --> 00:05:21,340 Ja.

93 00:05:22,280 --> 00:05:23,080 Eller irrelevant.

94 00:05:23,360 --> 00:05:26,640 Eller till exempel upprättaren till en specifik station.

95 00:05:26,840 --> 00:05:31,720 Så allting från 1 till 65.553 svarar.

96 00:05:32,040 --> 00:05:32,480 535.

97 00:05:32,840 --> 00:05:33,420 Ja, 535.

98 00:05:33,920 --> 00:05:37,380 Och då ger det ju ingenting.

99 00:05:38,460 --> 00:05:43,480 Eller att de till och med svarar med att slumpmässiga portar är öppna olika varje gång.

100 00:05:43,480 --> 00:05:52,820 Eller att du svarar på en halvöppen till en specifik station.

101 00:05:52,820 --> 00:05:55,080 Ja, jag är här. Jag svarar.

102 00:05:55,220 --> 00:05:56,640 Men just nu är jag väldigt upptagen.

103 00:05:56,740 --> 00:05:57,560 Windows size 0.

104 00:05:58,820 --> 00:06:00,500 Och sen så hänger sig din scan.

105 00:06:01,620 --> 00:06:02,540 Ja, så kan du göra det.

106 00:06:02,760 --> 00:06:07,380 Nu är moderna verktyg ganska duktiga på att hålla koll på det.

107 00:06:07,380 --> 00:06:08,620 Och även trådar.

108 00:06:08,800 --> 00:06:09,720 Så det går ju hyfsat fort.

109 00:06:10,480 --> 00:06:14,160 Men jag brukar göra en snabb service scan egentligen.

110 00:06:14,600 --> 00:06:17,580 För att ge mig någonstans mellan tuba och pekfingre.

111 00:06:17,660 --> 00:06:18,800 Vad är det här för host?

112 00:06:20,300 --> 00:06:21,800 Mycket av de hostarna man tittar på…

113 00:06:22,820 --> 00:06:24,280 Någon form av webbtryne på sig.

114 00:06:25,680 --> 00:06:27,640 Och där blir det ju ganska intressant.

115 00:06:27,740 --> 00:06:29,520 Jag är ju oftast…

116 00:06:29,520 --> 00:06:30,840 Det är oftast där vi är.

117 00:06:30,960 --> 00:06:34,040 Vi försöker hitta fotfästen i olika CMS.

118 00:06:34,400 --> 00:06:36,440 Alltså content management system för publicering.

119 00:06:36,620 --> 00:06:40,420 Det finns ju en uppsjö med CMS som är riktigt dåliga.

120 00:06:41,220 --> 00:06:45,760 Men även lastbalanserade olika…

121 00:06:45,760 --> 00:06:48,040 Ja, men perimeterbaserad infrastruktur.

122 00:06:48,040 --> 00:06:50,040 Det kan vara allt ifrån WAF-lösningar.

123 00:06:51,220 --> 00:06:52,740 Av olika bra karaktärer.

124 00:06:52,820 --> 00:06:56,300 Och det där vill man ganska snabbt kartlägga.

125 00:06:56,440 --> 00:06:59,020 Vad är det här som skulle vara gångbart?

126 00:06:59,100 --> 00:07:04,140 Vad är det här som jag har en bra remote code execution på?

127 00:07:04,320 --> 00:07:09,400 Eller har en bra metod för att kunna få remote code execution?

128 00:07:09,540 --> 00:07:10,440 Eller etablera ett käll?

129 00:07:10,560 --> 00:07:13,220 Eller ladda upp en fil som gör att jag kan etablera ett käll?

130 00:07:13,340 --> 00:07:13,620 Och så vidare.

131 00:07:14,360 --> 00:07:15,820 Och där har jag…

132 00:07:16,460 --> 00:07:18,260 Jag använder någonting som heter D-research.

133 00:07:18,300 --> 00:07:18,900 Som är ganska bra.

134 00:07:19,720 --> 00:07:20,820 Där man kan definiera egna…

135 00:07:20,820 --> 00:07:22,820 D-research och sublisering.

136 00:07:22,820 --> 00:07:25,300 Det är två verktyg som jag använder jättemycket.

137 00:07:25,880 --> 00:07:29,440 Och där kan man ju definiera egna lister egentligen.

138 00:07:29,560 --> 00:07:33,880 Och vad jag har gjort är att jag har samlat på mig filändelser.

139 00:07:33,920 --> 00:07:38,380 Från kända CMS eller kända publicerade webbrötter till exempel.

140 00:07:38,980 --> 00:07:41,060 Så jag letar efter specifika filer.

141 00:07:41,780 --> 00:07:46,820 Som jag då sedan kan använda för att dels kategorisera vilken typ av version av…

142 00:07:48,820 --> 00:07:51,960 Plugin eller modul eller tjänst eller konfiguration.

143 00:07:52,180 --> 00:07:52,820 Som finns på…

144 00:07:52,820 --> 00:07:53,400 Hållsystemet.

145 00:07:53,920 --> 00:07:57,840 För att sedan då kunna köra det till en resultatfil.

146 00:07:58,360 --> 00:08:02,840 Som i sin tur läser från resultatfilen och tittar till exempel mot exploit DB.

147 00:08:03,120 --> 00:08:06,140 Eller mitt egna repo efter sårbarheter då.

148 00:08:06,540 --> 00:08:11,380 Som gör att man snabbt och utan att man behöver göra något egentligen.

149 00:08:13,260 --> 00:08:17,380 Kan kategorisera hur vidare ett system borde vara exploaterbart eller inte.

150 00:08:18,820 --> 00:08:19,780 Spara tid helt enkelt.

151 00:08:19,940 --> 00:08:20,420 Det har du lätt, ja.

152 00:08:21,420 --> 00:08:21,820 Absolut.

153 00:08:21,820 --> 00:08:23,200 Och det är ju tråkigt.

154 00:08:23,960 --> 00:08:25,620 Och det känns inte så kvalificerat.

155 00:08:25,720 --> 00:08:28,180 Jag menar, man kostar ju ganska mycket per timme.

156 00:08:28,640 --> 00:08:31,200 Då vill man ju ändå vara effektiv med den tiden man lägger ner.

157 00:08:31,380 --> 00:08:35,040 Man kan ju inte ta betalt för att scanna hundratusen hostar.

158 00:08:36,160 --> 00:08:38,820 Om man alltså tittar på en full UDP-scan.

159 00:08:39,020 --> 00:08:40,620 Eller för en full TSP-scan.

160 00:08:40,860 --> 00:08:42,580 Nej, det hoppas ju ingen gör.

161 00:08:42,900 --> 00:08:43,520 Ja, såhär.

162 00:08:43,800 --> 00:08:45,120 You would be amazed, sir.

163 00:08:45,960 --> 00:08:46,820 Men jag tänker…

164 00:08:47,640 --> 00:08:49,080 Om vi tar det exemplet då.

165 00:08:49,180 --> 00:08:51,600 Just det här med hur man tar betalt.

166 00:08:51,600 --> 00:08:54,000 För att någonstans så…

167 00:08:54,000 --> 00:09:01,680 Ja, i viss mån så betalar ju kunden för din expertis och ditt kunnande.

168 00:09:02,720 --> 00:09:08,920 Och då vill man ju att man ska få betala för när du verkligen levererar kundnytta.

169 00:09:10,400 --> 00:09:16,520 Men någonstans är ju även din verktygslåda på något vis en produkt av din expertis.

170 00:09:17,220 --> 00:09:20,160 Hur ska man resonera och fundera där då?

171 00:09:20,480 --> 00:09:21,540 Ja, vi brukar…

172 00:09:21,600 --> 00:09:26,860 Vi brukar alltid ha väldigt hårda förkrav som behöver finnas på plats innan vi börjar.

173 00:09:27,120 --> 00:09:28,780 Och det är så vi bygger våra estimat på.

174 00:09:30,060 --> 00:09:35,360 Och för att svara på din fråga är att vi tar oftast inte betalt för scanningdelen.

175 00:09:35,500 --> 00:09:37,320 Utan det har vi i en recon-fas.

176 00:09:37,940 --> 00:09:44,000 Och den estimeras beroende på hur mycket saker som är i scope.

177 00:09:44,820 --> 00:09:49,000 Jag testar stundtals väldigt stora internetleverantörer.

178 00:09:49,000 --> 00:09:51,000 Som har lastbalansering.

179 00:09:51,600 --> 00:09:54,980 Läggningsfarmar som är enorma.

180 00:09:55,620 --> 00:09:58,400 Och de scopen är så riktigt värdelöst satta.

181 00:09:58,520 --> 00:10:00,400 För att det är så mycket hostar.

182 00:10:01,180 --> 00:10:02,720 Så att…

183 00:10:02,720 --> 00:10:04,700 Det är så mycket hostar och vi har så lite tid.

184 00:10:05,300 --> 00:10:07,240 Så att det blir minsta motståndens lag.

185 00:10:07,860 --> 00:10:11,100 Vilket gör att vi scannar tills vi hittar någonting som är gångbart.

186 00:10:11,220 --> 00:10:12,620 Sen så dödar vi det som är gångbart.

187 00:10:12,720 --> 00:10:18,000 Och första fortfästet vi får är det vi exploaterar för att komma förbi perimetern.

188 00:10:18,000 --> 00:10:19,100 Och sen är vi typ hemma.

189 00:10:20,280 --> 00:10:21,000 Det är…

190 00:10:21,600 --> 00:10:24,060 Extremt vanligt skulle jag säga att det är så det funkar.

191 00:10:24,260 --> 00:10:25,040 För man…

192 00:10:25,040 --> 00:10:27,060 Jag använder alltid minsta motståndens lag.

193 00:10:27,160 --> 00:10:28,460 Särskilt om det då är…

194 00:10:28,460 --> 00:10:30,220 Ni ska etablera…

195 00:10:30,220 --> 00:10:31,700 Eller någon form av black-gray-box.

196 00:10:31,780 --> 00:10:33,000 Ni ska etablera fotfäste.

197 00:10:33,600 --> 00:10:35,640 Då kommer jag aldrig hitta på någon helhet.

198 00:10:35,860 --> 00:10:37,920 Då kommer man leta efter en exploit för att ta sig in.

199 00:10:37,920 --> 00:10:40,740 Men det är ju sällan en kund har råd att betala för en helhet.

200 00:10:40,900 --> 00:10:42,160 Alltså det är ju någonstans där…

201 00:10:42,160 --> 00:10:43,220 Både och ändå.

202 00:10:43,300 --> 00:10:45,340 Vi har ju ganska mycket produkt…

203 00:10:45,340 --> 00:10:47,420 Hur vet man att man inte fastnar i en honnepott?

204 00:10:47,420 --> 00:10:50,200 Om man gör ett brett och spetsat skott?

205 00:10:50,220 --> 00:10:51,420 Handen på hjärtat.

206 00:10:51,600 --> 00:10:53,600 Jag gjorde kanske 50.

207 00:10:54,560 --> 00:10:56,020 Femtest förra året kanske.

208 00:10:57,400 --> 00:11:00,520 Inte en enda kund har jag stött på…

209 00:11:00,520 --> 00:11:02,780 Som har haft en etablerad honnepott i sin produktionsmiljö.

210 00:11:03,040 --> 00:11:04,000 As far as you know.

211 00:11:04,880 --> 00:11:06,380 Ja, as far as I know.

212 00:11:06,860 --> 00:11:08,460 Som har varit ett problem liksom.

213 00:11:08,680 --> 00:11:10,520 Ska vi också nämna att direkt…

214 00:11:10,520 --> 00:11:13,020 Den metodiken skiljer sig ganska mycket mot om man…

215 00:11:13,020 --> 00:11:14,140 Exempelvis gör vi det som jag gör.

216 00:11:14,340 --> 00:11:17,940 Typ mot webbapplikation eller mobilapplikation.

217 00:11:17,940 --> 00:11:19,160 Precis, för där har du ramar.

218 00:11:19,160 --> 00:11:21,080 Där har du källkogsbibliotek att jobba emot.

219 00:11:21,600 --> 00:11:23,280 Det skulle typ kunna vara Blackbox.

220 00:11:23,400 --> 00:11:25,580 Men där har jag ett väldigt specifikt mål.

221 00:11:26,240 --> 00:11:29,940 Nu kollar inte jag på en perimeter och försöker hitta minsta motsatsslag.

222 00:11:30,020 --> 00:11:32,040 En opatchad Windows-server liksom.

223 00:11:32,680 --> 00:11:34,360 Utan här har vi en webbapplikation.

224 00:11:34,480 --> 00:11:35,640 Det är den som ska testas.

225 00:11:36,380 --> 00:11:39,360 Vi ska hitta så många sårbarheter som möjligt i den applikationen.

226 00:11:40,080 --> 00:11:43,360 Då har man gjort en ganska tydlig prioritering innan så att säga.

227 00:11:43,760 --> 00:11:46,620 Det är förmodligen två ganska olika beställare i de här fallet.

228 00:11:46,620 --> 00:11:51,160 Och helt annorlunda användningsområden av den rapporten förmodligen.

229 00:11:51,600 --> 00:12:03,600 Om frågan är, kan ni ta er igenom våran perimeter, all methods allowed, så är det förmodligen ett helt annat användningsområde än att säga, vi har byggt den här applikationen, vad kan ni göra?

230 00:12:07,600 --> 00:12:12,300 Verktygslådan skiljer sig ofantligt mycket beroende på vad målet är.

231 00:12:12,300 --> 00:12:21,120 Jag brukar nästan alltid föroda någon form av öppenbok, whitebox-testing.

232 00:12:21,600 --> 00:12:28,640 Var så mycket information som möjligt för att då kan man också ge maximal kundnytta.

233 00:12:28,640 --> 00:12:33,120 Du kan gå in och börja titta på arkitektur och tänk.

234 00:12:33,220 --> 00:12:35,180 Hur har de tänkt? Hur har de resonerat?

235 00:12:36,240 --> 00:12:40,860 Och vad skulle potentiellt kunna vara möjligt att utnyttja här?

236 00:12:41,020 --> 00:12:42,060 Och så kan man testa det.

237 00:12:43,040 --> 00:12:48,040 Men om man tittar på de här faserna som vi pratar om, så är rekogniseringsfasen, det blir ju samma för en mobilapp egentligen.

238 00:12:49,020 --> 00:12:50,420 Rekogniseringsfasen är ju…

239 00:12:50,420 --> 00:12:51,500 Du tittar på en…

240 00:12:51,500 --> 00:12:54,260 Hittar funktioner, hittar endpunkter som du säger är parametrar.

241 00:12:54,260 --> 00:13:02,740 Jag sitter ju en del, inte med rena mobilappar, men jag sitter med hårdvara som på något sätt konsumerar en mobilapp kanske.

242 00:13:02,900 --> 00:13:05,020 Som i sin tur konsumerar ett API.

243 00:13:05,740 --> 00:13:10,640 Där har man egentligen samma metodologi, kanske lite vän beroende på vad målet är.

244 00:13:10,720 --> 00:13:13,860 Men i mitt fall då, jag tittar mycket på inbyggda system.

245 00:13:14,060 --> 00:13:18,020 Alltifrån, nu uppenbarligen gossdjur är det senaste, vilket är fantastiskt kul.

246 00:13:18,020 --> 00:13:21,020 Men jag gör ju en del routrar, jag gör…

247 00:13:21,500 --> 00:13:26,520 Ja, men små inbyggda saker som inte kanske ska vara så himla exponerade.

248 00:13:26,620 --> 00:13:32,760 Men då tittar, då vänder man ju på det istället och gör man ju rekondelen utifrån den prylen man sitter på.

249 00:13:32,960 --> 00:13:37,560 Så då tittar man ju på trafikmönstren istället, vilket egentligen är samma sak som att scanna ett mål.

250 00:13:37,620 --> 00:13:41,100 Man tittar, vad är det den här försöker kommunicera med?

251 00:13:41,540 --> 00:13:43,460 Jo, men det är X, Y, Z, O, E, Ö.

252 00:13:43,640 --> 00:13:45,400 Bra, okej. Vad är det den kommunicerar?

253 00:13:45,400 --> 00:13:49,120 Jo, men här går det någon Base64-engårdad blob.

254 00:13:49,300 --> 00:13:50,400 Eller här går det någon JSON…

255 00:13:51,500 --> 00:13:53,540 Sträng, eller vad det nu kan tänkas vara.

256 00:13:53,620 --> 00:13:58,180 Det blir lite samma grej, för att kategorisera lite, vad är det jag behöver titta på?

257 00:13:58,840 --> 00:14:04,320 Och det tänker jag att det måste du också göra i webbappmetodologin.

258 00:14:04,680 --> 00:14:10,660 Jag menar nog mer att skillnaden kanske är att istället för att titta på en perimeter exempelvis

259 00:14:10,660 --> 00:14:14,520 och hitta en exploit som funkar så att jag kan börja göra post-exploitation

260 00:14:14,520 --> 00:14:17,540 så är ju mitt arbete mer begränsat.

261 00:14:17,640 --> 00:14:20,700 Även om jag hittar en remote code execution i en webbapplikation

262 00:14:21,500 --> 00:14:25,460 så är jobbet slut där och det betyder inte heller att jag går vidare och gör någon post-exploitation.

263 00:14:25,600 --> 00:14:26,900 För det ingår inte i skåpet.

264 00:14:27,260 --> 00:14:28,400 Utan snarare, då har vi hittat den.

265 00:14:29,040 --> 00:14:31,880 Då ser vi vilka fler grejer vi kan hitta.

266 00:14:32,180 --> 00:14:33,960 Men det är där jag tänker, det där gör ju skillnaden då.

267 00:14:34,480 --> 00:14:37,740 Det är dumt av mig att gå så långt som att…

268 00:14:37,740 --> 00:14:39,740 För det blir egentligen inne på nästa kategori då.

269 00:14:39,860 --> 00:14:41,840 Vi har en tavla här, det ser ni inte i.

270 00:14:41,840 --> 00:14:44,960 Men där står det egentligen att vi har en reconnaissance phase,

271 00:14:45,100 --> 00:14:47,760 vi har en exploit phase eller en exploit phase,

272 00:14:48,140 --> 00:14:50,880 vi har en post-exploitation och sen har vi en forensisk del.

273 00:14:51,500 --> 00:14:55,060 Vi klarar det då, så rekar ni egentligen situational awareness.

274 00:14:55,260 --> 00:14:58,000 Vad är målet här? Vad är det vi har för attackvektor?

275 00:14:58,000 --> 00:14:58,880 Vad har vi för attackrutor?

276 00:14:59,320 --> 00:15:01,180 Ja, attackrutor är rätt så här stort tror jag.

277 00:15:02,040 --> 00:15:03,520 Och sen kommer exploateringen.

278 00:15:03,640 --> 00:15:08,040 Så exploateringen blir ju baserat på motståndet egentligen.

279 00:15:08,380 --> 00:15:08,660 Absolut.

280 00:15:08,920 --> 00:15:10,720 Baserat lite på hur scopingen är satt.

281 00:15:10,720 --> 00:15:13,660 Det är egentligen det som är skillnaden.

282 00:15:13,920 --> 00:15:17,500 Har vi en mobilapp eller har vi 10 000 potentiella mobilappar?

283 00:15:18,220 --> 00:15:19,100 Det är det som är skillnaden här.

284 00:15:19,300 --> 00:15:20,840 Men allting är ändå…

285 00:15:21,500 --> 00:15:28,400 När jag gör mina rekongrejer så kategoriserar jag ju fynden ifrån skanningarna.

286 00:15:29,220 --> 00:15:32,380 Så jag kategoriserar till exempel, hittar man en IP-range,

287 00:15:32,860 --> 00:15:36,240 eller om man nu kör, det är en S-rekon, det kan vi komma in på sen efter det här,

288 00:15:36,240 --> 00:15:40,000 men hittar man då en tydlig publiceringsstrategi hos bolaget,

289 00:15:40,020 --> 00:15:41,500 lite där du var inne på med arkitektur,

290 00:15:41,900 --> 00:15:45,240 att man säger att i den här IP-rangen, i den här annonseringen,

291 00:15:46,260 --> 00:15:48,260 här publicerar de sin webb,

292 00:15:48,420 --> 00:15:51,320 då blir det en egen kategorisering som i sin tur då,

293 00:15:51,320 --> 00:15:54,600 och får en ytterligare mer granulär skanning,

294 00:15:55,000 --> 00:15:56,440 baserat på vad det är.

295 00:15:56,880 --> 00:15:59,400 Är det en SIP-växel till exempel?

296 00:15:59,940 --> 00:16:02,840 Okej, men vad kan vi konsumera i SIP-växeln öppet?

297 00:16:03,280 --> 00:16:08,440 Då skickar man ju inte en NGINX-deer-search på den,

298 00:16:08,500 --> 00:16:12,700 för att leta efter generiska konfigurationsstandarder för en NGINX,

299 00:16:13,040 --> 00:16:16,980 utan då skickar man ju någonting som är baserat på en SIP-växel,

300 00:16:17,040 --> 00:16:19,740 för att kunna kategorisera att det är en IP-telefonilösning.

301 00:16:20,500 --> 00:16:21,280 Är ni med på tänket där?

302 00:16:21,320 --> 00:16:23,060 Alltså det handlar ju om granuläritet,

303 00:16:23,180 --> 00:16:26,300 och jag vill inte att göra stora skanningar ta tid.

304 00:16:27,140 --> 00:16:30,880 Så därför så vill man ju se till att snabba upp de här faserna så snabbt som möjligt,

305 00:16:30,920 --> 00:16:32,460 genom att kategorisera vad är detta.

306 00:16:33,000 --> 00:16:34,800 Om det här publicerar ett webbtryne, bra.

307 00:16:35,180 --> 00:16:37,280 Då går den vidare till nästa instans.

308 00:16:37,600 --> 00:16:39,320 Leta efter webbtryne, bra.

309 00:16:39,480 --> 00:16:43,360 Det här är ett webbtryne av smaken Apache, NGINX, IIS,

310 00:16:43,460 --> 00:16:44,340 eller vad det nu kan tänkas vara.

311 00:16:44,820 --> 00:16:47,740 Okej, givet att det är det, har vi något CMS på den?

312 00:16:49,040 --> 00:16:51,300 Jobbar man i stora teams kan jag också tänka mig,

313 00:16:51,320 --> 00:16:52,780 att man splittar det här.

314 00:16:53,420 --> 00:16:57,180 Någon gör kartläggningen, och några andra gör exploiteringen.

315 00:16:57,720 --> 00:17:02,000 Och då ger man frukterna till respektive utvecklingsteam.

316 00:17:02,080 --> 00:17:03,320 I mitt fall så är det mycket så här,

317 00:17:03,780 --> 00:17:05,940 här är en P&P-grej, den här är gammal,

318 00:17:06,420 --> 00:17:09,580 jag har två dudes i mitt team som är riktigt vassa på P&P.

319 00:17:10,380 --> 00:17:13,640 Här har ni en förmodligen trasig upload-funktion,

320 00:17:13,780 --> 00:17:15,280 det här är vad jag har, och så går den vidare.

321 00:17:16,000 --> 00:17:19,540 Eller så är det någonting som jag själv har exploiterat tidigare,

322 00:17:20,180 --> 00:17:21,180 då sparar man den.

323 00:17:21,320 --> 00:17:24,320 Då vet man, den här kommer jag att klara av att exploita.

324 00:17:24,780 --> 00:17:27,820 Den behöver vi inte lägga tid på i detta skedet,

325 00:17:27,900 --> 00:17:29,080 för den här är trasig.

326 00:17:30,500 --> 00:17:34,420 I mitt fall så är det oftast väldigt stora scope,

327 00:17:34,500 --> 00:17:35,780 och det är oftast väldigt mogna kunder,

328 00:17:35,860 --> 00:17:36,840 de vet vad de vill ha.

329 00:17:38,540 --> 00:17:40,520 Men de vill också ha så mycket som möjligt,

330 00:17:40,560 --> 00:17:41,580 för så lite som möjligt.

331 00:17:42,260 --> 00:17:44,220 Så där gäller det att kunna, som Rickard säger,

332 00:17:44,520 --> 00:17:47,520 någon köper ju dig, för du är såklart dyr,

333 00:17:47,920 --> 00:17:50,980 men du har din arsenal, och du har kapaciteten

334 00:17:50,980 --> 00:17:54,780 att kunna dammsuga en stor scope,

335 00:17:54,860 --> 00:17:56,740 men ändå komma fram till kundnytta på något sätt.

336 00:17:56,820 --> 00:17:58,980 Och jämför man det här med webbentesterna,

337 00:17:59,060 --> 00:18:03,360 så kan man ju säga att där finns det väl två typer av beställningar.

338 00:18:03,440 --> 00:18:08,020 Den ena är, någon är rädd för att ha ny funktionalitet i drift,

339 00:18:08,100 --> 00:18:09,980 och vill ha den testad innan den tas i drift.

340 00:18:10,420 --> 00:18:15,940 Och den andra är, någon som på något sätt representerar utvecklingsteamet,

341 00:18:16,020 --> 00:18:20,540 eller de som äger appen, vill ha den testad för att de vill känna

342 00:18:20,540 --> 00:18:22,380 okej, vi har jobbat mycket nu,

343 00:18:22,680 --> 00:18:26,140 vi vill att någon kan ge någon form av uppfattning

344 00:18:26,140 --> 00:18:28,480 om vad som skulle hända om en hacker började hamra på den här.

345 00:18:29,220 --> 00:18:33,900 Och vi simulerar oftast både någon sån här grey box-lösning,

346 00:18:34,000 --> 00:18:34,880 det är oftast det vi gör.

347 00:18:35,320 --> 00:18:38,480 Så vi har dels tillgång till en fullständig perimeterkarta egentligen.

348 00:18:38,480 --> 00:18:42,380 Det här är någon range som vi publicerar saker på,

349 00:18:42,500 --> 00:18:44,540 och sen har vi tillgång till alla sources.

350 00:18:45,540 --> 00:18:49,120 Och ganska ofta, i alla fall åtta fall av tio,

351 00:18:49,260 --> 00:18:50,480 så har vi också lågnivåkrediteringar,

352 00:18:50,540 --> 00:18:53,480 credentials, för att kunna logga in i systemen och titta på funktionerna.

353 00:18:53,860 --> 00:18:56,560 Så inte nog med source, vi har även tillgång till

354 00:18:56,560 --> 00:18:58,840 antingen testmiljö eller produktionssystem,

355 00:18:58,960 --> 00:19:00,420 beroende lite på vad kunden är då.

356 00:19:00,820 --> 00:19:02,620 För att faktiskt kunna testa all funktionalitet.

357 00:19:02,740 --> 00:19:05,540 Och det gör att det snabbar på det väldigt mycket.

358 00:19:06,600 --> 00:19:07,860 Det skapar inte motstånd.

359 00:19:07,940 --> 00:19:09,700 Hittar man…

360 00:19:09,700 --> 00:19:12,300 Det här blir ett svårt avsnitt att hålla strukturerat,

361 00:19:12,360 --> 00:19:15,360 för till exempel börjar man fossa då, vilket är min nästa grej.

362 00:19:16,260 --> 00:19:20,300 Jag brukar nästan alltid fossa saker, för jag är lat.

363 00:19:20,540 --> 00:19:23,060 Och det är kul att se när skit ramlar ut i andra änden.

364 00:19:23,180 --> 00:19:23,780 Det är liksom enklare.

365 00:19:23,860 --> 00:19:26,460 Jag ser att det blir någon form av overflow,

366 00:19:26,640 --> 00:19:28,880 eller någon form av stacktrace.

367 00:19:29,300 --> 00:19:32,200 Men om vi då tar fassing som exempel då.

368 00:19:32,360 --> 00:19:33,540 För det är lite intressant.

369 00:19:34,200 --> 00:19:41,420 Att fassa någonting blindt måste ju vara som att skjuta med hagelbössa in i en lada.

370 00:19:41,680 --> 00:19:43,260 Ja, men det är ju sällan blindt.

371 00:19:43,260 --> 00:19:49,280 Nej, för du behöver ju nästan ha åtminstone ögon på loggen på något vis,

372 00:19:49,280 --> 00:19:49,660 för att se.

373 00:19:50,540 --> 00:19:53,660 Stacks den här ur sig skräp som jag stappar in.

374 00:19:53,780 --> 00:19:54,900 Ja, det beror ju på då.

375 00:19:55,000 --> 00:19:59,120 Om vi pratar webb exempelvis så har ju applikationen en tendens att svara olika

376 00:19:59,120 --> 00:20:02,000 beroende på vad det är man har skickat in.

377 00:20:02,800 --> 00:20:06,020 Det beror ju lite på, för ofta syns det ju.

378 00:20:06,260 --> 00:20:09,200 Man måste ha någon form av verbose output, det kan jag hålla med om.

379 00:20:09,320 --> 00:20:11,580 Du måste kunna skilja på ett state för ett annat.

380 00:20:11,580 --> 00:20:16,120 Ja, för jag tänker, alltså fassing som metod, tänker jag.

381 00:20:16,260 --> 00:20:19,580 Den plockar jag fram när jag ser att…

382 00:20:20,540 --> 00:20:25,720 Det finns typ en diskrepans i protokollspesen, att här…

383 00:20:25,720 --> 00:20:27,520 Oj, det blir väldigt djupt nu med en gång.

384 00:20:27,520 --> 00:20:32,100 Nej, det gör inte jag. Jag skulle säga att jag är jättedålig på webb, till exempel.

385 00:20:33,840 --> 00:20:37,660 Jag har hyfsad koll på webb, men jag skulle inte säga att jag är en expert.

386 00:20:38,020 --> 00:20:42,400 Då har jag en definitionslista med typ alla injection-formateringar som du kan tänka dig.

387 00:20:42,960 --> 00:20:45,780 Det är bättre att låta datorn göra det än att Jesper gör det.

388 00:20:46,120 --> 00:20:47,740 Och så tittar jag bara på avvikelserna.

389 00:20:48,960 --> 00:20:50,200 Ja, det är väl ett klokt sätt att sätta.

390 00:20:50,200 --> 00:20:53,620 I och för sig är det liksom en, visst det är en shotgun-approach.

391 00:20:53,740 --> 00:20:59,080 Det är verkligen att skjuta liksom, jag vet inte, skjuta flugor med hagel i väg.

392 00:20:59,120 --> 00:21:00,640 Jag vet inte vad man ska dra för liknelse.

393 00:21:00,960 --> 00:21:03,160 Men det är så här, det blir ganska framkomligt.

394 00:21:03,160 --> 00:21:08,760 Man kan ju göra klokare och klokare fastning ju mer du tar reda på om funktionen du fastsar.

395 00:21:09,540 --> 00:21:18,060 Jag hade ju ett fall där jag hittade ett säkerhetshål i Apache Struts 2 för länge sedan.

396 00:21:20,200 --> 00:21:26,980 Huvudgrejen som jag hade som indikator på, lyckas någonting eller lyckas det inte?

397 00:21:27,220 --> 00:21:30,700 För det syntes inte så mycket i outputen vad effekten blev.

398 00:21:31,380 --> 00:21:39,180 Men däremot så fick jag väldigt bra letrådare i RO-loggen på, har jag lyckats skriva sönder en variabel eller har jag inte lyckats?

399 00:21:39,180 --> 00:21:45,700 Och då kunde jag ju liksom, efter en stund mappa upp, ja men de här propertiesen är inne i klassloden kan jag sönder.

400 00:21:45,940 --> 00:21:50,160 Men där är väl boardcaset och det är samma om man sitter med en rater till exempel.

401 00:21:50,200 --> 00:21:54,900 Då behöver du ha, du behöver titta på målsystemets logga direkt.

402 00:21:55,020 --> 00:21:57,440 Du behöver se när vårdskåden går in.

403 00:21:57,460 --> 00:22:00,140 Men rättare sagt, du får ju fullt negativ i risken att du får.

404 00:22:00,280 --> 00:22:05,760 Om du inte har tillgång till relevanta ställen där det syns vad som händer så kan du…

405 00:22:05,760 --> 00:22:06,860 Och det här beror ju på…

406 00:22:06,860 --> 00:22:11,380 Du kan ju tro att du inte har hittat ett säkerhetshåll medan det du trodde var ett säkerhetshåll faktiskt var ett säkerhetshåll.

407 00:22:11,380 --> 00:22:17,940 Det kan ju dessutom vara så att det angriper en funktion som det sen visar sig att det inte är den som är sårbar.

408 00:22:18,520 --> 00:22:20,180 Men i outputen från den funktionen…

409 00:22:20,200 --> 00:22:24,760 Den konsumeras i ett tredje steg någonstans i bakgrunden som du aldrig har nån gång.

410 00:22:24,940 --> 00:22:30,760 Men det är där nu snackar vi om riktigt second och third och fourth order.

411 00:22:30,960 --> 00:22:31,320 Absolut.

412 00:22:31,580 --> 00:22:35,580 Eller så här execution-problematik.

413 00:22:35,680 --> 00:22:38,340 Det är ju komplexa saker vi pratar om.

414 00:22:38,340 --> 00:22:41,560 Ja, men det finns ju bra verktyg för att önskas med sådana saker.

415 00:22:41,900 --> 00:22:43,820 Framförallt om man pratar webb.

416 00:22:46,220 --> 00:22:48,780 Jag använder ju burp nästan uteslutande.

417 00:22:48,780 --> 00:22:57,380 Burp är ju ett oerhört kraftfullt verktyg och att kalla det ett verktyg är ju egentligen bara att hitta på för det är ett ramverk som innehåller allt möjligt.

418 00:22:57,380 --> 00:23:00,160 Du kan ju göra väldigt mycket av de här sakerna som vi har pratat om.

419 00:23:00,160 --> 00:23:01,880 Och jag använder burp jättemycket.

420 00:23:01,880 --> 00:23:05,780 Och inte bara nödvändigtvis mot webb heller utan mot allt.

421 00:23:05,780 --> 00:23:10,600 Du kan ju crafta egentligen alla typer av requests som går, även om de har HTTP.

422 00:23:10,600 --> 00:23:16,100 Ja, och bygga. Inte bara HTTP. Alltså en A som kör, jo men HTTP-parametrar.

423 00:23:16,100 --> 00:23:17,900 Men också så här allt.

424 00:23:17,900 --> 00:23:18,600 Du kan ju…

425 00:23:18,600 --> 00:23:29,280 Du kan ju bygga egna, vad ska man säga, brute force maskar, sequencers tänker jag på, jag vet inte hur man ska kalla det.

426 00:23:29,280 --> 00:23:38,080 Sequencer intruder är ju ett verktyg som du kan använda för att definiera upp hur du vill, vad du vill skicka in i olika parametrar, hur du vill behandla dem exempelvis.

427 00:23:38,080 --> 00:23:42,120 Men det är väldigt modulärt, det är kanske det ordet jag är ute efter. Det går att göra vad som helst.

428 00:23:42,120 --> 00:23:46,720 Men det är ett bra ramverk för att göra många saker, inte nödvändigtvis bara webb.

429 00:23:46,720 --> 00:23:47,720 Nej, precis.

430 00:23:47,720 --> 00:23:59,000 Jag skulle ju bara nämna att Burps Collaborator är ju ett fantastiskt verktyg just för att leta efter second- och third-order sårbarheter.

431 00:23:59,300 --> 00:24:05,680 Där sätter du upp egentligen en fristående server som sitter och lyssnar på inkommande anrop.

432 00:24:06,320 --> 00:24:16,920 Och sen kan du konfigurera upp din fussing egentligen för att inkludera command injection eller sequence injection saker.

433 00:24:17,720 --> 00:24:36,160 För den delen bara saker som en e-postadress som går till den domänen eller header values som kan innehålla referenser till den här servern.

434 00:24:36,160 --> 00:24:41,520 Och sen så sitter den bara i bakgrunden och så fort någonting pingar den någonstans ifrån så kommer du se det.

435 00:24:42,620 --> 00:24:47,700 Och då kommer du se att om jag skickar in någonting i det här systemet här borta tio minuter senare.

436 00:24:47,720 --> 00:24:51,260 Så skickas det en request till den servern från ett helt annat system.

437 00:24:51,400 --> 00:24:56,460 Och då kan du förmodligen räkna ut att någonstans i bakgrunden här så har någonting gått bra.

438 00:24:56,820 --> 00:24:58,080 Eller dåligt.

439 00:24:58,980 --> 00:25:06,120 VNB är väl den bästa formen av second-slash-third-slash-fourth-order-injection.

440 00:25:06,800 --> 00:25:11,140 Just för att där kan du ju fråga window.location var du exekverar någonstans.

441 00:25:11,140 --> 00:25:17,600 Så att din payload kan berätta för dig var den exekverar.

442 00:25:17,720 --> 00:25:26,160 Vilket är en jätteskillnad mot för då det är SQL-injection som kan vara superklurigt att hitta andra.

443 00:25:26,540 --> 00:25:27,840 Ja, absolut. Så kan det ju vara.

444 00:25:28,000 --> 00:25:35,860 Men det finns ju saker man kan göra även där som får SQL-databaser att börja nå ut och prata med omvärlden.

445 00:25:35,860 --> 00:25:36,200 Precis.

446 00:25:37,360 --> 00:25:38,780 Vilket är väldigt intressant.

447 00:25:38,780 --> 00:25:42,200 Eller bara en sån sak som jag har hittat flera gånger.

448 00:25:42,320 --> 00:25:46,140 Om man sitter och ska angripa en webbfronten.

449 00:25:46,720 --> 00:25:47,700 Eller inte en fronten.

450 00:25:47,720 --> 00:25:48,940 Men en webbapplikation.

451 00:25:49,940 --> 00:25:54,000 Och så har du börjat leka med olika intressanta headers.

452 00:25:54,760 --> 00:25:58,060 Typ x-forwarded host och sådana saker.

453 00:25:58,420 --> 00:26:02,520 Som egentligen inte visas för dig att de används.

454 00:26:02,580 --> 00:26:04,840 Eller kanske till och med odokumenterat att de gör det.

455 00:26:05,400 --> 00:26:10,200 Men om du där har skickat in att jag kommer från den här hosten.

456 00:26:10,940 --> 00:26:14,980 Så märker du att här finns ju en lastbalanserare som tar allting för givet.

457 00:26:14,980 --> 00:26:16,840 Det jag säger att jag faktiskt kommer ifrån.

458 00:26:17,720 --> 00:26:19,280 Säger att nej men jag kommer ju från localhost.

459 00:26:19,740 --> 00:26:19,920 Ja.

460 00:26:20,240 --> 00:26:23,560 Så börjar den visa dig helt andra saker.

461 00:26:24,420 --> 00:26:30,160 Eller till och med sådana saker som att om du sitter en webbsite på ett delat hostingsystem.

462 00:26:30,160 --> 00:26:33,840 Och skickar in att jag går till den här url-en.

463 00:26:33,940 --> 00:26:38,020 Men host-parametern där sätter jag en annan url som ligger på samma system.

464 00:26:38,660 --> 00:26:40,060 Då visar den upp en annan sajt.

465 00:26:40,260 --> 00:26:43,060 Fast under den ursprungliga addern med valid SSL.

466 00:26:43,180 --> 00:26:44,280 Det är en väldigt konstig bug.

467 00:26:45,180 --> 00:26:47,580 Och sådana saker kan man ju hitta också.

468 00:26:47,720 --> 00:26:49,300 Som exempelvis med burp.

469 00:26:49,580 --> 00:26:50,080 Väldigt enkelt.

470 00:26:51,020 --> 00:26:54,420 Och sen när det kommer till exploatering och sådant.

471 00:26:54,920 --> 00:26:56,660 Ofta så använder man ju väldigt gamla grejer.

472 00:26:56,760 --> 00:27:01,980 Det är ju väldigt sällan som man har tid att uppfinna hjulet så att säga.

473 00:27:02,080 --> 00:27:02,760 Det händer ju.

474 00:27:03,780 --> 00:27:07,180 Men i mitt fall så är det ofta så att jag är lat.

475 00:27:07,960 --> 00:27:09,260 Jag tittar på vad andra har gjort.

476 00:27:09,380 --> 00:27:10,780 Jag tittar på patchhantering.

477 00:27:11,440 --> 00:27:14,020 Hur givet att det här var ett problem förra gången.

478 00:27:14,020 --> 00:27:16,600 Eller givet att det här var ett problem förra patchcykeln.

479 00:27:16,840 --> 00:27:17,700 På en sålvariant.

480 00:27:17,720 --> 00:27:19,980 Det är ett som är väldigt allvarligt.

481 00:27:20,260 --> 00:27:21,780 Hur löste de det problemet?

482 00:27:22,360 --> 00:27:24,940 Alltså försöka förstå hur och varför.

483 00:27:25,660 --> 00:27:27,320 För jag menar utvecklare är också lata.

484 00:27:27,980 --> 00:27:31,860 Jag har hittat exploits eller sårbarheter som gör att.

485 00:27:32,300 --> 00:27:35,440 Gud förbjuder om man nu får för sig att bygga en router i Lua.

486 00:27:36,820 --> 00:27:42,000 För ni som har kodat någon Lua så vet ni att det där är ganska mäckigt att hålla koll på globala statements i Lua.

487 00:27:42,160 --> 00:27:42,700 I Lua.

488 00:27:42,900 --> 00:27:43,520 Jag kan inte prata.

489 00:27:43,620 --> 00:27:44,300 Jag har druckit champagne.

490 00:27:46,760 --> 00:27:47,160 Och.

491 00:27:47,720 --> 00:27:48,300 Det kan bli.

492 00:27:48,620 --> 00:27:49,340 Den har vi glömt att tacka för.

493 00:27:49,620 --> 00:27:50,560 Det ska vi absolut göra.

494 00:27:51,320 --> 00:27:51,460 Men.

495 00:27:52,340 --> 00:27:52,860 Tack till.

496 00:27:53,160 --> 00:27:55,560 Tack till Mikael Högberg heter han.

497 00:27:56,260 --> 00:27:56,860 Som är.

498 00:27:57,440 --> 00:27:57,840 Högberg.

499 00:27:58,000 --> 00:27:58,080 Ja.

500 00:27:58,280 --> 00:27:59,700 Som är en trogen lyssnare.

501 00:27:59,700 --> 00:28:02,940 Som kom förbi med en magnumflaska skumpa.

502 00:28:03,480 --> 00:28:05,560 Och lite god ost.

503 00:28:06,000 --> 00:28:07,600 Gruyère och parmadoulade.

504 00:28:07,960 --> 00:28:08,180 Nej.

505 00:28:08,480 --> 00:28:09,920 Som en jävla hjälta alltså.

506 00:28:10,140 --> 00:28:11,320 Och nu snabbt tillbaka.

507 00:28:11,660 --> 00:28:12,920 Ät Mikael Nett på Twitter.

508 00:28:13,160 --> 00:28:13,400 Ja.

509 00:28:13,620 --> 00:28:14,700 Och jag skulle komma till då att.

510 00:28:15,920 --> 00:28:16,700 Har man sårbarheter.

511 00:28:17,720 --> 00:28:19,800 Som i källkod då framförallt.

512 00:28:20,120 --> 00:28:21,100 Som i kod.

513 00:28:21,220 --> 00:28:22,040 I din lösning.

514 00:28:22,140 --> 00:28:22,680 I din produkt.

515 00:28:22,860 --> 00:28:23,400 Vad som helst.

516 00:28:23,980 --> 00:28:25,060 Så som har.

517 00:28:25,280 --> 00:28:26,720 Som inte är enkla att patcha.

518 00:28:26,800 --> 00:28:28,680 Det är liksom inte en funktion som bara används på ett ställe.

519 00:28:28,800 --> 00:28:29,940 Den kanske används på tusen ställen.

520 00:28:30,580 --> 00:28:33,420 Då blir det oftast så att utvecklare är ganska lata.

521 00:28:33,780 --> 00:28:35,160 Så att man mitigerar problemet där.

522 00:28:35,380 --> 00:28:36,860 Och där det är.

523 00:28:36,980 --> 00:28:38,100 Där man står.

524 00:28:38,560 --> 00:28:40,000 Man tänker inte på helheten.

525 00:28:40,320 --> 00:28:43,480 Vilket då gör att man skulle kunna invoka en sårbarhet på mer än ett ställe.

526 00:28:44,420 --> 00:28:45,680 Och det är ganska tydligt.

527 00:28:45,680 --> 00:28:46,840 När jag ser research då.

528 00:28:46,840 --> 00:28:48,020 Särskilt om man har hittat.

529 00:28:48,560 --> 00:28:51,340 Man har lagt mycket tid på att leta sårbarheter.

530 00:28:51,460 --> 00:28:55,280 Och så hittar man någonting som är universellt för plattan så att säga.

531 00:28:55,440 --> 00:28:58,340 Som till exempel då globala miljövariabler som inte är så bra.

532 00:28:59,100 --> 00:29:00,280 Men man kan ju säga som så här.

533 00:29:00,400 --> 00:29:02,440 Att i ett normalt pen-test.

534 00:29:02,820 --> 00:29:05,180 Så är det ju inte så att om man hittar en.

535 00:29:05,880 --> 00:29:09,160 Ja här verkar det vara en helt ny sårbarhet i en produkt.

536 00:29:09,360 --> 00:29:12,680 Det är ju inte så att man kör Google CRM-modellen.

537 00:29:12,760 --> 00:29:15,680 Och jobbar liksom ett antal veckor på att hitta en export till det.

538 00:29:15,680 --> 00:29:16,580 Det ligger ju inte.

539 00:29:16,840 --> 00:29:19,800 Jag skulle säga att det sker i sådana fall senare.

540 00:29:21,060 --> 00:29:23,740 För i min del så beror det lite på hur mycket jag har att göra.

541 00:29:23,960 --> 00:29:25,000 Oftast jobbar jag ganska mycket.

542 00:29:25,500 --> 00:29:27,060 Och då gör jag ingen research alls.

543 00:29:27,400 --> 00:29:29,240 Sen har man ju så här små idéer.

544 00:29:29,360 --> 00:29:31,720 Man ramlar över saker och ting när man sitter och pillar.

545 00:29:32,320 --> 00:29:32,540 Typ så här.

546 00:29:32,540 --> 00:29:33,940 Det här är ett konstigt beteende.

547 00:29:34,080 --> 00:29:35,300 Det ska jag titta på senare.

548 00:29:35,880 --> 00:29:39,140 Och de där grejerna brukar oftast intuitivt bli någonting till slut.

549 00:29:39,500 --> 00:29:42,340 Som CV 2018 0001.

550 00:29:43,560 --> 00:29:43,920 Mäktigt.

551 00:29:43,980 --> 00:29:44,960 Jag ska skriva det i mitt CV.

552 00:29:45,720 --> 00:29:46,720 Första sårbarheten.

553 00:29:46,840 --> 00:29:47,280 2018.

554 00:29:47,380 --> 00:29:47,820 På ditt CV.

555 00:29:48,160 --> 00:29:49,280 Ja, precis.

556 00:29:49,440 --> 00:29:50,000 Det är ändå mäktigt.

557 00:29:50,780 --> 00:29:51,360 Men hur som helst.

558 00:29:51,460 --> 00:29:56,060 Det är ju en kombination av exploits som har lett till Remote Code Execution.

559 00:29:56,060 --> 00:30:00,700 Sen att Juniper då är söta.

560 00:30:01,380 --> 00:30:04,160 Och bara nämner vad den faktiskt gör då.

561 00:30:04,340 --> 00:30:05,380 Remote Code Execution.

562 00:30:05,820 --> 00:30:10,420 Men inte har funderat på hur den hittades.

563 00:30:11,040 --> 00:30:14,900 Och hur och var i deras produkten hittades.

564 00:30:15,340 --> 00:30:16,820 Det har de inte reflekterat.

565 00:30:16,840 --> 00:30:22,200 Då kan man ju avslöja att det är ju en sårbarhet i sig.

566 00:30:22,360 --> 00:30:25,260 Att kunna nå till exploitvektorn.

567 00:30:25,360 --> 00:30:29,800 Att kunna exfiltrera den datan genom deras produkt.

568 00:30:31,040 --> 00:30:33,080 Nu kan det ju finnas folk som har tänkt på det.

569 00:30:33,100 --> 00:30:35,040 Jo, men det står ju i givet.

570 00:30:35,440 --> 00:30:36,040 Det kan finnas folk.

571 00:30:36,140 --> 00:30:38,360 Men de har i alla fall inte gått ut och sagt att de har tänkt på det.

572 00:30:38,560 --> 00:30:38,820 Nej.

573 00:30:39,700 --> 00:30:45,260 Det är också ett tecken på hur man, som vi var inne på innan.

574 00:30:45,260 --> 00:30:46,220 Man patchar.

575 00:30:46,840 --> 00:30:48,440 Orsaken, inte helheten.

576 00:30:48,460 --> 00:30:50,360 Man lagar symptomet, men inte problemet.

577 00:30:50,520 --> 00:30:50,660 Precis.

578 00:30:50,980 --> 00:30:57,960 Och problemet kommer ju då att göra att man kommer kunna hitta mer sårbarheter med all säkerhet.

579 00:30:58,260 --> 00:31:01,800 I exakt samma, i J-Web i det här fallet då.

580 00:31:01,820 --> 00:31:04,020 Som är administrationsgränssnittet för SRX.

581 00:31:05,220 --> 00:31:07,800 Det finns fler sårbarheter där.

582 00:31:07,880 --> 00:31:08,520 Jag vet det.

583 00:31:09,400 --> 00:31:11,420 Men i det här testet så behövde vi bara en.

584 00:31:12,280 --> 00:31:12,940 För att pocka.

585 00:31:12,940 --> 00:31:16,600 Och det här testet var ett sånt test.

586 00:31:16,840 --> 00:31:19,720 Där våran motståndare var så pass bra.

587 00:31:20,640 --> 00:31:21,980 Att vi hade ingen annan utväg.

588 00:31:22,040 --> 00:31:26,460 Vi fick gå på att försöka hitta sårbarheter i produkterna istället.

589 00:31:26,860 --> 00:31:29,260 Vilket är väldigt, väldigt, väldigt, väldigt ovanligt.

590 00:31:29,700 --> 00:31:31,520 Det hände en gång förra året.

591 00:31:34,000 --> 00:31:36,560 Tänkte du nämna, eller hade du någonting Peter som du tänkte säga?

592 00:31:36,560 --> 00:31:40,340 Nej, vi fortsätter på Toolchain.

593 00:31:41,580 --> 00:31:42,800 Du var inne på Burr.

594 00:31:42,800 --> 00:31:44,200 Har vi någon mer webb?

595 00:31:44,920 --> 00:31:46,240 Ja, det finns ju.

596 00:31:46,240 --> 00:31:48,420 Som sagt, Burr är ju ett stort ramverk.

597 00:31:48,560 --> 00:31:51,620 Och det finns ju en himla massa extensions dessutom till Burr.

598 00:31:51,680 --> 00:31:54,900 Som man kan använda sig av för att göra livet ännu enklare.

599 00:31:55,100 --> 00:32:00,840 Så att från ett recon-syvvinkel om du jobbar mot webb.

600 00:32:00,900 --> 00:32:03,500 Om du går in på en valfri webbapplikation.

601 00:32:03,660 --> 00:32:07,260 Så kommer det skickas en jävla massa requests i bakgrunden till olika platser.

602 00:32:08,400 --> 00:32:10,340 Som du förmodligen inte kommer se.

603 00:32:10,340 --> 00:32:15,460 Om du inte sitter och trycker nästa, nästa, nästa i proxy manuellt hela tiden.

604 00:32:15,600 --> 00:32:16,220 Vilket du inte gör.

605 00:32:16,240 --> 00:32:23,360 Då har du ju såklart Target-fliken i Burr, där du får en jättefin sitemap av allting som skickas.

606 00:32:23,360 --> 00:32:27,200 Men där finns ju också en hel del fina extensions som du kan lägga på.

607 00:32:27,500 --> 00:32:29,120 Som exempelvis Retire.js.

608 00:32:29,600 --> 00:32:33,160 Som automatiskt går in och identifierar alla JavaScript-bibliotek som laddas in.

609 00:32:33,220 --> 00:32:35,900 Och ser ifall det finns några sårbarheter i dem och rapporterar det.

610 00:32:37,720 --> 00:32:38,960 Den är ju jättebra.

611 00:32:39,880 --> 00:32:43,100 Borde folk komma i en sån här byggsystem och sånt också.

612 00:32:43,460 --> 00:32:46,200 Jag hade tänkt säga på och på om man var som jobbare.

613 00:32:46,240 --> 00:32:49,140 Som webbutvecklare så är ju OWASP, Dependency Check.

614 00:32:50,340 --> 00:32:51,860 Nu vet jag inte hur underhållande den är.

615 00:32:51,860 --> 00:32:56,060 Men den var väldigt användbar när jag satt som utvecklare i någon organisation.

616 00:32:56,260 --> 00:32:56,940 Där vi hämtade oss såhär.

617 00:32:57,720 --> 00:32:59,220 Är allt såhär gammalt?

618 00:32:59,460 --> 00:33:00,640 Det är bäst att börja jobba nu.

619 00:33:01,000 --> 00:33:05,500 Både Retire.js och OWASP Dependency Check går ju att köra som fristående verktyg också.

620 00:33:05,640 --> 00:33:07,260 Så man kan koppla in dem lite hur som helst.

621 00:33:07,700 --> 00:33:10,660 Jag använder dem i Burr för att det är enkelt och smidigt.

622 00:33:11,560 --> 00:33:14,940 Men sen är det väl också så att det är om man har någon betalversion av Burr.

623 00:33:15,020 --> 00:33:16,020 Så du får lov att använda de här.

624 00:33:16,240 --> 00:33:19,580 Eller så kan du inte använda modulerna till den utsträckningen väl?

625 00:33:19,800 --> 00:33:20,580 Ja, så är det.

626 00:33:20,660 --> 00:33:23,140 Fast å andra sidan, som sagt med de här modulerna.

627 00:33:23,260 --> 00:33:25,380 De är ju inte låsta till Burr på något sätt.

628 00:33:25,560 --> 00:33:29,440 Utan Retire.js och OWASP Dependency Check är ju en sorts projekt som du kan dra ner och köra.

629 00:33:29,460 --> 00:33:30,580 Men då får man ladda ner och köra dem externt.

630 00:33:30,600 --> 00:33:35,060 Det är bara det att här blir de inkorporerade i den automatiska skanningen.

631 00:33:36,060 --> 00:33:45,600 Där finns ju också sådana saker som märker automatiskt ifall det finns POP-objekt.

632 00:33:46,240 --> 00:33:53,200 Som skickas runt, om det finns Java-deserialiseringsproblem som kan letas efter automatiskt.

633 00:33:53,340 --> 00:33:58,160 Där kan man märka om någonstans så dyker det upp ett felmeddelande som du kanske inte nödvändigtvis ser.

634 00:33:58,180 --> 00:34:02,220 För du sitter och kollar igenom HTML-källkoden på alla sidor som laddas in.

635 00:34:02,540 --> 00:34:06,660 Men det gör den dynamiskt och flaggar för att här finns ett error message.

636 00:34:06,760 --> 00:34:07,500 Kolla på det.

637 00:34:09,000 --> 00:34:12,000 Alla sådana saker är ju supervärdefulla just i recon-fasen.

638 00:34:12,920 --> 00:34:15,640 Och där kan man ju säga också att jag jobbar ju mycket med

639 00:34:15,640 --> 00:34:21,900 att fastställa att ett CMS eller en plugin eller en modul

640 00:34:21,900 --> 00:34:23,700 eller vad det nu kan tänkas vara i en webbapplikation

641 00:34:23,700 --> 00:34:26,740 är den webbapplikationsversionen som den säger att den är.

642 00:34:26,980 --> 00:34:29,620 Och sedan så använder jag till exempel SearchSploit

643 00:34:29,620 --> 00:34:34,300 som går in och tittar på ExploitDB och PacketStorm

644 00:34:34,300 --> 00:34:39,640 och lite olika databaser för sårbarheter där det även finns POP-kod.

645 00:34:40,140 --> 00:34:41,560 Så då listar den tillbaka.

646 00:34:41,720 --> 00:34:44,580 De här CVE-erna har vi hittat på ExploitDB till exempel.

647 00:34:44,580 --> 00:34:46,420 Här kan du se hur den utnyttjades.

648 00:34:46,660 --> 00:34:48,900 Och det kan vara enkla sårbarheter som XSS-er

649 00:34:48,900 --> 00:34:52,620 eller som inte är så himla mäckiga

650 00:34:52,620 --> 00:34:59,240 som inte behöver ett jätteprogrammatiskt förkrav för att kunna exploatera

651 00:34:59,240 --> 00:35:02,600 utan det är liksom one-liners också som ger mig en hint

652 00:35:02,600 --> 00:35:05,280 att här borde det vara något sånt här givet den.

653 00:35:05,320 --> 00:35:06,100 Kolla mer på detta.

654 00:35:06,200 --> 00:35:08,120 Precis, så det är egentligen det det handlar om.

655 00:35:08,240 --> 00:35:11,380 Jag skulle nämna det om just XSS som du var inne på där

656 00:35:11,380 --> 00:35:14,240 där det finns en extension till Burp och igen

657 00:35:14,580 --> 00:35:16,580 som heter Reflected Parameters.

658 00:35:17,140 --> 00:35:22,000 Det den gör är att den kollar på alla parametrar som skickas i alla requests

659 00:35:22,260 --> 00:35:26,100 värdet på dem och sedan ifall det värdet som skickas i en parameter

660 00:35:26,100 --> 00:35:29,420 sedan existerar i outputen från den requesten

661 00:35:29,680 --> 00:35:30,700 så flaggar den för det.

662 00:35:31,480 --> 00:35:33,520 För där har du en potentiell XSS-vektor.

663 00:35:34,800 --> 00:35:38,140 Vilket är ganska värdefullt också.

664 00:35:39,420 --> 00:35:43,760 Jag har börjat använda Burp mer och mer, till och med gått över till Pro-varianten nu.

665 00:35:43,760 --> 00:35:44,460 Tack vare vår verksamhet.

666 00:35:44,460 --> 00:35:47,540 Tack vare vår snälla arbetsgivare som har massa licenser.

667 00:35:47,780 --> 00:35:51,120 Men det är faktiskt extremt användbart.

668 00:35:51,120 --> 00:35:53,940 Det är riktigt coolt faktiskt.

669 00:35:54,180 --> 00:36:00,080 Så jag kommer nämna där också att det är relativt enkelt att bygga sina egna extensions till Burp.

670 00:36:00,580 --> 00:36:04,180 Om man vill sätta sig in i deras API som är ganska väl dokumenterat

671 00:36:04,180 --> 00:36:08,780 så kan man bygga egna saker för sina specifika nischade case.

672 00:36:09,040 --> 00:36:12,880 Jag gick en kurs en gång för typ en miljon år sedan nu.

673 00:36:12,880 --> 00:36:14,420 Man heter Python.

674 00:36:14,460 --> 00:36:15,740 Det är en kurs som heter Python for Hackers.

675 00:36:15,740 --> 00:36:17,280 Då fick vi skriva plugins för Burp.

676 00:36:20,100 --> 00:36:22,140 Användbart tyvärr har det fallit i träda.

677 00:36:22,140 --> 00:36:23,680 Och det blir ju så när man inte använder det.

678 00:36:24,960 --> 00:36:29,300 Men det är oerhört kraftfull motor där i bakgrunden som man kan använda

679 00:36:30,080 --> 00:36:32,120 för att göra saker enkelt för sig själv.

680 00:36:32,380 --> 00:36:39,800 Annars vill jag ändå slå ett slag för just Python när det gäller som verktyg.

681 00:36:40,060 --> 00:36:42,100 Alltså är det som programmeringsspråk?

682 00:36:42,100 --> 00:36:43,640 Just för att kunna skripta.

683 00:36:43,640 --> 00:36:44,140 Ja.

684 00:36:44,460 --> 00:36:50,860 Eller för att kunna automatisera saker som annars tar en vansinnig massa tid.

685 00:36:50,860 --> 00:36:54,700 Ja, och det är så jävla modulärt.

686 00:36:54,960 --> 00:36:57,780 Jag använder ju bara det.

687 00:36:57,780 --> 00:37:02,120 Det enda jag skulle kunna säga är att jag kan skriva någonting i som gör något.

688 00:37:02,120 --> 00:37:08,780 Det finns ju nästan alltid så mycket gratis att hämta med en googling bort.

689 00:37:08,780 --> 00:37:13,900 Det är alltid någon som har tänkt på att göra ungefär samma som du har gjort.

690 00:37:13,900 --> 00:37:16,460 För mig är det väldigt snabbt att komma igång med någonting.

691 00:37:16,720 --> 00:37:18,760 Sen att det kanske inte blir det snyggaste i världen.

692 00:37:18,760 --> 00:37:20,820 Det spelar ingen roll, jag har en CPU som gör det här.

693 00:37:21,320 --> 00:37:25,680 Men jag håller med. Väldigt modulärt och det finns väldigt mycket

694 00:37:25,940 --> 00:37:31,560 libbar, väldigt mycket bra grejer för att kunna göra det mesta.

695 00:37:31,820 --> 00:37:37,460 Ja, men precis. Låt oss säga att man har skrivit en proof of concept-kod i Python

696 00:37:37,460 --> 00:37:41,040 som exploaterar en specifik sårbarhet.

697 00:37:41,300 --> 00:37:43,860 Att sen då hitta någon som har gjort ett

698 00:37:44,160 --> 00:37:45,700 scanner

699 00:37:46,200 --> 00:37:49,280 som skannar en viss port och testar för en

700 00:37:49,780 --> 00:37:51,320 viss typ av respons.

701 00:37:51,840 --> 00:37:57,980 Sen är det bara att klippa och klistra så har man plötsligt ett automatiserat exploit-verktyg som skannar

702 00:37:58,240 --> 00:38:00,280 internet efter just denna sårbarheten.

703 00:38:00,540 --> 00:38:01,060 Japp, så är det.

704 00:38:01,560 --> 00:38:03,360 Har jag hört.

705 00:38:03,620 --> 00:38:09,240 Vi pratade ju lite om Android tidigare idag och

706 00:38:10,520 --> 00:38:11,800 det finns ju

707 00:38:12,580 --> 00:38:13,860 liksom

708 00:38:14,160 --> 00:38:16,720 Androids egen utvecklingsvit.

709 00:38:16,980 --> 00:38:19,020 Det finns en Android-emulator där man kan

710 00:38:19,540 --> 00:38:23,880 dumpa in applikationen och köra och har man en bra dag så går det att

711 00:38:24,400 --> 00:38:27,720 man övermittla sin lilla applikation.

712 00:38:28,500 --> 00:38:30,020 Man kan titta in i den.

713 00:38:30,280 --> 00:38:32,580 Om man har en bra dag är det värt att lägga till.

714 00:38:32,840 --> 00:38:33,620 Precis, om man har en bra dag.

715 00:38:34,120 --> 00:38:40,260 Och har man en fysisk telefon så är det ju inte ovanligt att det går att läsa sig till på internet hur man gör

716 00:38:40,520 --> 00:38:41,300 sig till

717 00:38:41,540 --> 00:38:43,600 Android-developer på telefonen.

718 00:38:43,900 --> 00:38:46,200 Så kan man ju plötsligt köra ADB mot

719 00:38:46,720 --> 00:38:49,020 den riktiga telefonen och faktiskt såhär

720 00:38:49,280 --> 00:38:50,820 dumpa ut loggar och sådant.

721 00:38:51,060 --> 00:38:54,400 Och se liksom såhär att det kraschar verkligen grejer när jag gör de här grejerna.

722 00:38:54,660 --> 00:38:56,180 Någonting går sönder i telefonen.

723 00:38:56,440 --> 00:38:57,720 Det var ju intressant.

724 00:38:57,980 --> 00:39:03,100 En annan sak som, och där kan ju, alltså Burp har ju detta inbyggt med en proxy

725 00:39:03,360 --> 00:39:06,940 där du kan liksom pausa och ändra på saker och ting.

726 00:39:07,200 --> 00:39:12,320 Men det där går ju också att bygga utan Burp.

727 00:39:12,580 --> 00:39:13,080 Ja.

728 00:39:13,080 --> 00:39:14,360 Just när det gäller då kanske

729 00:39:14,880 --> 00:39:16,660 om man vill titta på en

730 00:39:16,920 --> 00:39:18,200 app i en telefon

731 00:39:18,720 --> 00:39:23,580 att låta den då ansluta till en accesspunkt som du kontrollerar med en proxy.

732 00:39:23,840 --> 00:39:24,340 Japp.

733 00:39:24,600 --> 00:39:26,140 Så kan man ju

734 00:39:26,640 --> 00:39:27,160 på många

735 00:39:27,680 --> 00:39:28,440 sätt då kanske

736 00:39:28,700 --> 00:39:34,080 komma åt parametrar som du annars inte skulle komma åt för att du inte liksom har kontroll över OS-et i en telefon.

737 00:39:34,320 --> 00:39:37,140 Du kan göra API-testning på den vägen.

738 00:39:37,400 --> 00:39:42,000 Det är extremt vanligt i nätverksanalys också att man till exempel har en spannport till exempel.

739 00:39:42,260 --> 00:39:42,760 Ja.

740 00:39:42,760 --> 00:39:46,080 Där man ser till att man kan sitta och lyssna på det som kommer till orden.

741 00:39:46,340 --> 00:39:52,480 Vill man ha det riktigt roligt så kan du konfigurera upp datorns OS att köra allting genom din lokala proxy.

742 00:39:53,000 --> 00:39:57,600 Då kan du se väldigt många konstiga saker som pratar konstiga saker på internet.

743 00:39:57,860 --> 00:40:03,760 Så då kan du till och med göra desktop-applikationshacking genom exempelvis Burp.

744 00:40:04,260 --> 00:40:11,940 Kör man lite snitch till exempel om man kör OSX så kan du bara markera tjänsten som har en utgående regel för nätverk.

745 00:40:11,940 --> 00:40:16,540 Och dumpa all data som den genererar i en PCAP så kan man titta på specifikt bara

746 00:40:16,800 --> 00:40:19,880 den PID-en egentligen, vad den anlockerar och vilka strömmar den använder.

747 00:40:20,140 --> 00:40:21,420 Också intressant.

748 00:40:21,660 --> 00:40:23,720 Sen kan man ju säga det också att

749 00:40:23,980 --> 00:40:26,280 Assured, ett bolag som jag känner till lite vagt,

750 00:40:26,780 --> 00:40:29,100 har ju spannport på sin

751 00:40:29,340 --> 00:40:30,380 Office LAN-switch

752 00:40:30,880 --> 00:40:33,440 som dumpar allting till en

753 00:40:33,960 --> 00:40:34,980 Wall of Cheap.

754 00:40:35,240 --> 00:40:37,020 Ja, mycket på det där alltså.

755 00:40:37,280 --> 00:40:41,380 Och där är du skämskudde om man hamnar på den listan liksom.

756 00:40:41,380 --> 00:40:43,940 Nu tror jag dock att den är avstängd av någon anledning.

757 00:40:44,200 --> 00:40:44,960 Skärmen är det iallafall.

758 00:40:45,220 --> 00:40:47,780 Ja, för där postar man ju upp då.

759 00:40:48,040 --> 00:40:50,600 Alla lösenord som går till klartext.

760 00:40:50,860 --> 00:40:56,220 Ja, alla lösenord som går till klartext och vilken IP det står och även hostname om den kan resolva hostname.

761 00:40:56,480 --> 00:41:01,100 Jag vill minnas att den var uppe en stund sen någon kom på att den här var ju exponerad mot internet.

762 00:41:03,140 --> 00:41:05,700 Nej, men det har den aldrig varit.

763 00:41:05,960 --> 00:41:10,300 Däremot så fick vi höra av oss till vår vän Anders på ESET.

764 00:41:10,560 --> 00:41:11,340 För ESET

765 00:41:11,640 --> 00:41:14,200 kör någon Basic Authentication på någon

766 00:41:14,460 --> 00:41:15,980 signatur

767 00:41:16,240 --> 00:41:17,020 Download.

768 00:41:17,780 --> 00:41:21,620 Och det kan man ju också nämna att det är sådana saker vi hittat

769 00:41:21,880 --> 00:41:22,900 nu har jag letat

770 00:41:23,160 --> 00:41:26,740 Bug Bounties och sådant, att man kollar efter hur

771 00:41:27,260 --> 00:41:30,580 hur sker uppdatering av den här mjukvaran egentligen.

772 00:41:31,100 --> 00:41:34,420 Ja, men den går ut och letar efter finns det ett nytt paket

773 00:41:34,680 --> 00:41:35,960 på den här url-en.

774 00:41:36,980 --> 00:41:40,060 Kör den det över SSL?

775 00:41:40,300 --> 00:41:41,340 Nej, kolla den.

776 00:41:41,640 --> 00:41:43,420 Men att det faktiskt är den hosten? Nej.

777 00:41:43,680 --> 00:41:50,860 Så sitter du bara på samma nät där vi gjort, det här kan jag prata om för att vi gjorde detta för League of Legends.

778 00:41:51,360 --> 00:41:58,780 De har ju en, när du öppnar League of Legends, det här stora datorspelet, så går den ut på nätet och frågar hej.

779 00:41:59,040 --> 00:42:01,340 Finns det en uppdatering?

780 00:42:01,600 --> 00:42:05,180 Om det finns det så börjar den ladda ner ett paket som den sen bara kör.

781 00:42:05,700 --> 00:42:08,520 Och den kör ju det i användarkontext då?

782 00:42:09,020 --> 00:42:11,080 Där finns det ingenting som

783 00:42:11,380 --> 00:42:13,940 kontrollerar att den är hosten.

784 00:42:14,200 --> 00:42:15,220 Vi vet inte om det är det, vi har inte tittat på det.

785 00:42:15,480 --> 00:42:18,800 Ja, när vi skickade in rapporten så sa de att det här är en känd sårbarhet, vi kommer inte ändra det.

786 00:42:19,060 --> 00:42:22,900 Ja, vilket är skitkonstigt, för grejen är såhär, det här är ju ett spel.

787 00:42:23,160 --> 00:42:27,260 Du kan göra vad du vill. Ja, där kunde vi ju relativt enkelt, sitter du på samma nät

788 00:42:28,780 --> 00:42:31,100 så kan vi, eller mittma dig egentligen då.

789 00:42:31,340 --> 00:42:34,420 Alla måste ju använda samma launcher för att starta spelet.

790 00:42:34,680 --> 00:42:36,220 Då kan man mittma alla som spelar.

791 00:42:36,460 --> 00:42:39,540 Och då vet vi ju exakt att den kommer gå och leta här.

792 00:42:39,800 --> 00:42:41,340 Bra, den adressen äger vi nu.

793 00:42:41,640 --> 00:42:43,420 Dra ner det här på jämnkoden och kör den.

794 00:42:44,200 --> 00:42:46,500 Den pocken var ju snyggt byggd

795 00:42:46,760 --> 00:42:47,780 och såhär

796 00:42:48,300 --> 00:42:51,100 det är ändå kidsens heliga graal vi tar över.

797 00:42:51,360 --> 00:42:55,200 Den fick vi inga ståla för, men vi fick ståla för sårbarheten som var såhär

798 00:42:55,720 --> 00:42:57,500 skitlöjliga.

799 00:42:57,760 --> 00:43:01,600 Ja, såhär, anonymous mail relay genom typ

800 00:43:02,380 --> 00:43:03,660 det var fan

801 00:43:04,160 --> 00:43:08,000 Ja, vi lyckades pocka det, men det var fan stars of line för att exploita den då.

802 00:43:08,260 --> 00:43:10,060 Men det fick vi liksom duktigt med att ståla för.

803 00:43:10,300 --> 00:43:10,820 Men att

804 00:43:10,820 --> 00:43:12,100 göra en riktig pock

805 00:43:12,620 --> 00:43:16,200 som fullständigt våldtar integritetsskyddet i deras launcher, bara nej

806 00:43:16,700 --> 00:43:18,500 det är local LAN.

807 00:43:18,760 --> 00:43:19,260 Det är inte okej.

808 00:43:19,520 --> 00:43:21,320 Eller såhär, known vulnerability.

809 00:43:22,080 --> 00:43:23,360 Vi kommer inte göra det. Och det var inte en dupe.

810 00:43:23,620 --> 00:43:26,940 Det var inte det att det var redan någon som hade submitat det, utan det var bara såhär, nej men

811 00:43:27,200 --> 00:43:28,480 det kommer, det är lugnt.

812 00:43:29,000 --> 00:43:33,340 Ja, nu spårar vi ur lite. Ja, men det är bara sätt man kan använda de här typerna av verktyg på.

813 00:43:33,600 --> 00:43:34,880 Men om vi då tittar på…

814 00:43:35,140 --> 00:43:38,980 Maven som många utvecklare kör ju samma grej där liksom.

815 00:43:39,240 --> 00:43:40,260 Jag tror det där är supervanligt.

816 00:43:40,260 --> 00:43:40,780 Tankare även.

817 00:43:41,080 --> 00:43:44,400 Hela internet och flera av dem du tankar även går över

818 00:43:44,660 --> 00:43:46,960 HTP, för det finns inga signaturer eller någonting.

819 00:43:47,480 --> 00:43:52,600 Ganska vanligt också om man använder till exempel stora javascriptsbibliotek idag som är sjukt träddigt att göra.

820 00:43:52,860 --> 00:43:55,660 Då validerar man kanske inte tredjepartsdependencies hela vägen ut.

821 00:43:55,920 --> 00:43:57,460 Exakt, det var ju någon kille som

822 00:43:57,720 --> 00:44:02,580 la upp en hypotetisk bloggpost om hur man skulle kunna hacka väldigt många sajter samtidigt.

823 00:44:02,840 --> 00:44:07,700 Du bygger en tredjepartsdependency som kommer konsumeras av många javascriptbibliotek.

824 00:44:08,220 --> 00:44:10,780 Och sedan så har du med dig

825 00:44:11,080 --> 00:44:14,920 lite kod med den som bara ligger och lyssnar på så fort någon skriver in ett lösenord.

826 00:44:15,180 --> 00:44:15,680 Skicka det hit.

827 00:44:17,220 --> 00:44:18,240 Ta Docker till exempel.

828 00:44:18,500 --> 00:44:20,040 Det kommer ingen upptäcka.

829 00:44:20,540 --> 00:44:22,340 Docker då blir ju ett bygge.

830 00:44:22,600 --> 00:44:24,380 Det bygget signaturer hanteras.

831 00:44:24,900 --> 00:44:29,260 Men Docker innehåller ju en jävla massa dependencies som i sin tur konsumeras av

832 00:44:29,500 --> 00:44:31,560 det grundläggande repot som i sin tur är inställd.

833 00:44:31,820 --> 00:44:33,600 Så det är såhär, det bör man ha koll på.

834 00:44:34,380 --> 00:44:36,940 Men vi har kommit ifrån ämnet lite tror jag.

835 00:44:37,180 --> 00:44:40,520 Vi har pratat om recon och vi har pratat lite om exploitation.

836 00:44:40,820 --> 00:44:41,580 Ja, ja.

837 00:44:41,840 --> 00:44:48,240 Jag skulle vilja nämna scanningsmotorn i Burp också där man faktiskt börjar prata om fassning och sådana saker.

838 00:44:48,500 --> 00:44:54,640 Jag skulle ändå vilja slå ett slag för när vi pratar om recon, lite beroende på hur skopet för uppdraget ser ut då.

839 00:44:54,900 --> 00:45:01,300 Att faktiskt använda sig av gammal, hedlig hotmodellering.

840 00:45:01,820 --> 00:45:02,580 Ja, absolut.

841 00:45:02,840 --> 00:45:07,960 Du ritar upp arkitekturen och tittar på,

842 00:45:08,460 --> 00:45:10,520 använder stride-modellen och

843 00:45:10,820 --> 00:45:12,100 faktiskt identifierar.

844 00:45:12,360 --> 00:45:14,140 Geometriska figurer.

845 00:45:14,400 --> 00:45:15,420 Bollar.

846 00:45:15,680 --> 00:45:16,700 Vi har fem dagar på oss.

847 00:45:16,960 --> 00:45:20,300 Vi ska rita geometriska figurer med threat actors.

848 00:45:20,540 --> 00:45:23,620 Men tro mig, jag har sparat många, många timmar på att använda det.

849 00:45:23,880 --> 00:45:25,160 Är det killen från storbolag?

850 00:45:25,420 --> 00:45:25,920 Ja.

851 00:45:26,180 --> 00:45:26,940 Ta en kaffe på det eller?

852 00:45:29,500 --> 00:45:32,320 Jag sitter och skakar av koffeinöverdom så oftast.

853 00:45:32,580 --> 00:45:34,380 På riktigt alltså.

854 00:45:34,620 --> 00:45:37,700 Du visualiserar ju på ett ganska bra sätt, det kan jag hålla med om.

855 00:45:37,960 --> 00:45:40,780 Lite på samma tema kan man också nämna read the fucking manual.

856 00:45:41,080 --> 00:45:44,920 Ja, herregud ja.

857 00:45:45,180 --> 00:45:49,020 Om du börjar läsa spesar på grejer så är det ett ganska effektivt sätt.

858 00:45:49,260 --> 00:45:51,320 Hemliga publika IP-adresser.

859 00:45:51,580 --> 00:45:54,380 Börja läsa dem så kommer ni inse att…

860 00:45:54,640 --> 00:45:55,920 Det hänger inte riktigt ihop.

861 00:45:56,180 --> 00:45:58,480 Exakt. Här är det en diskrepans.

862 00:45:59,500 --> 00:46:01,300 Nej, men så är det ju.

863 00:46:01,560 --> 00:46:02,840 Och sen skulle jag säga…

864 00:46:04,120 --> 00:46:07,960 Jag gör en jävla massa konfigurationsreview oftast.

865 00:46:08,220 --> 00:46:10,780 Inte oftast, men det händer liksom och så är det oftast.

866 00:46:11,080 --> 00:46:16,460 Tillämpningar på det. Då är det ju bra att ha parsers för olika log eller konfigurationsformat.

867 00:46:16,960 --> 00:46:20,300 För jag menar, det är inte asnice att lalla igenom en

868 00:46:21,820 --> 00:46:27,200 astor brandvägskonfiguration eller ta någon så här riktigt värdelös brandväg, typ Checkpoint till exempel.

869 00:46:27,720 --> 00:46:33,340 Ursäkta alla er som kör Checkpoint, jag beklagar. Men kommer ni upp över tusen regler så vet ni vad jag menar.

870 00:46:33,600 --> 00:46:34,620 Det är liksom inget bra.

871 00:46:34,880 --> 00:46:38,980 Det går liksom inte att göra. Jag fattar inte hur de kan leva.

872 00:46:39,240 --> 00:46:40,520 Så är det.

873 00:46:40,520 --> 00:46:44,360 Där får man ju problemet att det blir så komplext. Det är nästlade grupper i grupper.

874 00:46:44,620 --> 00:46:46,920 Det är så jävla lätt att göra fel.

875 00:46:47,180 --> 00:46:51,280 Och så finns det en massa ascoola blad man kan koppla på för att analysera regler och sådant.

876 00:46:51,520 --> 00:46:53,060 Som folk köper men inte använder.

877 00:46:54,340 --> 00:46:57,680 Och ni vet precis vilka jag menar. Jag vet ju att det är så här.

878 00:46:57,920 --> 00:47:03,040 Och då finns det ju massa bra parsers som man kan använda. Nipper är väl det som är kommersiellt gångbart.

879 00:47:03,300 --> 00:47:05,100 Men riktigt, riktigt, riktigt dyrt.

880 00:47:05,360 --> 00:47:10,480 Men det är ju som du säger att man måste ju testa liksom. Eller så är det väldigt svårt.

881 00:47:10,780 --> 00:47:12,820 Det är svårt att veta i stora brandvägskonfigurationer.

882 00:47:13,080 --> 00:47:15,640 Och då skulle man ha någonting som är logikstyrt.

883 00:47:15,900 --> 00:47:17,180 Som förstår formaten.

884 00:47:17,440 --> 00:47:18,720 Fast då tänker jag så här.

885 00:47:20,240 --> 00:47:24,600 Och jag tänker på ett specifikt fall som vi inte kan prata om.

886 00:47:24,860 --> 00:47:26,140 Prata runt det.

887 00:47:26,400 --> 00:47:34,580 Vi kan prata runt det. Där man då tänker just det här med nästlade grupper i en brandvägskonfiguration.

888 00:47:34,840 --> 00:47:36,380 Där man blandar då in och ut sida.

889 00:47:36,640 --> 00:47:39,960 Till exempel blandar. Råkar få med en

890 00:47:39,960 --> 00:47:42,260 En grupp som

891 00:47:42,520 --> 00:47:45,080 Som inte ska vara i en annan grupp.

892 00:47:45,340 --> 00:47:47,380 Och där kan jag tänka.

893 00:47:47,640 --> 00:47:51,480 Sättet som vi hittade det på. Det var ju inte med avancerade Nipper Studios.

894 00:47:51,740 --> 00:47:57,120 Utan det är ju att man känner människor och vet hur lata brandvägstekniker tänker.

895 00:47:57,360 --> 00:47:58,140 Och fungerar.

896 00:47:58,400 --> 00:48:00,700 Ja men i det fallet som du nämnde nu.

897 00:48:00,960 --> 00:48:05,560 Så var ju det flera saker som gjorde att vi började titta där.

898 00:48:05,820 --> 00:48:09,660 Så det här kommer ju in från fel vinkel. Men det blir otydligt för de som lyssnar.

899 00:48:09,960 --> 00:48:10,720 Ja det kommer till då.

900 00:48:10,980 --> 00:48:13,040 Mycket är ju erfarenhet också.

901 00:48:13,280 --> 00:48:16,100 Men Routedefense är någonting som jag har byggt vidare på.

902 00:48:16,360 --> 00:48:18,400 Routedefense var ett

903 00:48:18,920 --> 00:48:24,300 Ett ramverk för framförallt Cisco konfigurationsformat.

904 00:48:24,560 --> 00:48:28,400 Som egentligen då kan ta en ASA och en PIX och

905 00:48:28,640 --> 00:48:29,920 Validera reglerna.

906 00:48:30,180 --> 00:48:35,040 Och sedan ge dig en kvalificerad gissning på hur vidare det här är rätt konfigurerat eller inte.

907 00:48:35,820 --> 00:48:37,860 Den typen av parsers är inte dumt.

908 00:48:38,380 --> 00:48:39,920 Det finns för nästan alla lågor.

909 00:48:40,220 --> 00:48:42,000 Eller alla konfigurationsformat idag.

910 00:48:42,260 --> 00:48:44,060 Det där sparar mycket tid.

911 00:48:44,560 --> 00:48:49,940 För då kan man titta på överlappande regler. Den har liksom koll på var ett nät börjar och var ett nät slutar.

912 00:48:50,200 --> 00:48:51,480 Den har koll på

913 00:48:53,020 --> 00:48:56,600 Olika zonkoncept. Alltså Trust on Trust, MZ.

914 00:48:56,860 --> 00:48:59,160 Du kan definiera vad du letar efter.

915 00:48:59,420 --> 00:49:02,480 Det blir alltså sökbart på ett helt annat sätt. För den som

916 00:49:02,740 --> 00:49:08,880 Har tittat på en konfigurationsexport från, ja men ta vilken jävla tillverkare som helst. Så är ju det ganska mäckigt format oftast.

917 00:49:08,880 --> 00:49:11,960 Eller man har ett proprietärt format eller vad man nu kan tänka sig.

918 00:49:12,200 --> 00:49:18,100 Så det är ganska bra att kunna få ut det till en CSV eller en XML eller någonting så man kan behandla datat och sedan

919 00:49:18,600 --> 00:49:22,700 Ha ett verktyg som faktiskt masserar det där i det man faktiskt vill titta på.

920 00:49:22,960 --> 00:49:25,260 Eller gömmer man XMLen i en binär blob?

921 00:49:25,520 --> 00:49:30,640 Ja, Mikael Bohman gjorde ju för många år sedan en väldigt

922 00:49:31,160 --> 00:49:37,560 Enkel och väldigt lyckad grej med att jag bad honom bara sätta upp en server

923 00:49:38,880 --> 00:49:40,160 Och logga allt.

924 00:49:40,420 --> 00:49:42,460 Bara berätta om den tar emot något.

925 00:49:42,720 --> 00:49:45,800 Och sen testar vi från ett nätverk där ingenting skulle kunna gå ut.

926 00:49:47,080 --> 00:49:50,920 Och mycket riktigt så kunde ju, vi lyckades ju aldrig få någonting att ansluta tillbaks.

927 00:49:51,160 --> 00:49:54,500 Däremot så visade det sig att det var ju superlätt att exfiltrera data för

928 00:49:55,000 --> 00:49:59,100 Jag tror både UDP och IDP, SMP och sådant kunde vi trycka ut.

929 00:49:59,360 --> 00:50:06,780 Precis och nu är du inne på den baksidan med firewalls och firewalls sysops generellt.

930 00:50:07,040 --> 00:50:08,580 Gräsdata filtrering existerar inte.

931 00:50:08,880 --> 00:50:13,480 ICMP är det enda sättet att bevisa att någonting faktiskt fungerar.

932 00:50:14,520 --> 00:50:22,700 ICMP är det enda sättet att verkligen garantera att någonting fungerar.

933 00:50:23,220 --> 00:50:25,780 Ja det är ironi, det är fullständigt ironi.

934 00:50:26,040 --> 00:50:30,380 Jag har till och med sett att man har byggt quality of service-tabellen för ICMP.

935 00:50:30,640 --> 00:50:34,220 För det är så man blir vettad för hur vidare tjänsten är bra eller dålig.

936 00:50:35,240 --> 00:50:37,560 Och det du säger nu är liksom sant.

937 00:50:37,800 --> 00:50:38,580 ICMP och UDP är liksom sant.

938 00:50:38,880 --> 00:50:40,680 Det är liksom, det är ingen som vet det, det är magi.

939 00:50:40,920 --> 00:50:42,980 Det är samma IPv6, det är också magi.

940 00:50:43,480 --> 00:50:50,400 Och det gör ju att, då ska man nog inte konfigurera säkerhetsmekanismer kring det här om man inte vet vad fan det är man sysslar med.

941 00:50:50,660 --> 00:50:51,680 Men det är ganska vanligt.

942 00:50:52,200 --> 00:50:57,060 Problemet är ju att exfiltrera data är alldeles svårt.

943 00:50:57,320 --> 00:51:03,960 Det finns ju den här roliga konflikten i IP att

944 00:51:04,480 --> 00:51:08,320 Du vill ju alltid tillåta ICMP

945 00:51:08,880 --> 00:51:13,240 ICMP är unreachable annars.

946 00:51:13,480 --> 00:51:18,100 Om inte den kan nå ut så sabbar du PA50U Discovery.

947 00:51:18,600 --> 00:51:24,240 Men då har du också sagt att det kommer alltid gå att göra exfiltrering från servernätet om det är det den är en exploit därinne.

948 00:51:25,000 --> 00:51:26,040 Vilket så här,

949 00:51:26,280 --> 00:51:28,340 jag vet inte vad man ska göra riktigt.

950 00:51:28,600 --> 00:51:29,100 Det är jobbigt.

951 00:51:29,360 --> 00:51:32,440 Jag vet inte, jag höll på att säga att jag har jobbat med

952 00:51:32,680 --> 00:51:34,220 nätverk i

953 00:51:34,740 --> 00:51:36,280 över 25 år men

954 00:51:37,040 --> 00:51:38,580 varenda gång man tycker att

955 00:51:38,880 --> 00:51:39,900 nej men vi

956 00:51:40,680 --> 00:51:44,760 vi släpper inte igenom ICMP, EcoRequest, Reply och

957 00:51:45,020 --> 00:51:45,800 MTU

958 00:51:46,820 --> 00:51:49,120 TTL, Exided och så här.

959 00:51:49,640 --> 00:51:50,140 Men

960 00:51:50,920 --> 00:51:54,240 problemet är att då får du alltid

961 00:51:56,040 --> 00:52:02,940 vara den som bevisar att jo men titta här paketen kommer fram och då behöver du liksom

962 00:52:03,200 --> 00:52:03,720 i stort sett

963 00:52:04,740 --> 00:52:06,020 logga in på

964 00:52:06,280 --> 00:52:08,580 på varenda endpunkt och visa det.

965 00:52:08,880 --> 00:52:12,720 Alltså kolla här, du har en öppen TCP-sektion.

966 00:52:12,980 --> 00:52:16,560 Jag har gjort en scanner som gör en full TCP-sektion.

967 00:52:16,820 --> 00:52:20,920 En session mot given tjänst, alltså Skype är asenkelt.

968 00:52:21,160 --> 00:52:24,240 Men då kan du liksom ladda den med en CSV-lista med hostar.

969 00:52:24,500 --> 00:52:27,560 Och så gör den en riktig connect och gör en

970 00:52:27,820 --> 00:52:31,160 pre-test connect och en after-test connect.

971 00:52:31,660 --> 00:52:34,220 Och sen parsar den listan så säger den att

972 00:52:34,480 --> 00:52:36,780 när jag körde testet första gången så svarade 80 hostar.

973 00:52:37,040 --> 00:52:38,580 När jag körde testet andra gången så svarade 70 hostar.

974 00:52:38,880 --> 00:52:43,740 Och den enda som inte svarade var den här med den här mackadressen.

975 00:52:44,760 --> 00:52:45,280 Det är ändå snyggt.

976 00:52:47,840 --> 00:52:49,640 Då har vi inte använt TCP.

977 00:52:49,880 --> 00:52:51,940 Nej men jag säger inte att

978 00:52:52,440 --> 00:52:58,340 problemet är att, ursäkta uttrycket, men

979 00:52:59,620 --> 00:53:05,500 pöbeln där ute använder ju ping för att se om brandväggen är öppen.

980 00:53:05,760 --> 00:53:08,580 Och du har inte i huvud taget svarat på om rätt port är öppen.

981 00:53:08,880 --> 00:53:09,640 Nej.

982 00:53:09,900 --> 00:53:12,460 Det är det jag menar.

983 00:53:12,720 --> 00:53:14,520 Så vad ger det då egentligen?

984 00:53:14,760 --> 00:53:17,580 Skit i det. Nu, vi spårade lite.

985 00:53:17,840 --> 00:53:21,680 Man kan ju säga att exfiltreringsskydd är väldigt svårt för det är ju som de här

986 00:53:21,940 --> 00:53:26,280 Comment Crew som de kallade kineserna som enligt uppgift då

987 00:53:26,800 --> 00:53:32,680 dumpade ut data de ville få ut i kommentarerna på webbsidor just för att

988 00:53:32,940 --> 00:53:34,740 då går du den rätta vägen ut.

989 00:53:35,000 --> 00:53:38,840 Så då sker ju exfiltrering över den kanalen som ska och måste vara upp.

990 00:53:39,140 --> 00:53:41,700 Men det är ju samma, det finns ju

991 00:53:41,960 --> 00:53:47,320 coola verktyg idag som får data att se ut som TLS-sessionen till exempel.

992 00:53:47,580 --> 00:53:52,200 Alltså TLS-ad trafik eller får data att se ut som en viss

993 00:53:52,440 --> 00:53:57,820 ström som det inte är. Vilket är skitsnyggt verkligen i exfiltreringsförfarandet då.

994 00:53:58,340 --> 00:54:01,920 Ja, det är coolt. Men då har vi pratat lite om

995 00:54:02,680 --> 00:54:06,780 vi tappade lite där. Men så att man ska kolla på kod då?

996 00:54:07,040 --> 00:54:08,580 Ja.

997 00:54:09,140 --> 00:54:14,520 Jag använder ju typ någon form utav IDE som förstår språket jag tittar på.

998 00:54:15,280 --> 00:54:19,380 Det är där det börjar och sedan så är jag så dålig på att koda.

999 00:54:19,640 --> 00:54:22,200 Så jag tittar på, säg att det är till exempel Go.

1000 00:54:22,700 --> 00:54:26,040 Okej, vad är normala misconceptions i Go

1001 00:54:26,540 --> 00:54:27,820 givet det skopet jag har?

1002 00:54:28,080 --> 00:54:31,160 Alltså vad är dåliga funktioner i det här fallet?

1003 00:54:31,400 --> 00:54:32,940 Och sen så börjar jag titta efter det.

1004 00:54:33,200 --> 00:54:37,800 Och sen så försöker jag bara förstå funktionen. Okej, vad gör den här funktionen? Den gör det här.

1005 00:54:38,060 --> 00:54:38,580 Är den saniterad?

1006 00:54:38,880 --> 00:54:40,680 Har man inget verktygsstöd så är det ju

1007 00:54:41,180 --> 00:54:44,760 två saker man försöker hitta. Det ena är ju hur data kommer in

1008 00:54:45,020 --> 00:54:49,640 i koden. Vad är sources?

1009 00:54:49,880 --> 00:54:54,760 Och sen så är du också intresserad, vad är drains? Vad är funktioner som

1010 00:54:55,780 --> 00:55:00,120 exekverar och börjar, skulle kunna bli ondska om de fick smuts i sig.

1011 00:55:00,380 --> 00:55:01,920 Vad kallar du dynamiskt content som får skita hem?

1012 00:55:02,180 --> 00:55:03,200 Vad har du för synks?

1013 00:55:03,460 --> 00:55:04,480 Ja, synk calls.

1014 00:55:04,740 --> 00:55:08,320 Leta eval, leta sql-executor.

1015 00:55:08,880 --> 00:55:13,740 Det finns ju en massa statiska kodanalysverktyg för det där beroende på vilket språk.

1016 00:55:14,000 --> 00:55:16,560 För PoP exempelvis så finns ju RIPs.

1017 00:55:17,080 --> 00:55:23,980 Både i en gammal version som är gratis. Den har bara stöd upp till PoP 4 tror jag.

1018 00:55:24,500 --> 00:55:29,620 Och sen så finns ju den nya versionen som har

1019 00:55:29,880 --> 00:55:33,960 super allaflashiga grejer man kan tänka sig att vilja ha. Den är ganska bra och ganska dyr.

1020 00:55:34,740 --> 00:55:35,240 Well.

1021 00:55:35,760 --> 00:55:36,780 Så får man väl ge det.

1022 00:55:37,560 --> 00:55:38,580 På C så är det ju…

1023 00:55:38,880 --> 00:55:40,920 Så ScanBuild har jag haft

1024 00:55:41,700 --> 00:55:44,000 blandade erfarenheter kan man säga. Den har funkat

1025 00:55:44,260 --> 00:55:45,800 superbra på många källkodfiler.

1026 00:55:46,040 --> 00:55:50,140 Men ScanBuild är väl också å andra sidan så bra som att du konfigurerar den att vara?

1027 00:55:50,660 --> 00:55:52,700 Ja, den är väldigt konfigurad.

1028 00:55:52,960 --> 00:55:55,260 Vad är det GrammarTech? Är det de som gör ScanBuild?

1029 00:55:56,540 --> 00:55:59,620 Nej, vad är det GrammarTech? GrammarTech har också någon sån där C…

1030 00:55:59,880 --> 00:56:01,400 Codesonar. Codesonar heter det.

1031 00:56:01,920 --> 00:56:04,480 Men många av de där är ju…

1032 00:56:05,240 --> 00:56:08,580 Jag satt ju lite och kollade på de kommersiella alternativen.

1033 00:56:08,880 --> 00:56:10,420 Vi har en utvärdering och

1034 00:56:10,920 --> 00:56:12,980 de har ju ett guje som är trevligt.

1035 00:56:13,480 --> 00:56:14,520 Sen

1036 00:56:15,540 --> 00:56:21,420 kanske de inte är så hysteriskt mycket bättre än gratisalternativen till vad de faktiskt gör.

1037 00:56:21,680 --> 00:56:24,760 Så att ScanBuild är

1038 00:56:25,520 --> 00:56:31,160 ganska bra om den som tänker jobba med det liksom

1039 00:56:31,660 --> 00:56:35,000 metodiskt och inte behöver bästa gujet och inte vill kunna…

1040 00:56:35,760 --> 00:56:38,580 Ja, inte vill ha några avancerade features och bara vill kolla på den.

1041 00:56:38,880 --> 00:56:40,160 Men sen statisk kodanalys…

1042 00:56:40,420 --> 00:56:44,260 Men sen statisk kodanalys på ett stort C-bygge, det är ju…

1043 00:56:45,280 --> 00:56:49,120 Det är ju för fan som att hoppa i glas för fan. Det kommer ju skrika överallt.

1044 00:56:49,380 --> 00:56:50,400 Det kommer ju göra ont.

1045 00:56:50,920 --> 00:56:52,200 Ja, men…

1046 00:56:52,440 --> 00:56:55,260 Vad fan, ärligt talat. Jo, men det kan vi väl ändå säga.

1047 00:56:56,040 --> 00:56:58,080 Det kommer ju vara massa exceptions överallt.

1048 00:56:58,340 --> 00:56:58,840 Eller?

1049 00:56:59,100 --> 00:57:00,120 Jo, eh…

1050 00:57:00,380 --> 00:57:01,660 Du hoppar ju smart in…

1051 00:57:01,920 --> 00:57:03,460 Nej, men…

1052 00:57:03,720 --> 00:57:04,220 Ja, inte alls.

1053 00:57:04,480 --> 00:57:06,520 Men i ett stort kodprojekt så…

1054 00:57:06,780 --> 00:57:07,800 Rätta mig om jag har fel.

1055 00:57:08,060 --> 00:57:08,580 Nej, men…

1056 00:57:08,880 --> 00:57:10,920 Jag hoppar på det jag själv har gjort och det blir liksom…

1057 00:57:11,440 --> 00:57:12,720 Nej, men alltså du…

1058 00:57:12,980 --> 00:57:14,000 Jag skulle säga att du…

1059 00:57:14,260 --> 00:57:17,080 I vissa fall har du ju effekten att du hittar…

1060 00:57:18,360 --> 00:57:18,860 Alltså…

1061 00:57:19,880 --> 00:57:21,680 Där det finns specifika svårbarheter.

1062 00:57:23,480 --> 00:57:25,000 Men ändå ganska mycket false positives.

1063 00:57:25,780 --> 00:57:27,060 Eller, eller, eller…

1064 00:57:27,320 --> 00:57:32,440 I Skåneville har jag upplevt att det är några fåtal…

1065 00:57:32,680 --> 00:57:33,960 Scanners som…

1066 00:57:34,220 --> 00:57:36,780 Scannerregler som generar false positives.

1067 00:57:37,300 --> 00:57:38,320 Men ofta så

1068 00:57:38,320 --> 00:57:40,360 är ju en av de stora vinsterna

1069 00:57:40,880 --> 00:57:44,200 är ju att man identifierar var det ligger kåk med dålig kod.

1070 00:57:44,460 --> 00:57:46,260 Ja, det kan ju det här motköpa.

1071 00:57:46,520 --> 00:57:47,020 Såhär…

1072 00:57:47,800 --> 00:57:53,420 Det här måste kastas ut liksom eller det här borde verkligen skrivas om. Men jag brukar ju ofta vara…

1073 00:57:53,940 --> 00:57:54,440 Och då…

1074 00:57:55,480 --> 00:58:00,840 Så inte alltid att du liksom får pang på röda betan att här ser jag någonting exploaterbart, men…

1075 00:58:01,360 --> 00:58:02,640 På många projekt och framförallt…

1076 00:58:02,900 --> 00:58:04,940 Kalle ska inte bygga mer på det här objektet.

1077 00:58:05,960 --> 00:58:07,000 Nej…

1078 00:58:08,320 --> 00:58:14,460 I vissa fall har man väl kunnat identifiera…

1079 00:58:14,980 --> 00:58:16,520 Typ Kalle eller…

1080 00:58:16,760 --> 00:58:18,820 Eller att säga att Kalle inte är en person då är…

1081 00:58:19,320 --> 00:58:22,920 Fo som i den här kodbasen alltså.

1082 00:58:23,160 --> 00:58:24,960 Du hittar ju ofta var…

1083 00:58:25,220 --> 00:58:28,800 Den här kodbasen som vi fick från en annan dimension som ingen har byggt är dålig.

1084 00:58:29,060 --> 00:58:29,560 Okej.

1085 00:58:29,820 --> 00:58:32,900 Jag har varit med om att man har liksom såhär…

1086 00:58:33,660 --> 00:58:37,500 Jag tror det var Coverti som kördes för en statistisk utvärdering.

1087 00:58:38,320 --> 00:58:43,700 Det fanns en viss kodbas som jag inte gillade där de såhär började konstatera att den här har ju liksom…

1088 00:58:44,460 --> 00:58:52,400 En faktor 20 sämre kodmetrik än en annan kodbas i en kod…

1089 00:58:52,660 --> 00:58:53,160 Såhär de bara…

1090 00:58:53,420 --> 00:58:54,960 I know.

1091 00:58:55,980 --> 00:58:58,040 Men det är bra att ni har ett verktyg som berättar det för mig.

1092 00:58:59,560 --> 00:59:06,740 Även för JavaScript finns ju en del statisk kodanalysverktyg man kan köra för att hitta exempelvis DOMXSS och sådana saker.

1093 00:59:07,500 --> 00:59:08,280 Som hittar ett…

1094 00:59:08,580 --> 00:59:14,980 Du har ett input här någonstans som hamnar i sin kärv borta och 14 funktioner längre ner hamnar det i en IVAL.

1095 00:59:18,560 --> 00:59:23,420 Men det är väl fortfarande lite såhär att man måste fortfarande veta…

1096 00:59:23,940 --> 00:59:29,820 Man måste lite veta sin domän för att det är fortfarande inte så att du kan ta ett verktyg och det är…

1097 00:59:30,600 --> 00:59:34,680 Bra hanterar C-kod och bra hanterar JavaScript liksom.

1098 00:59:34,940 --> 00:59:38,280 Nej men det är väl ändå lite såhär om…

1099 00:59:38,580 --> 00:59:41,900 Om allt du har är en hammare så ser alla problem ut som spikar.

1100 00:59:44,200 --> 00:59:45,240 Så att…

1101 00:59:45,480 --> 00:59:49,840 Och det är väl lätt att man kärar ner sig i ett verktyg och så blir det…

1102 00:59:50,100 --> 00:59:52,660 Det är det verktyget man springer och hämtar i lådan.

1103 00:59:53,160 --> 00:59:53,680 Ja.

1104 00:59:53,940 --> 00:59:55,720 Ja men så kan det också vara.

1105 00:59:55,980 --> 00:59:59,060 Sen bygger man ju… Jag tycker mycket att det blir att man…

1106 01:00:00,080 --> 01:00:07,000 Man har liksom en metodologi. Man har en känsla lite. Man börjar lalla runt lite och så får man se att det här är nog såhär.

1107 01:00:07,000 --> 01:00:09,820 Och så börjar man gräva lite. Och så bara…

1108 01:00:10,580 --> 01:00:12,880 Kanske man hittar något eller så gör man inte det. Men man har oftast…

1109 01:00:13,140 --> 01:00:14,160 Jag får liksom en…

1110 01:00:14,420 --> 01:00:18,260 En känsla lite för vad som borde vara gångbart. Här borde jag lägga tid för att här…

1111 01:00:19,040 --> 01:00:20,320 Borde det vara trasigt.

1112 01:00:20,560 --> 01:00:21,340 Man får försöka…

1113 01:00:21,600 --> 01:00:24,400 Ja men det är det sjätte sinnet som kunden betalar för.

1114 01:00:24,660 --> 01:00:25,680 Ja men lite så.

1115 01:00:25,940 --> 01:00:30,040 Med tiden. Man får också försöka hindra sig själv från att falla i den här fällan.

1116 01:00:30,800 --> 01:00:33,120 Om man har en hammare så ser allting ut som en spik.

1117 01:00:33,360 --> 01:00:36,700 Alltså man får ha lite koll på vad det är man ska använda i vilket läge.

1118 01:00:37,000 --> 01:00:42,380 Det här är ju något vi har snackat ganska mycket om just det här. Att man har jävligt lätt ibland att…

1119 01:00:42,640 --> 01:00:45,440 Alltså det blir lite prestige för sig själv också.

1120 01:00:45,700 --> 01:00:50,560 Alla som håller på med det här har nog ett visst motto. Man tycker att det är ganska roligt med komplex problemlösning.

1121 01:00:51,080 --> 01:00:58,000 Och det gör ju att ibland så kan man ju… Jag kan vara den första som erkänner det. Ni behöver inte hålla med mig runt bordet men man kan ju ibland ha kanske lagt

1122 01:00:58,500 --> 01:01:04,400 för mycket av kundens tid på att pocka någonting som kanske är mer viktigt för en själv än för kunden.

1123 01:01:04,900 --> 01:01:06,180 Och det är ju någonting som

1124 01:01:06,180 --> 01:01:08,480 jag har jobbat jävligt mycket med. Att jag har någon sån här…

1125 01:01:09,000 --> 01:01:10,280 Ja men fan, det här ska gå!

1126 01:01:10,540 --> 01:01:14,120 Det här är alldeles för nära för att det inte ska gå. Så lägger man kanske lite för mycket tid på det. Men

1127 01:01:14,380 --> 01:01:15,900 då gäller det också att ha

1128 01:01:16,160 --> 01:01:19,740 gjort sin rekord ordentligt från början. I alla fall så tycker jag det.

1129 01:01:20,260 --> 01:01:23,840 Att då har jag liksom… Ja men här är min korg med lågt hängande frukt.

1130 01:01:24,360 --> 01:01:25,900 Här har jag av

1131 01:01:26,140 --> 01:01:29,480 10 000 äpplen lagt fram 20 äpplen som jag förmodligen kommer kunna

1132 01:01:29,980 --> 01:01:31,520 liksom göra sönder snabbast.

1133 01:01:32,040 --> 01:01:34,600 Och då gäller det också att man måste täcka de 20 äpplena.

1134 01:01:34,860 --> 01:01:35,620 I vart fall.

1135 01:01:36,180 --> 01:01:38,740 Och det är också viktigt för rapportens skull att man

1136 01:01:39,260 --> 01:01:40,540 är tydlig med vad man har gjort.

1137 01:01:41,300 --> 01:01:43,100 Särskilt det som inte gick bra.

1138 01:01:43,340 --> 01:01:49,500 För det är ju det kunden betalar för. Kunden betalar inte för en jävligt akademisk pock på en exploit. De betalar för coverage.

1139 01:01:49,740 --> 01:01:52,300 Du ska ju ha täckt dina produkter, det du tittar på.

1140 01:01:52,560 --> 01:01:55,640 Har du provat alla de här sakerna?

1141 01:01:57,680 --> 01:02:01,780 Det som är för alla former av sådana här grejer är ju att…

1142 01:02:02,300 --> 01:02:05,880 Lite om kodsnack snackar jag om. När man börjar med

1143 01:02:06,180 --> 01:02:07,720 att laga dålig kod

1144 01:02:08,220 --> 01:02:10,280 så vet du ofta inte

1145 01:02:11,040 --> 01:02:16,680 exakt vad kommer slutresultatet vara och exakt hur mycket kommer det kosta att göra det här.

1146 01:02:17,440 --> 01:02:18,460 Så att

1147 01:02:19,240 --> 01:02:22,300 är man begränsad av budget så kanske man lämnar saker som

1148 01:02:22,820 --> 01:02:23,840 hade varit bra

1149 01:02:24,100 --> 01:02:25,380 att titta närmare på.

1150 01:02:25,900 --> 01:02:26,400 Men

1151 01:02:27,680 --> 01:02:30,760 man vet ju inte riktigt vad som kommer ge

1152 01:02:32,800 --> 01:02:36,140 slutresultat och hur mycket det är värt att kolla på det.

1153 01:02:36,440 --> 01:02:38,220 Och det där är ju också magiskt lite hur

1154 01:02:38,740 --> 01:02:41,040 hur gångbart man tycker att det är.

1155 01:02:41,300 --> 01:02:44,880 Jag är ofta så här, jag skriver jävligt mycket anteckningar när jag jobbar.

1156 01:02:45,140 --> 01:02:49,740 Jag börjar liksom skriva min grekiska, det är typ bara jag som kan avkolla det där ändå.

1157 01:02:50,000 --> 01:02:54,620 Men jag har liksom ett arbetsdokument där jag hela tiden skriver då.

1158 01:02:54,860 --> 01:02:57,680 Ja men så här långt kom jag här.

1159 01:02:57,940 --> 01:02:59,740 Det här kommer jag tillbaka till sen.

1160 01:03:00,240 --> 01:03:01,260 Och då lämnar jag…

1161 01:03:01,520 --> 01:03:04,080 Säg att jag sitter och jobbar på en parameter som typ…

1162 01:03:04,340 --> 01:03:06,140 Det är nära men det är inte där.

1163 01:03:06,940 --> 01:03:09,760 Det är väldigt bra att föra anteckningar.

1164 01:03:10,020 --> 01:03:12,320 Alltså det låter löjligt men…

1165 01:03:12,580 --> 01:03:13,860 Jo men också anteckningar som är

1166 01:03:14,120 --> 01:03:15,140 som kan

1167 01:03:16,420 --> 01:03:20,260 ögonblicksmässigt ta dig tillbaka till exakt den tidpunkten där du lämnade det.

1168 01:03:20,520 --> 01:03:22,820 Inte bara skriva massa skit utan

1169 01:03:23,080 --> 01:03:23,840 håll det konkret.

1170 01:03:24,100 --> 01:03:32,040 Om vi nu ska prata om verktyg som faktiskt är viktiga så är ju det här ett av de absolut viktigaste verktygen och det är ju att föra bra anteckningar.

1171 01:03:32,300 --> 01:03:34,600 Framför allt när man

1172 01:03:35,360 --> 01:03:36,140 när man sen gör förändringar

1173 01:03:36,440 --> 01:03:37,460 och får en sik på någonting.

1174 01:03:37,720 --> 01:03:39,760 Men där blir det ju en helt annan båda part.

1175 01:03:40,020 --> 01:03:41,040 För där är det ju så här.

1176 01:03:41,300 --> 01:03:44,120 Emellanåt så dyker man ner i ett kaninhål.

1177 01:03:44,380 --> 01:03:48,980 Och om du då har sett någonting som att det där borde jag titta på och så kan man liksom notera

1178 01:03:49,240 --> 01:03:50,000 och skriva ner det.

1179 01:03:50,260 --> 01:03:52,300 Men här är någonting som är intressantare.

1180 01:03:52,560 --> 01:03:55,640 Och när man följer den där kaninen ner i kaninhålet

1181 01:03:56,140 --> 01:03:57,940 och det kan ju gå

1182 01:03:58,460 --> 01:04:03,320 lång tid liksom man rotar och rotar och rotar och kanske hitta någonting kanske inte hitta någonting.

1183 01:04:03,580 --> 01:04:05,880 Sen att hitta tillbaks till det där lilla biten.

1184 01:04:06,180 --> 01:04:09,500 Som kanske i själva verket var nyckeln till hela pusslet.

1185 01:04:09,760 --> 01:04:14,120 Om du inte har fört bra anteckningar så hittar du inte tillbaka till den där.

1186 01:04:14,620 --> 01:04:17,700 Eller att man måste multitaska, att man måste göra någonting annat.

1187 01:04:17,960 --> 01:04:21,280 Jag tror det finns en annan fördel med anteckningar.

1188 01:04:21,540 --> 01:04:23,840 Alltså det var en variant på vad du redan har sagt men

1189 01:04:25,120 --> 01:04:26,400 så att du jobbar

1190 01:04:27,180 --> 01:04:28,960 du jobbar typ sex timmar

1191 01:04:29,220 --> 01:04:30,500 med

1192 01:04:30,760 --> 01:04:33,820 med att liksom leta i systemet.

1193 01:04:34,860 --> 01:04:35,620 Och sen

1194 01:04:36,180 --> 01:04:38,220 kommer du in på någonting

1195 01:04:38,480 --> 01:04:41,300 och börjar såhär, du hittar ett litet kaninhål.

1196 01:04:41,560 --> 01:04:44,620 Och så kanske du inte når hela vägen fram.

1197 01:04:44,880 --> 01:04:47,960 Och du kanske aldrig kommer hitta hela vägen fram och så kanske du är

1198 01:04:48,460 --> 01:04:53,840 det man alldeles såhär ledsen för att jag har jobbat jättemycket, jag har jobbat i tio timmar igår och jag fick fan ingen

1199 01:04:54,100 --> 01:04:57,420 liksom där allting i konstskogen var bara bortslösa tid.

1200 01:04:57,940 --> 01:05:01,020 Och så går man tillbaks till sina anteckningar så finns det en massa sådana här

1201 01:05:01,520 --> 01:05:06,140 bra frågor som man har tänkt igenom. Man har kommit delsteg på olika grejer.

1202 01:05:06,440 --> 01:05:06,940 Och så

1203 01:05:07,200 --> 01:05:13,340 och man har också kommit på såhär, ja men de här olika små ledtrådarna har jag fått till att det finns ett kvalitetsproblem eller

1204 01:05:13,600 --> 01:05:15,140 början på ett säkerhetshåll.

1205 01:05:15,400 --> 01:05:16,940 Och alla de där grejerna som

1206 01:05:18,220 --> 01:05:19,240 om man bara vaknar upp

1207 01:05:19,500 --> 01:05:21,020 demoraliserad dagen efter

1208 01:05:21,800 --> 01:05:24,100 hade bara varit liksom, du hade inte minst

1209 01:05:24,360 --> 01:05:25,900 allt bra du gjorde dagen innan.

1210 01:05:26,400 --> 01:05:28,200 Men anteckningarna kan vara

1211 01:05:28,460 --> 01:05:32,800 kan vara supervärdefulla för, nu skriver Slutgiltiga rapporten då.

1212 01:05:33,060 --> 01:05:34,340 Ja dels det och sen att

1213 01:05:34,600 --> 01:05:36,140 komma igång med något produktivt

1214 01:05:36,440 --> 01:05:41,560 dagen efter ett eventuellt misslyckande eller någonting som man känner att man inte riktigt gjorde hela vägen.

1215 01:05:42,320 --> 01:05:46,420 Absolut. Ska vi slutligen prata lite om fysik, vi var inne på det snabbt.

1216 01:05:46,680 --> 01:05:52,820 Vi har skrivit post exploitation där också. Det där blir så jäkla specifikt, jag har funderat lite på det nu under tiden vi har pratat.

1217 01:05:53,340 --> 01:05:59,220 Och post det handlar egentligen om att etablera ett vidare fotfäste och det är såhär, det beror ju på.

1218 01:05:59,480 --> 01:06:04,080 Många engagemang så släpper man ju när man har liksom

1219 01:06:04,600 --> 01:06:05,360 pockat någonting.

1220 01:06:06,180 --> 01:06:08,480 Men nu om vi, vänta nu om vi tar det långt undan.

1221 01:06:08,740 --> 01:06:09,760 Post exploitering.

1222 01:06:10,020 --> 01:06:10,780 Exploitering.

1223 01:06:11,560 --> 01:06:15,900 Vi har fått ett initial, vi har ett fotfäste på insidan av ett nätverk.

1224 01:06:16,160 --> 01:06:17,440 Post exploitering, ta det vidare.

1225 01:06:17,700 --> 01:06:18,460 Ja precis.

1226 01:06:18,720 --> 01:06:20,260 Hur ska vi liksom

1227 01:06:20,520 --> 01:06:21,800 dels etablera

1228 01:06:24,100 --> 01:06:25,380 Hur säger man det på svenska?

1229 01:06:25,900 --> 01:06:26,400 Persistens.

1230 01:06:26,660 --> 01:06:27,940 Ett stabilt fotfäste.

1231 01:06:28,200 --> 01:06:30,240 Ja ett stabilt fotfäste som vi kan.

1232 01:06:30,500 --> 01:06:32,540 Persisterande access.

1233 01:06:32,800 --> 01:06:35,360 Långvarig närvaro i systemet.

1234 01:06:35,620 --> 01:06:36,140 Persisterande.

1235 01:06:36,440 --> 01:06:38,740 Sistband där borta.

1236 01:06:39,000 --> 01:06:43,340 Sen så ska du då kanske pivota till andra system och ta det ut.

1237 01:06:43,600 --> 01:06:46,940 Det är mycket swinglish.

1238 01:06:47,180 --> 01:06:50,780 Men du ska ta dig vidare till andra system typiskt.

1239 01:06:51,280 --> 01:06:53,080 Och det kan ju vara då att om du hackat en perimeter.

1240 01:06:53,340 --> 01:06:54,360 Horisontell traversering.

1241 01:06:54,620 --> 01:07:02,040 Så har du kanske dubbla interface på den maskinen du har tagit över. Du har alltså ett publikt interface och kanske ett internt interface.

1242 01:07:02,300 --> 01:07:05,620 Då har de förmodligen olika zonindelning i brandväggen så då skulle du kunna hoppa på den.

1243 01:07:05,620 --> 01:07:08,440 Så skulle du kunna hoppa från ett interface vidare in i andra delar av nätverket.

1244 01:07:08,700 --> 01:07:11,760 Det är så kontextberoende.

1245 01:07:12,020 --> 01:07:15,860 Du kanske hamnar i en Windows-miljö och kan göra grejer med AD eller något sånt.

1246 01:07:16,120 --> 01:07:18,680 Ja och köra någon form av proxy för att fånga.

1247 01:07:18,940 --> 01:07:21,240 Det här får vi ta i ett annat avsnitt känner jag.

1248 01:07:21,500 --> 01:07:25,080 Man kan gruppera upp det där helt efter målsystem egentligen.

1249 01:07:25,340 --> 01:07:26,620 Så vi hoppar in lite på forensik.

1250 01:07:26,860 --> 01:07:29,680 Jag tror det för vi är redan på ett ganska långt avsnitt här.

1251 01:07:29,940 --> 01:07:32,760 Men man kan ju också säga att postexploateringen kan vara ett typfall på

1252 01:07:33,020 --> 01:07:35,320 att man skulle vara ett avancerat APT.

1253 01:07:35,620 --> 01:07:38,940 Vi är the criminal guys.

1254 01:07:39,460 --> 01:07:43,040 När webnisten har lämnat över ett käll

1255 01:07:43,300 --> 01:07:49,700 då är det ju bara in med de jävlarna som är bra på att etablera närvaro.

1256 01:07:49,960 --> 01:07:56,360 Om du verkligen är över team av evil här så är det andra henchmen som ska in

1257 01:07:56,620 --> 01:07:58,400 än det henchmen som tog sig in.

1258 01:07:58,660 --> 01:08:05,580 Det har man ju gjort ibland, inte just i ett evil-kontext men som är mer i red team-övningar.

1259 01:08:05,880 --> 01:08:12,280 Ja och det är väl lite där också som man ska nyttja teamet.

1260 01:08:12,540 --> 01:08:23,540 Eller konstatera att vi har hittat något här som vi inte vet riktigt vad vi ska göra med.

1261 01:08:23,800 --> 01:08:26,860 Men någon annan kanske skulle kunna veta vad de skulle göra med det.

1262 01:08:27,120 --> 01:08:30,200 Då säljer man det på den svarta marknaden för dyra pengar.

1263 01:08:30,460 --> 01:08:34,300 Det är ju lite likt de här CTF-gängen som är duktiga.

1264 01:08:34,540 --> 01:08:35,320 De måste ju vara väldigt bra.

1265 01:08:35,620 --> 01:08:39,460 De är ju bra på att dela upp arbete och göra handbovar till varandra.

1266 01:08:39,720 --> 01:08:44,840 Annars hade man nog inte blivit så jävla grym på sjuka CTF-gängar.

1267 01:08:46,880 --> 01:08:51,500 Så får en psyk då lite snabbt. Vad finns det för verktyg som man kan använda sig av?

1268 01:08:52,000 --> 01:09:01,980 Ja jag skulle säga att de kanske viktigaste är egentligen standardverktygen i kället.

1269 01:09:02,240 --> 01:09:04,800 Att använda grepp, sedd och åk.

1270 01:09:05,620 --> 01:09:08,700 För att parsa loggar.

1271 01:09:10,480 --> 01:09:15,600 Självklart beror det på vad systemet har för typ av loggning.

1272 01:09:15,860 --> 01:09:23,280 Och vad man har att jobba med. Om det är en diskimage eller om det är nätverksbaserad detekt.

1273 01:09:23,540 --> 01:09:24,820 Om det är brandvägsloggar.

1274 01:09:25,080 --> 01:09:35,320 Men det jag brukar säga som är det kanske viktigaste är just att ha någonting för att föra strukturerade anteckningar i.

1275 01:09:35,620 --> 01:09:38,700 Och kunna korrelera saker och ting.

1276 01:09:38,940 --> 01:09:40,740 Att man hittar en tidstämpel här.

1277 01:09:41,000 --> 01:09:50,980 Det finns fantastiska open source-verktyg med log to timeline.

1278 01:09:51,240 --> 01:09:53,800 Man bygger timelines helt enkelt.

1279 01:09:54,060 --> 01:09:58,140 Det är också för att kunna föra riktig bevisning i ett senare potentiellt läge.

1280 01:09:58,400 --> 01:10:03,260 Ja och kunna bygga ett händelseförlopp.

1281 01:10:03,520 --> 01:10:04,800 Alltså att kunna…

1282 01:10:04,800 --> 01:10:09,160 Följa vad en angripare har gjort i ett system.

1283 01:10:09,400 --> 01:10:17,600 Och då kan det vara även om den som har kommit in har varit väldigt duktig på det de gör och sopat sina spår.

1284 01:10:17,860 --> 01:10:24,000 Så kan det finnas artefakter som ändå ger en antydan om vad som kan ha hänt.

1285 01:10:24,260 --> 01:10:32,200 Och där handlar det ofta om att bygga en indicierkedja.

1286 01:10:32,440 --> 01:10:34,500 Men en forensiker blir inte läskig.

1287 01:10:34,800 --> 01:10:38,120 Om datorerna i ett nätverk.

1288 01:10:38,640 --> 01:10:40,680 Alla NTP synkade mot samma klockor.

1289 01:10:40,940 --> 01:10:42,740 Det är väldigt trevligt om de är det.

1290 01:10:43,000 --> 01:10:45,300 Då slipper man korrigera för fel.

1291 01:10:45,560 --> 01:10:48,880 Men det är ju det första man tittar på.

1292 01:10:49,400 --> 01:10:54,520 Vad är systemtiden på det här systemet och vad är klockan på riktigt?

1293 01:10:57,580 --> 01:11:01,940 Då är det väldigt trevligt om alla system pratar samma tid.

1294 01:11:02,200 --> 01:11:04,500 Ännu bättre om de loggar till en och samma logserver.

1295 01:11:04,800 --> 01:11:07,880 Men det är inte alltid det är så.

1296 01:11:08,120 --> 01:11:13,240 Vad tycker du om processen som sommarjobbaren ställer om klockan regelbundet?

1297 01:11:13,500 --> 01:11:15,800 Nysande.

1298 01:11:18,360 --> 01:11:22,980 Det skulle vi också säkert kunna prata ett helt avsnitt om.

1299 01:11:23,240 --> 01:11:26,300 Nu börjar vi bli seger.

1300 01:11:26,560 --> 01:11:31,160 Forensik är ju också väldigt brett. Det beror ju på om det är livssystem, om det är statiska system.

1301 01:11:31,420 --> 01:11:34,760 Är det imager? Är det minne?

1302 01:11:35,020 --> 01:11:37,580 Är det flyktigt? Är det inte flyktigt?

1303 01:11:38,080 --> 01:11:40,400 Är det en incident som pågår?

1304 01:11:42,180 --> 01:11:44,740 Men jag hoppas att ni fick med er någonting.

1305 01:11:45,520 --> 01:11:47,560 Anträckningsblocket är det viktigaste verktyget.

1306 01:11:48,320 --> 01:11:50,380 Eller så kör man digitalt.

1307 01:11:50,640 --> 01:11:53,200 Grepp-RI är alltid trevligt.

1308 01:11:53,440 --> 01:11:54,480 R-F.

1309 01:11:54,720 --> 01:11:57,040 R-F minus R-F-stjärna.

1310 01:11:57,280 --> 01:12:00,360 Det kör Johan. Det blir mindre spår kvar då.

1311 01:12:00,620 --> 01:12:02,160 Super effektivt.

1312 01:12:02,400 --> 01:12:04,720 Om du någon gång funderar på vad du kan göra.

1313 01:12:05,020 --> 01:12:07,320 För att förenkla forensikers arbete så är det

1314 01:12:07,840 --> 01:12:10,400 att formatera om datorn som har blivit inflykterad.

1315 01:12:10,640 --> 01:12:12,960 Det underlättar all form av utredning som kommer efteråt.

1316 01:12:13,200 --> 01:12:15,260 Precis. Det går jättesnabbt att göra det.

1317 01:12:17,040 --> 01:12:17,560 All right.

1318 01:12:17,820 --> 01:12:21,400 Jag tror att vi tar och avrundar därför idag.

1319 01:12:21,920 --> 01:12:25,760 Jag som pratade hette Johan Lidamöller men ni hade jag och Jesper Larsson.

1320 01:12:26,000 --> 01:12:26,780 Yes, sir!

1321 01:12:27,040 --> 01:12:27,540 Rickard Botfors.

1322 01:12:27,800 --> 01:12:28,560 Incyberspace.

1323 01:12:28,820 --> 01:12:29,340 Och Peter Maxson.

1324 01:12:29,600 --> 01:12:31,120 Det är gött med 2018!

1325 01:12:31,380 --> 01:12:31,900 Japp!

1326 01:12:32,660 --> 01:12:33,180 Hej!

1327 01:12:33,440 --> 01:12:33,940 Hej!

1328 01:12:34,200 --> 01:12:34,720 Hej, hej!

1329 01:12:35,020 --> 01:12:35,520 Hej, hej!

1330 01:12:35,780 --> 01:12:36,280 Hej, hej!